29
ROOT Tutorial

ROOT Tutorial. ROOT Webpage ROOT User’s guide

Embed Size (px)

Citation preview

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)