Laboratorio di Calcolo B
Istogrammi
Scopo di questa esercitazione è leggere dei dati da un file, riempire
un istogramma e confrontare la distribuzione dei dati sperimentali con una funzione.
Attenzione: al fine di apprezzare meglio la proprietà degli istogrammi di essere
``contenitori'' di dati non utilizzate vettori .
Lettura da file e riempimento istogramma
Confronto con una distribuzione teorica
Fit con la distribuzione teorica
Lettura da file
e riempimento istogramma
Leggete i dati sperimentali da uno dei file che abbiamo preparato (
m1.dat,
m2.dat,
m3.dat).
Questi dati simulano una serie di misure affette da errore statistico
e quindi sono distribuiti secondo una distribuzione gaussiana (da verificare!).
Potrà essere utile avere come variabili accessibili da tastiera il
numero di bin e gli estremi del grafico (facoltativamente potreste calcolarveli
automaticamente dai dati).
- Ogni volta che leggete un dato, inseritelo (Fill) in
un istogramma precedentemente inizializzato.
- Leggendo i dati calcolate la media e la varianza. Per il calcolo
di quest'ultima dovete usare la formula seguente che vi permette di calcolare
la varianza senza dover conoscere il valore della media quando calcolate
il contributo i-esimo.
&sigma2 = <x2> - <x>2
- A lettura ultimata, estraete dal vostro grafico i valori di media
e varianza utilizzando le formule
< x > = (&sum fi xci)/N
< x2 > = (&sum fi xci xci)/N
(dove fi è il contenuto del bin i-esimo)
e confrontateli con i valori ottenuti dai dati iniziali.
Verificate che i valori ritornati dai metodi
GetMean() e GetRMS() della classe TH1D corrispondono a quello calcolati al punto 2.
Confronto con
una distribuzione teorica
Per fare il confronto con una distribuzione teorica si puo' procedere
in due modi: sovrapporre all'istogramma dei dati sperimentali la funzione
teorica opportunamente normalizzata oppure sovrapporre ai dati un istogramma
"teorico".
Questo confronto è, per ora, solo qualitatitivo.
Per proseguire vi servirà quindi una funzione del tipo (esempio nel
caso di distribuzione gaussiana)
double gauss (double *x, double* par){
par[0]=normalizzazione;
par[1]=media;
par[2]=rms;
... calcolo della gaussiana...
}
che utilizzerete per inizializzare un oggetto della classe TF1.
Se la normalizzazione è fissata a 1 la funzione
gauss ritorna la densità di probabilità gaussiana.
Media e rms della gaussiana da utilizzare per il confronto
sono quelli calcolati al punto precedente.
- Sovrapposizione della funzione teorica
Sovrapponete all'istogramma dei dati la funzione
teorica (attenti alla normalizzazione: vedi lezione).
- Sovrapposizione dell'istogramma teorico
Sovrapponete all'istogramma dei dati un istogramma
che riempirete mettendo in ogni bin il numero di entries valutato come
il numero di dati totali per l'integrale della densità
di probabilità nel bin
ni = N &intab p(x) dx
(dove a e b sono rispettivamente l'estremo inferiore e superiore
del bin i).
Nel caso della gaussiana l'integrale può
essere calcolato, oltre che con i metodi suggeriti a lezione,
utilizzando la funzione erf (di cmath) o Erf (di TMath)
erf(x) = (2/&pi)&int0x e-t2 dt
Fit
-
Infine utilizzate un fit per ottenere media e
rms dai dati sperimentali.
Un modo semplice per fittare la
la densità di probabilità
p(x) consiste nel fittare la funzione gauss fissando a 1 la normalizzazione.