ROOT Tutorial Parte 3.

Slides:



Advertisements
Presentazioni simili
Esempi di analisi dati con ROOT
Advertisements

Funzioni In C++ le funzioni sono caratterizzate da un nome, dal tipo della variabile ritornata e da una lista di parametri (opzionali) La lista dei parametri.
Alcune semplici istruzioni per iniziare a lavorare con i treeviewer in root Laboratorio di Fisica 2 A.A Dott. Francesco Noferini.
Java Stream e File.
in un programma Assembler
Array multidimensionali
Numeri casuali Cos’e’ un numero casuale? 3 e’ un numero casuale?
PUNTATORI Introduzione
MATLAB.
MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
Introduzione al linguaggio C
Il campo elettrico - Lo chiamiamo campo elettrico,
Alcuni approcci allanalisi dati (tra CMSSW e ROOT) Riunione mensile di software e analisi, 15/12/2008 Massimo Nespolo 1.
Programmazione Procedurale in Linguaggio C++
SISTEMA DI ACQUISIZIONE
Root Stefano Lacaprara (slides rubate a Tommaso Boccali)
Tema 3: Teorema-Limite Centrale
Tutorial – come rendere trasparente lo sfondo di un immagine e creare una GIF animata con GIMP Ariboni Barbara.
Realizzazione e caratterizzazione di una semplice rete neurale per la separazione di due campioni di eventi Vincenzo Izzo.
Cosè un programma? LALA PROGRAMMAZIONE PROGRAMMAZIONELALA PROGRAMMAZIONE PROGRAMMAZIONE UN ELENCO DI ISTRUZIONI, APPARTENENTI A UN BEN DEFINITO LINGUAGGIO,
Ricostruzione e visualizzazione di raggi cosmici nei rivelatori MDT
Introduzione agli stream e alle classi
Il linguaggio Fortran 90: 5. Formato di I/O e Files
Esercizi di grafica ….
INFORMATICA GRAFICA – SSD ING-INF/05 Sistemi di elaborazione delle informazioni a.a. 2007/2008 Esercitazione OpenGL.
Test del Monitoraggio del Tracker usando un Tier2 M.S. Mennea, G. Zito, N. De Filippis Università & INFN di Bari Riunione Consorzio – Torino 18 Novembre.
Monitoraggio online con la mappa del tracker M.S. Mennea, G. Zito Università & INFN di Bari Riunione Consorzio – Bari 9 Settembre 2005.
Condizioni di ripetibilita L'esperimento sia condotto sempre dallo stesso osservatore. Siano usati sempre gli stessi strumenti e le stesse procedure. Siano.
Progetto di applicazioni grafiche. Disegno di forme complesse Prassi : un classe per ciascuna forma Progetta la forma individuando le componenti base.
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
File di testo, file binari
Algebra Lineare Esercizi assegnati.
LA DOCUMENTAZIONE È noto che un buon programma dovrebbe essere ben documentato.. ma lesperienza insegna che quasi mai ciò viene fatto! –non cè tempo, ci.
Corso di PHP.
Programmazione in Java
Javascript 6 Funzioni. Una funzione sarà eseguita in risposta ad un evento o ad una chiamata diretta. Le funzioni possono essere inserite comodamente.
Specificare una unità con cui scambiare i dati input da tastiera output a video file esterno variabili di programma unità di I/O Istruzioni di INPUT/OUTPUT.
Creazione progetto in C++/DEV
/ Elementi di C++ Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione a.
21 marzo 2002 (ri-)Avvisi: Giovedi 28 marzo la lezione e sospesa. Nuovo indirizzo di Spedire messaggi e esercizi solo.
Sviluppare un programma in C che, dato un array da 100 elementi interi caricato con numeri casuali compresi tra [10,100], sia in grado di cercare il valore.
Esercitazione 1 - Introduzione Matlab. MATrix LABoratory Command window Current Directory Comandi recenti Variabili correnti Contenuto cartella corrente.
Ricerca sequenziale in un array di interi
/ Elementi di C Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione.
Simulatore Circuitale Spice
1 Fabio Scotti ( ) Laboratorio di programmazione per la sicurezza Valentina Ciriani ( ) Laboratorio di programmazione Lezione 11 e 12 -
ARDUINO Duemilanove Parte_4 Arduino e Processing
ROOT Tutorial Parte 2.
Programmazione in linguaggio C
ESERCITAZIONE 12 ESERCIZIO 2 14/05/2014. Consegne 1/4 Definire la classe MyBufferedReader che estende la classe BufferedReader, implementando il metodo.
#include void main() { int a,b,c,; float s, x,x1,x2,delta,alfa,beta; int num[3]; int i; printf("La forma classica dell'equazione di 2° grado è: a*x^2+b*x+c=0\n.
Ingresso e uscita in Java F. Bombi 10 ottobre 2002.
1 FONDAMENTI DI INFORMATICA II Ingegneria Gestionale a.a ° Ciclo Puntatori e Stringhe.
Esame di Analisi Multivariata dei Dati
Capitolo 6 Iterazione Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill Companies.
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
Definizione di algoritmo: Un algoritmo è un procedimento che risolve un determinato problema attraverso un numero finito di passi. Un problema risolvibile.
Lez. 9 (13/14)Elementi di Programmazione1 Lezione 9 Valutazione di espressioni File di testo sequenziali.
Analisi Statistica dei dati nella Fisica Nucl. e Subnucl. [Laboratorio  ] Laboratorio Analisi Statistica dei Dati per HEP - G.Sirri Gabriele Sirri.
Informatica 4 Funzioni. FUNZIONE: definizione MATEMATICA Relazione (o applicazione) binaria tra due insiemi A e B che associa a ogni elemento di A un.
Registrazione su altervista Dal browser collegarsi al sito : “ ”
A.a. 2005/2006Introduzione a ROOT: E. Meroni ROOT É un potente strumento object oriented per analisi di dati, preparato al CERN Può.
Esempio scriviamo un programma in linguaggio macchina che: trasferisce il contenuto delle 2 parole della RAM di indirizzi 64 e 68 nei registri R 0 ed R.
ROOT Tutorial.
ROOT Tutorial Parte 2.
ROOT Tutorial Parte 3.
ROOT Tutorial Parte 4.
PHP.  HTML (Hyper Text Markup Language)  CSS (Cascading Style Sheets)  Javascript (linguaggio di programmazione client)  PHP ( Hypertext Preprocessor.
Luciano Pandola INFN-LNGS Presentazione basata da S. Panacek e N. Di Marco Corso INFN su C++, ROOT e Geant4.
Transcript della presentazione:

ROOT Tutorial Parte 3

Esempio: distribuzione uniforme in x, gaussiana in y void randomGaus(){ Double_t x, y; TH2D *h2 = new TH2D(“h2”,”Uniform Distribution”, 100,0,10,100,0,10); for(Int_t i=0; i < 100000; i++){ x = gRandom->Uniform(0,10); y = gRandom->Gaus(5,1); h2->Fill(x,y); } gStyle->SetPalette(1); h2->Draw(); h2->Draw(“colz”); h2->Draw(“lego”);

Esempio: distribuzione uniforme nello spazio Estrazione uniforme (,)? void sfera(){ Int_t raggio=1; Double_t teta, phi; TH3D *hsemisfera = new TH3D("hsemisfera","hsemisfera",200,-1,1,200,-1,1,100,0,1); for(Int_t i=0; i<10000; i++){ teta = gRandom->Uniform(0,TMath::Pi()/2); //semisfera // teta = gRandom->Uniform(0,TMath::Pi()); // sfera phi = gRandom->Uniform(0,2*TMath::Pi()); Double_t x = raggio * TMath::Cos(phi)*TMath::Sin(teta); Double_t y = raggio * TMath::Sin(phi)*TMath::Sin(teta); Double_t z = raggio * TMath::Cos(teta); hsemisfera->Fill(x,y,z); } hsemisfera->Draw();

Estrazione uniforme in  e in sin() void sfera2(){ Int_t raggio=1; Double_t teta, phi; TH3D *hsemisfera = new TH3D("hsemisfera","hsemisfera",200,-1,1,200,-1,1,100,0,1); for(Int_t i=0; i<10000; i++){ teta = TMath::ACos(gRandom->Uniform(0,1)); //Semisfera //teta = TMath::ACos(-1 + 2*gRandom->Uniform(0,1)); //Sfera phi = gRandom->Uniform(0,2*TMath::Pi()); Double_t x = raggio * TMath::Cos(phi)*TMath::Sin(teta); Double_t y = raggio * TMath::Sin(phi)*TMath::Sin(teta); Double_t z = raggio * TMath::Cos(teta); hsemisfera->Fill(x,y,z); } hsemisfera->Draw();

TFile f(“esempio.root","recreate"); h0->Write(); f.Close(); ROOT Files Si tratta di file salvati in un formato leggibile da ROOT. Può contenere vari tipi di oggetti. Esempio: TFile f(“esempio.root","recreate"); h0->Write(); f.Close(); Per creare un file ROOT e salvare un istogramma Opzioni: NEW, CREATE, RECREATE, UPDATE, READ TFile f("demo.root"); TBrowser browser; Per aprire un file ROOT e vederne il contenuto

Tree ROOT Ogni esperimento di fisica nucleare produce in genere degli eventi, definiti da una serie ordinata di variabili. Esempio: 2 rivelatori in coincidenza, con le seguenti informazioni: energia depositata in ciascuno dei due e tempo di volo tra i due: E1, E2, T Struttura dell’evento: N.Evento E1 E2 T 2.35 3.46 5.61 3.43 4.21 5.66 ……………………………. ……………………… Il programma di acquisizione dati scriverà in un file, evento per evento, questa serie ordinata di numeri, per la loro successiva analisi I Tree di ROOT permettono di conservare facilmente queste strutture dati e consentono un’analisi multiparametrica

Creare e riempire un Tree Creare un oggetto TTree TTree *tree = new TTree(“tree","A ROOT tree"); Aggiungere i Branches Double_t var; tree->Branch(“var",&var,”var/D”); Riempire il tree tree->Fill(); Scrivere un tree in un file tree->Write();

Esempio void createtree(){ //Output ROOT file TFile *f = new TFile("esempiotree.root","RECREATE"); //Output tree TTree *myTree = new TTree("myTree","a ROOT tree"); Int_t evno; Float_t var1, var2, var3; myTree->Branch("evno",&evno,"evno/I"); myTree->Branch("var1",&var1,"var1/F"); myTree->Branch("var2",&var2,"var2/F"); myTree->Branch("var3",&var3,"var3/F"); for(Int_t i=0; i<1000; i++){ evno = i; var1 = gRandom->Uniform(); var2 = gRandom->Exp(1); var3 = gRandom->Gaus(0,1); myTree->Fill(); } myTree->Write(); f->Close();

Alcuni metodi utili per l’analisi di un Tree (interattivamente) root[ ]> myTree- >Scan() root[ ]> myTree- >Print() root[ ]> myTree- >Draw(“var3”) 1D root[ ]> myTree- >Draw(“var1:var2”) 2D root[ ]> myTree- >Draw(“var1:var2”, “”, “lego2”) 2D con opzioni root[ ]> myTree- >Draw(“var1:var2”, “evno<500”, “lego”) 2D con taglio root[ ]> myTree- >Draw(“var1:var2:var3”) 3D root[ ]> myTree- >Fit(“gaus”, “var3”) Fit root[ ]> myTree- >Fit(“gaus”, “var3”, “cut”) Fit con taglio void readtree(){ TFile *f = new TFile("esempiotree.root"); TTree *tree = (TTree*)f->Get("myTree"); Int_t evno; Float_t var1, var2, var3; tree->SetBranchAddress("evno",&evno); tree->SetBranchAddress("var1",&var1); tree->SetBranchAddress("var2",&var2); tree->SetBranchAddress("var3",&var3); tree->Draw("var3","evno<500"); } Leggere un tree da un file ROOT

Un esempio di analisi su dati simulati Diverse particelle (p, π, K in una certa proporzione) Rivelatore costituito da 3 rivelatori sottili e da un rivelatore spesso in silicio Output: Un file di Root con 50000 eventi simulati che contengono: N.evento, Tipo di particella, Impulso, E1, E2, E3, Etot Esercitazione: Costruire gli spettri dell’energia depositata in ciascuno dei rivelatori

Contenuto del Tree (file “deltae.root”) Kpart=8 (pioni), 11 (kaoni), 14 (protoni)

Leggere il file deltae.root void deltae(){ TFile *f = new TFile("deltae.root"); TTree *tree = (TTree*)f->Get("tree"); Int_t iev, kpart; Double_t pmod, e1, e2, e3, etot; tree->SetBranchAddress("iev",&iev); tree->SetBranchAddress("kpart",&kpart); tree->SetBranchAddress("pmod",&pmod); tree->SetBranchAddress("e1",&e1); tree->SetBranchAddress("e2",&e2); tree->SetBranchAddress("e3",&e3); tree->SetBranchAddress("etot",&etot); …

Un esempio di analisi su dati simulati Esercitazioni: 1 Costruire gli spettri dell’energia depositata in ciascuno dei rivelatori 2 Costruire gli spettri selezionando le particelle incidenti 3 Costruire dei plot bidimensionali Ej-Etot per j=1, 2, 3 (matrici DeltaE-E) 4 Studiare l’effetto dell’impulso delle particelle incidenti 5 Studiare l’effetto dell’inclinazione della traccia

Costruire gli spettri selezionando le particelle incidenti Costruire gli spettri dell’energia depositata in ciascuno dei rivelatori … Tree->Draw(“e1”); } Costruire gli spettri selezionando le particelle incidenti … Tree->Draw(“e1”, “kpart==14”); } Costruire dei plot bidimensionali … Tree->Draw(“e1:etot”); //Oppure TH2D *h2 = new TH2D("h2","deltaE-E",300,0,150,50,0,2.5); for(Int_t i = 0; i < tree->GetEntries(); i++){ tree->GetEntry(i); h2->Fill(etot,e1); } gStyle->SetPalette(1); h2->Draw("colz");

Studiare l’effetto dell’impulso Tree->Draw(“e1:etot”,”kpart==11&&pmod<0.4”) Studiare l’effetto dell’inclinazione della traccia Tree->Draw(“etot”,”kpart==8”) deltae.root deltae_cono.root