1 / 11

Esempi di analisi dati con ROOT

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

theta
Download Presentation

Esempi di analisi dati con ROOT

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  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_v5.34.04.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)1.12896006447893770e+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 http://root.cern.ch • Per ulteriori aiuti o chiarimenti: • andrea.ventura@le.infn.it 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”)

More Related