La presentazione è in caricamento. Aspetta per favore

La presentazione è in caricamento. Aspetta per favore

Esempi di analisi dati con ROOT

Presentazioni simili


Presentazione sul tema: "Esempi di analisi dati con ROOT"— Transcript della presentazione:

1 Esempi di analisi dati con ROOT
Guida minima all’uso di ROOT per le esperienze didattiche di Laboratorio di Elettromagnetismo Piano Lauree Scientifiche Andrea Ventura Dipartimento di Fisica – Università del Salento Lecce, gennaio 2013

2 Introduzione ROOT è un programma molto utilizzato nell’ambito della Fisica delle Alte Energie, che permette di analizzare anche grandi quantità di dati, produrre risultati statistici, realizzare grafici, adattare dati sperimentali a funzioni, e molto altro ancora. E’ un programma molto versatile e gratuito: l’attuale versione per Windows può essere scaricata dall’indirizzo: ftp://root.cern.ch/root/root_v win32.vc90.msi Senza la pretesa di conoscere l’intero pacchetto, qui considereremo alcune semplici applicazioni per un impiego immediato.

3 Installazione del pacchetto
Una volta scaricato il file di setup (root*.msi), si segue la procedura standard di installazione, al termine della quale compare un’icona sul desktop su cui cliccare per avviare ROOT ROOT è disponibile anche per altri sistemi operativi (Linux, Mac OS). All’avvio, appare una finestra (“shell”) per i comandi da sottomettere al programma.

4 Avvio di ROOT

5 Iniziare con ROOT ROOT è basato su CINT, un interprete di C/C++
Blocchi di comandi possono essere racchiusi tra parentesi graffe, intervallati da punti e virgola, ovvero: {...; ...; ...} I comandi precedenti possono essere richiamati tramite la freccia verso l’alto () Per non digitare ogni volta gli stessi comandi, possiamo scriverli in un file (ad esempio miaMacro.C) ed eseguirli con “.x miaMacro.C” la directory di lavoro è tipicamente C:\root Per uscire da ROOT digitare “.q”

6 Semplici operazioni Possiamo fare qualche calcolo, ad esempio: 7 · 9
Possiamo elencare i quadrati dei primi 5 numeri pari: Possiamo disegnare una funzione, f(x) = 2 senx (x–1)2 Per avere la griglia, anteporre Per conoscere il valore di f(3) root [0] 7*sqrt(9) root [1] for (int i=1; i<=5; i++) printf(“%d^2 = %d ”, 2*i, 4*i*i); root [2] TF1 f("f","2*sin(x)*(x-1)**2",-3,7); root [3] f.Draw(); c1 = new TCanvas; c1->SetGrid(); f(3) (const Double_t) e+000

7 Effettuare un fit a una funzione
Si salvi in un file e si esegua il seguente esempio: { // Creazione di una canvas con griglia: gROOT->Reset(); c1 = new TCanvas("c1", "Fit dei dati con errori su x e y", 200, 10, 700, 500); c1->SetGrid(); Int_t n = 10; // Inizializzazione di 4 vettori: // x[] e ex[] sono le misure in ascissa x_i e i loro errori Float_t x[n] = {0.0, 0.1, 0.2, 0.3, 0.4, 0.5, 0.65, 0.75, 0.95, 1.2}; Float_t ex[n] = {0.05, 0.05, 0.04, 0.05, 0.04, 0.05, 0.06, 0.06, 0.05, 0.05}; // y[] e ey[] sono le misure in ordinata y_i e i loro errori Float_t y[n] = {0.1, 0.3, 0.55, 0.67, 0.75, 0.79, 0.71, 0.63, 0.45, 0.35}; Float_t ey[n] = {0.04, 0.03, 0.03, 0.02, 0.02, 0.02, 0.03, 0.03, 0.04, 0.04}; // Creazione di un grafico x-y con errori gr = new TGraphErrors(n,x,y,ex,ey); gr->SetTitle("Fit della funzione"); gr->SetMarkerColor(4); gr->SetMarkerStyle(21); gr->Draw("AP"); gStyle->SetOptFit(1111); // Fit dei dati del grafico con un polinomio di terzo grado gr->Fit("pol3"); c1->Update(); }

8 Risultato del fit Il fit a una polinomiale di terzo grado è soddisfacente (il 2/ndf è prossimo a 1) Provare altre funzioni, come “pol2”, “pol4” o “expo”

9 Fit con altre funzioni All’interno della macro inserire la funzione desiderata: Lanciare la macro. Il fit potrebbe non funzionare per via di inadeguati valori iniziali dei parametri p0, p1, p2. Definirli con “SetParameters” e rilanciare: { ... // Creazione di una canvas con griglia // Inizializzazione dei 4 vettori x[] ex[] y[] ey[] // Creazione di un grafico x-y con errori // Definizione di una nuova funzione TF1 *funz = new TF1("funz","[0]*x*exp([1]*x+[2])",0.5,100); // Fit in un intervallo di interesse, tra -3 e 7 gr->Fit("funz","","",-3,7); c1->Update(); } TF1 *funz = new TF1("funz","[0]*x*exp([1]*x+[2])",0.5,100); funz->SetParameters(5.,-1.,0.);

10 Risultato del nuovo fit
Il nuovo fit alla funzione desiderata è soddisfacente Si provino altre funzioni arbitrarie o altri set di punti

11 Altre operazioni con ROOT
Si possono visualizzare i valori dei parametri del fit: Si possono salvare i grafici ottenuti tramite l’interfaccia grafica: “File -> Save As…” oppure Maggiori dettagli su Per ulteriori aiuti o chiarimenti: float p0=funz->GetParameter(0), dp0=funz->GetParError(0); float p1=funz->GetParameter(1), dp1=funz->GetParError(1); float p2=funz->GetParameter(2), dp2=funz->GetParError(2); cout << "p0 = " << p0 << " +- " << dp0 << endl; cout << "p1 = " << p1 << " +- " << dp1 << endl; cout << "p2 = " << p2 << " +- " << dp2 << endl; c1->SaveAs(“mioGrafico.gif”)


Scaricare ppt "Esempi di analisi dati con ROOT"

Presentazioni simili


Annunci Google