June 17, 2025, Tuesday, 167

KADD 2016 Zadanie 1

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Uwagi)
 
(13 intermediate revisions not shown)
Line 1: Line 1:
 +
<!--
 +
{| align="right"
{| align="right"
| __TOC__
| __TOC__
Line 6: Line 8:
Dokumentacja środowiska ROOT:
Dokumentacja środowiska ROOT:
* strona główna: [https://root.cern.ch/ https://root.cern.ch/]
* strona główna: [https://root.cern.ch/ https://root.cern.ch/]
-
* wersja rozwojowa (master): [https://root.cern.ch/doc/master/ https://root.cern.ch/doc/master/]
+
* dokumentacja wersji rozwojowej (master): [https://root.cern.ch/doc/master/ https://root.cern.ch/doc/master/]
-
* wersja stabilna (6.0.4): [https://root.cern.ch/root/html604/ https://root.cern.ch/root/html604/] - może być wygodniejsza w użyciu
+
* dokumentacja ostatniej wersji stabilnej (6.0.4): [https://root.cern.ch/root/html604/ https://root.cern.ch/root/html604/]
 +
* dokumentacja wersji zainstalowanej w laboratorium (5.32.00): [https://root.cern.ch/root/html532/ https://root.cern.ch/root/html532/]
== Zadanie ==
== Zadanie ==
1. Należy napisać makro, które:
1. Należy napisać makro, które:
-
* tworzy obiekt <code>fun1</code> typu <code>TF1</code> reprezentujący funkcję <code>sin(x)</code>
+
* tworzy obiekt <code>fun1</code> typu <code>TF1</code> reprezentujący funkcję <code>sin(x)</code> (patrz klasa <code>TMath</code>)
* tworzy obiekt <code>fun2</code> typu <code>TF1</code> reprezentujący funkcję <code>cos(x)</code>
* tworzy obiekt <code>fun2</code> typu <code>TF1</code> reprezentujący funkcję <code>cos(x)</code>
-
* tworzy okno z 4 panelami (rozkład 2x2) - patrz klasa <code>TCanvas</code> i metoda <code>Divide</code>
+
* tworzy okno z 4 panelami (rozkład paneli 2x2) - patrz klasa <code>TCanvas</code> i metoda <code>Divide</code>
* rysuje obiekt <code>fun1</code> na 1 panelu, <code>fun2</code> na 2 panelu, oraz obie funkcje jednocześnie na 3 panelu
* rysuje obiekt <code>fun1</code> na 1 panelu, <code>fun2</code> na 2 panelu, oraz obie funkcje jednocześnie na 3 panelu
* zmieni kolor linii funkcji <code>fun2</code> na niebieski - patrz metoda <code>SetLineColor</code> i klasa <code>TColor</code>
* zmieni kolor linii funkcji <code>fun2</code> na niebieski - patrz metoda <code>SetLineColor</code> i klasa <code>TColor</code>
Line 37: Line 40:
|}
|}
Modyfikujemy dalej makro:
Modyfikujemy dalej makro:
-
* tworzymy histogram (patrz klasa <code>TH1D</code> wypełniając kolejne biny (ilość oczek) wartościami z tabelki (ilość rzutów) - histogram należy narysować na panelu 4
+
* tworzymy histogram (patrz klasa <code>TH1D</code>) wypełniając kolejne biny (odpowiadające kolejnym ilościom oczek) wartościami z tabelki (ilość rzutów) - histogram należy narysować na panelu 4
* należy stworzyć wykres - graf (patrz klasa <code>TGraph</code>) zgodnie z wartościami z tabelki.  
* należy stworzyć wykres - graf (patrz klasa <code>TGraph</code>) zgodnie z wartościami z tabelki.  
* zmienić styl punktów grafu na kółko (patrz metoda <code>SetMarkerStyle</code> oraz klasa <code>TAttMarker</code>)
* zmienić styl punktów grafu na kółko (patrz metoda <code>SetMarkerStyle</code> oraz klasa <code>TAttMarker</code>)
Line 43: Line 46:
== Uwagi ==
== Uwagi ==
-
* w środowisku ROOT piszemy *makra*, które mają rozszerzenie .c, .C, .cpp, lub .cxx
+
* <b>Uwaga!</b> Aby środowisko ROOT można było uruchomić na własnym koncie użytkownika w laboratorium, należy w pliku <code>$HOME/.bashrc</code> dopisać następujące linijki (jeśli nie były dodane na zajęciach z PTI):
-
* makro zawiera w sobie kod w języku C++ interpretowany linijka po linijce, zawarty między nawiasami klamrowymi
+
  export ROOTSYS=/opt/root
 +
  export PATH=$PATH:$ROOTSYS/bin
 +
  export LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib
 +
* środowisko ROOT jest zainstalowane lokalnie na każdym komputerze - nie jest dostępne na serwerze
 +
* w środowisku ROOT piszemy <b>makra</b>, które mają rozszerzenie .c, .C, .cpp, lub .cxx
 +
* makro zawiera w sobie kod w języku C++ interpretowany linijka po linijce
* w zasadzie nie musimy załączać żadnych bibliotek  
* w zasadzie nie musimy załączać żadnych bibliotek  
* przykład 1:
* przykład 1:
Line 52: Line 60:
  }
  }
* wywołanie makra: uruchamiamy środowisko (komenda <code>root</code>), wpisujemy <code>.x macro.C</code>
* wywołanie makra: uruchamiamy środowisko (komenda <code>root</code>), wpisujemy <code>.x macro.C</code>
-
* makro może być napisane również jako *funkcja*, przykład 2:
+
* makro może zawierać również <b>funkcje</b>, przykład 2:
  int macro()
  int macro()
  {
  {
Line 60: Line 68:
  }
  }
* nazwa makra musi być taka sama jak nazwa funkcji w makrze (by można było je uruchomić komendą <code>.x macro.C</code>)
* nazwa makra musi być taka sama jak nazwa funkcji w makrze (by można było je uruchomić komendą <code>.x macro.C</code>)
 +
* w makrach może być więcej funkcji - przy standardowym uruchomieniu wywołana zawsze będzie ta funkcja, której nazwa zgadza się z nazwą makra (odpowiednik funkcji <code>main</code> w standardowym C++)
== Wynik ==
== Wynik ==
Line 67: Line 76:
* okno 2
* okno 2
[[File:1_2.png]]
[[File:1_2.png]]
 +
-->

Latest revision as of 15:17, 24 February 2017