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

CalibPotR6_res.gif


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