La libreria LibEsp3
Compilazione e utilizzo
La libreria LibEsp3.C (v 1.2) contiene una serie di funzioni di uso tipico nell'analisi dei dati delle esperienze di laboratorio (caricare un grafico, eseguire un fit lineare, creare il grafico dei residui...).
Le funzioni sono scritte in una macro in linguaggio C++.
Per utilizzarle nell'ambiente interattivo di ROOT (cint) bisogna “caricare” la libreria. Il modo migliore consiste nel pre-compilare il tutto e quindi caricare la libreria compilata:
root [0] .L LibEsp3.C++
Info in <TUnixSystem::ACLiC>: creating shared library /home/lunardon/didattica/root_software/./LibEsp3_C.so
root [1]
In questo modo viene creato il file LibEsp3_C.so che puo' essere caricato cosi':
root [0] .L LibEsp3_C.so
oppure (piu' correttamente):
root [0] gSystem->Load(“LibEsp3_C.so”);
Se per qualche motivo non funziona la compilazione, si puo' provare a caricare la libreria in memoria in versione “interpretata”:
root [0] .L LibEsp3.C
Questo secondo modo ha maggiori probabilita' di funzionare, ma sarebbe meglio riuscire a compilare il tutto.
A questo punto le funzioni della libreria sono disponibili e possono essere eseguite dal propt:
root [1] TGraphErrors *g=LoadGraphErrors("CalibPotR6.dat","R6");
Giusto un paio di comandi essenziali per cominciare:
root [2] .x pippo.C
esegue la macro pippo.C
root [3] .q
esce da root
Elenco delle funzioni presenti
void SetPrintResult(Bool_t pr);
// gPrintResult e' una variabile globale definita insieme alle funzioni della libreria.
// Settando gPrintResult a 0 con SetPrintResult() non si stampano i risultati.
Double_t GetMean(Double_t *x, Int_t N)
// ritorna il valore medio di N valori x[] e stampa le dev. standard
Double_t GetMeanW(Double_t *x, Double_t *ex, Int_t N)
// ritorna il valore medio pesato di N valori x[] e stampa le dev. standard
TMatrixD *GetLFCovMat(TGraphErrors *g)
// calcola la matrice di covarianza per il fit lineare
Double_t GetProb(Double_t dist, Double_t sigma)
// ritorna la probabilita' per una misura che dista dist dal valor medio
// per una distribuzione di larghezza sigma
Double_t GetChi2(TGraphErrors *g, TF1 *f1)
// ritorna il chiquadro del grafico con errori g associato alla
// funzione di fit f1
TGraphErrors* GetResidues(TGraphErrors *g, TF1 *f1)
// ritorna il grafico dei residui associato
// al grafico g e alla funzione di fit f1
TF1* LinFitW(TGraphErrors *g)
// interpolazione lineare pesata
// ritorna la funzione di fit (retta) o NULL in caso di errore
// il coeff. di correlazione e' messo in Chisquare
TF1* LinFit(TGraphErrors *g, Bool_t seterrors=1, Int_t maxN=-1)
// interpolazione lineare con le formulette classiche
// ritorna la funzione di fit (retta) o NULL in caso di errore
// il coeff. di correlazione e' messo in Chisquare
// - se seterrors=1 setta tutti gli errori su y alla sigma_y comune
// - se maxN>2 -> fitta solo i primi maxN punti
Double_t Extrapolate(Double_t x,TGraphErrors *g, TF1 *f)
// valuta la sigma(y) del valore medio stimato dalla funzione di fit
// il coefficiente di correlazione era stato messo in f->GetChisquare()
void PCheckName(char* s)
// check for a good root name
TGraphErrors* LoadGraphErrors(Text_t *fname, Text_t *graphname="")
// legge un grafico con errori da file tipo testo nel formato:
//
// # commenti
// x0 y0 ex0 ey0
// .. .. .. ..
TH1F* LoadHist(Text_t *fname, Text_t *histname="")
// legge un istogramma da file tipo testo nel formato:
//
// # commenti
// i1 i2 ... iN
// iN+1 ... ... ...
//
// con N (numero di colonne = 1,...,10 )
// -se histname="" usa il nome del file
Int_t SaveGraphErrors(TGraphErrors *g, Text_t *fname, Int_t attr=1)
// Scrive un TGraphErrors in formato ascii nel file fname
// - se attr=1 prima di scrivere controlla se c'e' gia' un file
// con lo stesso nome
Int_t SaveHist(TH1 *h, Text_t *fname, Int_t attr=1)
// Scrive un TH1 in formato ascii nel file fname
// - se attr=1 prima di scrivere controlla se c'e' gia' un file
// con lo stesso nome
Qualche esempio
1) Questa macro carica il file CalibPotR6.dat con i dati della calibrazione e calcola la media dei valori delle X e delle Y.
2) Questa macro carica il file CalibPotR6.dat con i dati della calibrazione, esegue un fit lineare e disegna il grafico dei punti e dei residui. Output: CalibPotR6.gif e
3) Questa macro carica il file assorb.dat con i dati del numero di conteggi gamma in funzione dello spessore attraversato ed esegue un fit con una funzione particolare (N(x) = N(0)*exp[-mu*x] + bck ). Output: Assorbimento.gif
Pagine curate da: M. Lunardon
Ultimo aggiornamento : 20/09/07