Laboratorio di Calcolo B
Dario Barberis , Paolo Morettini, Fabrizio Parodi, Enrico Robutti


Introduzione

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).

  1. Ogni volta che leggete un dato,  inseritelo (Fill) in  un istogramma precedentemente inizializzato.
  2. 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

  3. 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.
  1. Sovrapposizione della funzione teorica
    Sovrapponete all'istogramma dei dati la funzione teorica (attenti alla normalizzazione: vedi lezione).
  2. 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

  1. 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.