ROOT Tutorial
Parte 2
Importare dati da file testo
Esempio:
void readfile()
{
const char *nomeFile = "file.txt";
fstream file(nomeFile, ios::in);
string variabile1;
string variabile2;
file >> variabile1 >> variabile2;
Int_t x[10], y[10];
Int_t n = 0;
while(file >> x[n] >> y[n]) n++;
cout << "Ho letto " << n << " righe" << endl;
cout << variabile1 << " " << variabile2 << endl;
for(Int_t i=0; i<n; i++) cout << x[i] << " " << y[i] << endl;
}
Istogrammi
ROOT permette di gestire vari tipi di istogrammi:
• 1-D
• 2-D
• 3-D
short, integer, float, double
Istogrammi 1-D
TH1F(const char name,const *title,Int_t nbins,Float_t xmin,Float_t xmax)
Metodi comunemente usati:
• Fill
h1->Fill(x);
h1->Fill(x,w); //with weight
• SetBinContent
h1->SetBinContent(Int_t bin, Double_t content)
• Draw
h1->Draw(Option_t *goption)
• Fit
h1->Fit(Fit(const char *fname, Option_t *option,
Option_t *goption, Axis_t xxmin, Axis_t xxmax)
Riempimento degli istogrammi: Metodo SetBinContent
Ch
Frequenza
1
0
2
0
10
3
0
8
4
2
6
5
1
6
3
7
5
8
8
9
11
10
10
11
8
12
6
13
6
14
4
15
2
16
1
17
0
18
0
19
0
12
(i,val_i)
4
2
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19
h1->SetBinContent(i,val_i)
i = 0 underflow bin
i = nbins+1 overflow bin
nbins: numero canali
xmin, xmax: range istogramma
Stabiliti dai dati in
ingresso
Riempimento degli istogrammi: Metodo Fill
Valore
Ch
Frequenza
7
1
0
5
2
0
9
3
0
11
4
2
13
5
1
8
6
3
16
7
5
4
8
8
4
…
9
11
2
10
10
11
8
12
6
13
6
14
4
15
2
16
1
17
0
18
0
19
0
h1->Fill(i)
12
10
8
(i)
6
0
1
2
3
4
5
6
7
8
9
10 11 12 13 14 15 16 17 18 19
Esercizio: importare i dati in formato ASCII relativi all’esperienza sulla
sorgente 
void alfa()
{
const char *nomeFile = "spectrum.Spe";
fstream file(nomeFile, ios::in);
string dummy;
for(Int_t i=0; i<12; i++) getline(file, dummy);
TH1I *hspectrum = new TH1I("hspectrum","hspectrum",2048,0,2047);
Int_t n=0;
Int_t counts;
while((file >> counts) && n < 2048){
hspectrum->SetBinContent(n+1,counts);
n++;
}
hspectrum->Draw();
hspectrum->GetXaxis()->SetRangeUser(200,320);
hspectrum->Fit("gaus","","",237,243);
}
Istogrammi 2-D
TH2F(const char name,const *title,Int_t nbinsx,Float_t xmin,Float_t xmax,
Int_t nbinsy,Float_t ymin,Float_t ymax)
Metodi comunemente usati:
• Fill
h2->Fill(x,y);
h2->Fill(x,y,w); //with weight
• SetBinContent
h2->SetBinContent(Int_t binx, Int_t biny, Double_t
content)
• Draw
h2->Draw(Option_t *goption)
Opzioni grafiche valide per tutti i tipi di istogramma:
"AXIS": Disegna solo l’asse indicato.
"SAME": Disegna l’istogramma nella pad corrente.
"CYL": Usa le coordinate cilindriche.
"POL": Usa le coordinate polari.
"SPH": Usa le coordinate sferiche.
"LEGO”, "LEGO1”, "LEGO2": Disegna un lego plot.
"SURF”, "SURF1”, "SURF2”, "SURF3”, "SURF4”: Disegna plot di
superficie
…
Opzioni grafiche valide per istogrammi 2-D:
"COL": Mappa di colori
"COLZ": Mappa di colori + palette
"CONT": Contour plot
"CONTZ": Contour plot + palette
"CONT1“, "CONT2“, "CONT3“, "CONT4“, "CONT5“, : Diversi stili di
contour plot
"SCAT": Disegna uno scatter-plot (default)
…
Scarica

ROOT Tutorial/2