Scaricare la 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”)
Presentazioni simili
© 2024 SlidePlayer.it Inc.
All rights reserved.