May 1, 2025, Thursday, 120

KADD 2022 Laboratorium 1 EN

From Łukasz Graczykowski

(Difference between revisions)
Jump to: navigation, search
(Zadanie)
Line 10: Line 10:
* documentation of the laboratory version (5.32.00): [https://root.cern.ch/root/html532/ https://root.cern.ch/root/html532/] last version with the old C++ interpreter
* documentation of the laboratory version (5.32.00): [https://root.cern.ch/root/html532/ https://root.cern.ch/root/html532/] last version with the old C++ interpreter
-
== Zadanie ==
+
== Exercise ==
-
1. Należy napisać makro, które:
+
1. Write a macro, which:
-
* tworzy obiekt <code>fun1</code> typu <code>TF1</code> reprezentujący funkcję <code>sin(x)</code> (patrz klasa <code>TMath</code>)
+
* creates an object <code>fun1</code> of type <code>TF1</code> representing a <code>sin(x)</code> function (see class <code>TMath</code>)
-
* tworzy obiekt <code>fun2</code> typu <code>TF1</code> reprezentujący funkcję <code>cos(x)</code>
+
* creates an object <code>fun2</code> of type <code>TF1</code> representing a <code>cos(x)</code> function
-
* tworzy okno z 4 panelami (rozkład paneli 2x2) - patrz klasa <code>TCanvas</code> i metoda <code>Divide</code>
+
* creates a window with 4 panels (panel distribution 2x2) - see class <code>TCanvas</code> and method <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
+
* draws the  <code>fun1</code> object on panel 1, <code>fun2</code> on panel 2, and two functions simultaneously on panel 3
-
* zmieni kolor linii funkcji <code>fun2</code> na niebieski - patrz metoda <code>SetLineColor</code> i klasa <code>TColor</code>
+
* changes the color of the line of function <code>fun2</code> to blue - see method <code>SetLineColor</code> and class <code>TColor</code>
<br>
<br>
-
2. Wyobraźmy sobie, że rzucamy niesymetryczną sześcienną kostką do gry. Wyniki podsumowuje poniższa tabelka:
+
2. Let's imagine we throw a dice that is asymmetric. The table below summarizes the results:
{| class="wikitable" border="1"
{| class="wikitable" border="1"
|-
|-
-
! Ilość oczek
+
! Number of pips
| 1   
| 1   
| 2   
| 2   
Line 29: Line 29:
| 6   
| 6   
|-
|-
-
! Ilość rzutów
+
! Number of throws
| 2
| 2
| 1
| 1
Line 37: Line 37:
| 12
| 12
|}
|}
-
Modyfikujemy dalej makro:
+
We modify further the macro:
-
* 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
+
* let's create a histogram (see class <code>TH1D</code>) by filling each bin (which corresponds to each dice facet) with values from the table (number of throws) - the histogram should be plotted on panel 4
-
* należy stworzyć wykres - graf (patrz klasa <code>TGraph</code>) zgodnie z wartościami z tabelki.  
+
* create a plot, called graph (see class <code>TGraph</code>) according to values from the table.  
-
* zmienić styl punktów grafu na kółko (patrz metoda <code>SetMarkerStyle</code> oraz klasa <code>TAttMarker</code>)
+
* change the style of graph points (see method <code>SetMarkerStyle</code> and class <code>TAttMarker</code>)
-
* narysować graf w oddzielnym oknie
+
* draw the graph in a separate window
== Uwagi ==
== Uwagi ==

Revision as of 12:40, 28 February 2022

Contents

Documentation

Documentation of the ROOT environment:

Exercise

1. Write a macro, which:

  • creates an object fun1 of type TF1 representing a sin(x) function (see class TMath)
  • creates an object fun2 of type TF1 representing a cos(x) function
  • creates a window with 4 panels (panel distribution 2x2) - see class TCanvas and method Divide
  • draws the fun1 object on panel 1, fun2 on panel 2, and two functions simultaneously on panel 3
  • changes the color of the line of function fun2 to blue - see method SetLineColor and class TColor


2. Let's imagine we throw a dice that is asymmetric. The table below summarizes the results:

Number of pips 1 2 3 4 5 6
Number of throws 2 1 5 4 10 12

We modify further the macro:

  • let's create a histogram (see class TH1D) by filling each bin (which corresponds to each dice facet) with values from the table (number of throws) - the histogram should be plotted on panel 4
  • create a plot, called graph (see class TGraph) according to values from the table.
  • change the style of graph points (see method SetMarkerStyle and class TAttMarker)
  • draw the graph in a separate window

Uwagi

  • Uwaga! Aby środowisko ROOT można było uruchomić na własnym koncie użytkownika w laboratorium, należy w pliku $HOME/.bashrc dopisać następujące linijki (jeśli nie były dodane na zajęciach z PTI):
 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 makra, 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
  • przykład 1:
{
    double x = 5;
    cout<<x<<endl;
}
  • wywołanie makra: uruchamiamy środowisko (komenda root), wpisujemy .x macro.C
  • makro może zawierać również funkcje, przykład 2:
int macro()
{
    double x = 5;
    cout<<x<<endl;
    return 1;
}
  • nazwa makra musi być taka sama jak nazwa funkcji w makrze (by można było je uruchomić komendą .x macro.C)
  • 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 main w standardowym C++)

Wynik

Wykresy:

  • okno 1

Lab1 1.png

  • okno 2

1 2.png