ROOT Tutorial. ROOT Webpage ROOT User’s guide .

29
ROOT Tutorial

Transcript of ROOT Tutorial. ROOT Webpage ROOT User’s guide .

Page 1: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

ROOT Tutorial

Page 2: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

ROOT Webpage

http://root.cern.ch

ROOT User’s guide

http://root.cern.ch/drupal/content/users-guide

Page 3: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Installazione: Pro version 5.32/00Windows 7/Vista/XP/NT/2000 supported

http://root.cern.ch/drupal/content/production-version-532

Page 4: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Windows 7/Vista/XP/NT/2000

Page 6: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .
Page 7: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .
Page 8: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .
Page 9: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .
Page 10: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Linux

- Precompiled Binaries: Scegliere il file in base al proprio sistema operativo

- Source: più veloce da scaricare, ma da compilare e linkare

Guida per l’installazione:

http://root.cern.ch/download/doc/28InstallandBuild.pdf

Page 11: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Binaries precompilati

1) Download da http://root.cern.ch/drupal/content/production-version-532.

Page 12: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

2) Unzip, untar and install

$ gunzip root_v5.32.01.Linux-slc5-gcc4.3.tar.gz$ tar xvf root_v5.32.01.Linux-slc5-gcc4.3.tar

Verrà creata una cartella root

3) Variabili d’ambiente (leggi il file README/README)

Page 13: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Source

1) Download da http://root.cern.ch/drupal/content/production-version-532.

Page 14: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

2) Untar and install

$ tar zxvf root_v5.32.01.source.tar.gz

Verrà creata una cartella root

$ cd root$ ./configure --help$ ./configure [<arch>]$ (g)make

3) Esporta le variabili d’ambiente

$ export ROOTSYS=<path>/root$ export PATH=$ROOTSYS/bin:$PATH$ export LD_LIBRARY_PATH=$ROOTSYS/lib:$LD_LIBRARY_PATH

Page 15: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Lanciare una sessione ROOT

Windows

- Icona sul desktop- Prompt di comandi MS-DOS

Linux

$ root

Page 16: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Windows

- Icona sul desktop

MACRO nella cartella C:\root\macros\File in/out nella cartella C:\root\

- Prompt di comandi MS-DOSPosizionarsi nella cartella di lavoro con l’istruzione: cd pathAprire un sessione di root digitando: root

Page 17: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Alcuni comandi di ROOT

root[].q per uscire dalla sessione corrente di ROOT

root[ ] .x nome-file.C  per eseguire un programma scritto precedentemente. E' altresi' possibile eseguire un programma all'avvio della sessione di ROOT digitando al prompt dei comandi root nome-file.C

root[ ].!comando-shell per eseguire un comando della shell ES: root[ ] .!ls visualizza il listato dei file della directory corrente, root[ ] . ! dir analogo per Windows

root[ ] .ls per vedere gli oggetti dichiarati nella sessione corrente

root[ ] .? per vedere la lista di tutti i comandi

Page 18: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Al prompt di ROOT è possibile digitare direttamente le istruzioni C++

ES: root[ ] cout << "Hello World" << endl;   Hello World   root[ ] int a = 10;   root[ ] cout << a << endl;   10

Per eseguire blocchi di istruzioni, si inizia digitando { e si finisce il blocco con }

ES:  root[ ] {    End with '}'> cout << "a" << endl;    End with '}'> cout << "b" << endl;    End with '}'> }    a    b

Page 19: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Per eseguire un blocco di istruzioni scritte in un file (supponiamo che il file si chiami esempio1.C):

Per eseguirlo digitare    root[ ] .x esempio1.C

oppure dalla shell

> root esempio1.C

Page 20: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Per eseguire un programma scritto in un file (supponiamo che il file si chiami esempio2.C):

Per eseguirlo digitare root[ ] .x esempio2.C(4)oppure dalla shell > root esempio2.C

(NOTA: il nome della funzione principale deve essere lo stesso di quello del file)

Page 21: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

BrowserROOT dispone di un browser grafico (classe TBrowser) che consente di visualizzare gli oggetti dichiarati nella sessione corrente. Per esempio e' possibile vedere i file aperti, eventuali istogrammi dichiarati,... Per aprire il browser, eseguire al prompt di ROOT il comando:

    root[ ] b = new TBrowser();

Page 22: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

ARGOMENTI TRATTATI NEL TUTORIAL

GRAPH

HISTOGRAM

TREE

FUNCTION RANDOM GENERATOR

Page 23: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Funzioni matematiche

La classe di ROOT per disegnare funzioni ad una sola variabile e' la TF1. E' possibile disegnare funzioni di due variabili usando la classe TF2.

TF1(const char* name, const char* formula, Double_t xmin = 0, Double_t xmax = 1)

Esempio:

Page 24: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

il metodo Draw() disegna una serie di cose prima di disegnare la funzione. Viene infatti visualizzata una finestra (canvas, classe TCanvas) e un sistema di assi (frame, classe TFrame)

Per modificare l’aspetto grafico si può agire interattivamente o tramite linee di comando.

Altri metodi:

Page 25: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Grafici (scatter plot x-y)

La classe di ROOT per disegnare dei punti date le loro coordinate e' la TGraph.

TGraph(Int_t n, const Float_t* x, const Float_t* y)

TGraphErrors(Int_t n, const Float_t* x, const Float_t* y, const Float_t* ex = 0, const Float_t* ey = 0)

TGraphAsymmErrors(Int_t n, const Float_t* x, const Float_t* y, const Float_t* exl = 0, const Float_t* exh = 0, const Float_t* eyl = 0, const Float_t* eyh = 0)

Page 26: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Esempio:

void grafico() {const Int_t n = 20;Double_t x[n], y[n];for (Int_t i=0; i<n; i++) {

x[i] = i * 0.1;y[i] = 10 * sin(x[i]+0.2);

}

TGraph *gr1 = new TGraph(n,x,y);gr1->Draw("AP");}

Per disegnare si usa il metodo Draw(option), dove alcune opzioni possibili sono:

"L" disegna una linea per unire i vari punti "A" disegna gli assi "*" disegna un * per ogni punto "B" disegna un rettangolo per ogni punto "P" il marker corrente e' disegnato per ogni punto "C" una curva e' disegnata per congiungere i punti

Page 27: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

Esercizio: utilizzare i dati dell’esperienza sull’assorbimento dei e creare un grafico Rate VS Spessore

void assorbimento() {const Int_t n = 6;Float_t rate[n] = {1308, 732, 376, 197, 74, 53}; // conteggi al minFloat_t spessore[n] = {0, 0.5, 1, 1.5, 2, 2.5}; // spessore in mm

TGraph *gr1 = new TGraph(n,spessore,rate);gr1->Draw("AP");}

- Aggiungere gli errori- Sottrarre il fondo dovuto ai cosmici- Scala logaritmica- Fit dei dati

Page 28: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

void Fit(const char *fname, Option_t *option, Option_t *goption,Axis_t xxmin, Axis_t xxmax)

*fname – nome della funzione di fit (predefinita o definita dall’utente) gaus: Funzione gaussiana: f(x) = p0*exp(-0.5*((x-p1)/p2)^2)) expo: funzione esponenziale: f(x) = exp(p0+p1*x) polN: polinomio di grado N: f(x) = p0 + p1*x + p2*x2 +... landau: funzione Landau.

*option – opzioni del fit"Q" Quiet mode (minimum printing) "V" Verbose mode (default is between Q and V) "E" Migliora la stima degli errori con la tecnica Minos"M" Migliora i risultati del fit"R" Usa lo stesso intervallo in cui è definita la funzione di fit "N" Non disegna la curva di fit …

*goption – opzioni grafiche (vedi il manuale di ROOT)xxmin, xxmax – intervallo in cui effettuare il fit

Page 29: ROOT Tutorial. ROOT Webpage  ROOT User’s guide .

TGraph *gr1 = new TGraph(n,spessore,rate);gr1->Draw("AP");gr1->Fit(“expo”,””,””,0,3);}

…TGraph *gr1 = new TGraph(n,spessore,rate);gr1->Draw("AP");

TF1 *f1 = new TF1("f1",“exp([0]+[1]*x)",0,3); // Funzione con parametrigr1->Fit(f1,””,””,0,3);}

Funzione predefinita

Oppure funzione definita dall’utente

Oppure fit lineare una volta calcolato log(rate)