ROOT Tutorial Parte 2.

Slides:



Advertisements
Presentazioni simili
Esempi di analisi dati con ROOT
Advertisements

Interfacce Java.
Strutture dati In linguaggio C. Strutture Spesso gli algoritmi lavorano su insiemi di dati eterogenei Per esempio, per descrivere le caratteristiche di.
Dati strutturati C++.
Capitolo 2 Nozioni fondamentali su Java Lucidi relativi al volume: Java – Guida alla programmazione James Cohoon, Jack Davidson Copyright © The McGraw-Hill.
MATLAB.
MATLAB. Outline Grafica 2D Esercizi Grafica 3D Esercizi.
MATLAB.
Esercizio 2. Mostrare l'evoluzione dello stato (ambiente di classi, heap, pila, System.out) durante la valutazione delle seguenti dichiarazioni di classe.
Architetture.
Introduzione al linguaggio C Dr. Francesco Fabozzi Corso di Informatica.
Le funzioni.
Esempio: Tombola! Parte seconda.
Unified Modeling Language class C {…} class B extends C {…} Esiste una notazione grafica per mostrare le relazioni di ereditarietà. Object StringC B Tutte.
J0 1 Marco Ronchetti Java Threads & Sincronizzazione.
Sezione: Costruttori Costruttori. Definizione dei costruttori Se per una classe A non scrivo nessun costruttore, il sistema automaticamente crea il costruttore.
prompt> java SumAverage
1 struct Pila { private: int size; int defaultGrowthSize; int marker; int * contenuto; void cresci(int increment); public: Pila(int initialSize) ; Pila();
Calcolatori Elettronici III
Costruzione di Interfacce Lezione 20 Qt + Opengl
Introduzione al linguaggio C++ 5 lezioni
MATLAB.
1. Conoscere luso delle collezioni in Java Comprendere le principali caratteristiche nelle varie classi di Collection disponibili Saper individuare quali.
JAVA C import java.util.*; #include <stdio.h>
coordinate utente e di finestra
Esercizi di grafica ….
1 Implementazione di Linguaggi 2 PARTE 6 Implementazione di Linguaggi 2 PARTE 6 Massimo Ancona DISI Università di Genova Testo: A.V. Aho, R. Sethi, J.D.Ullman.
2000 Prentice Hall, Inc. All rights reserved. 1 Capitolo 6: Classi e astrazione dati 1.Introduzione 2.Definizione delle strutture 3.Accedere ai membri.
1 laboratorio di calcolo II AA 2003/04 ottava settimana a cura di Domizia Orestano Dipartimento di Fisica Stanza tel. ( )
l' algoritmo di Bresenham
1 Ereditarietà Una classe può essere derivata da una classe esistente usando la sintassi: public, protected e private specificano il tipo di accesso ai.
Java base VI: Gestione I/O. Argomenti Introdurre le API per linput e output in Java.
JAVA E LA GRAFICA L’architettura Java è graphics-ready
1 Programmazione grafica 1 Daniele Marini. 2 Linguaggio di riferimento OpenGL: libreria di procedure che realizza un API (application programmers interface)
Elementi di programmazione ad oggetti a. a. 2009/2010 Corso di Laurea Magistrale in Ingegneria Elettronica Docente: Mauro Mazzieri, Dipartimento di Ingegneria.
7 N. Dinu, E. Fiandrini and L. Fano' Overview of the electrical characterization of AMS/CMS silicon microstrip detectors, Nota INFN AE-06/1.
INTRODUZIONE A MATLAB LEZIONE 4 Sara Poltronieri slide3.4 matlabintro
Un esempio: Registrazione e lettura di dati in un file
void binario(int n); …………………
24 aprile 2002 Avvisi: Risultati 1 o Esonero: (entro) lunedi 27 disponibili nella pag. WEB, ma anche esposti nella bacheca fuori dal corridoio 2 o dente,
/ Elementi di C++ Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione a.
/ Elementi di C++ Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione a.
/ Elementi di C++ Introduzione a ROOT , Laboratorio Informatico ROOT warm up… Introduzione a RooFit Primo esercizio con RooFit Analisi.
Test con JUnit. zJUnit è un ambiente di test per programmi Java ySviluppato da Kent Beck É possibile usare JUnit allinterno di Eclipse per eseguire i.
2000 Prentice Hall, Inc. All rights reserved. I file Apertura e chiusura I file ad accesso sequenziale I file ad accesso casuale Apre un file già esistente.
Tecnologie delle Costruzioni Aeronautiche 1
Tecnologie delle Costruzioni Aeronautiche 1 Esercitazione 3 © Goran Ivetic.
Introduzione al linguaggio C. Cos’e’ il C? Il C e’ un linguaggio ad alto livello Un compilatore C prende in input un file contenente codice sorgente C.
Collection & Generics in Java
Esercizi.
/ Elementi di C Introduzione a ROOT , Laboratorio Informatico ROOT warm up , Laboratorio Informatico Introduzione.
ARDUINO Duemilanove Parte_4 Arduino e Processing
JDBC Java DataBase Connectivity SISTEMI ITIS B. CASTELLI Anno Scolastico
ROOT Tutorial Parte 3.
#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.
File binari Accesso a file con record di lunghezza costante Struct Persona { Int id; Char nome[50];// nome e cognome Double stipendio; }; Persona dipendente;
Analisi Statistica dei dati nella Fisica Nucl. e Subnucl. [Laboratorio  ] Laboratorio Analisi Statistica dei Dati per HEP - G.Sirri Gabriele Sirri.
CORSO DI PROGRAMMAZIONE II
ROOT Tutorial.
ROOT Tutorial Parte 2.
ROOT Tutorial Parte 3.
Java World Introduzione.
Java: concetti e costrutti base
Unità didattica 1: Introduzione al linguaggio Java
Record.
Corso Java Introduzione.
Esercitazioni di C++ 31 dicembre 2018 Claudio Rocchini IGMI.
Java Introduzione.
Dalla programmazione tradizionale al paradigma OO
Corso di programmazione, Simulazione, ROOT, code, ecc. ecc.
Transcript della presentazione:

ROOT Tutorial Parte 2

Importare dati da file testo Esempio: void readfile() { const char *nomeFile = "file.txt"; fstream file(nomeFile, ios::in); string variabile1; string variabile2; file >> variabile1 >> variabile2; Int_t x[10], y[10]; Int_t n = 0; while(file >> x[n] >> y[n]) n++; cout << "Ho letto " << n << " righe" << endl; cout << variabile1 << " " << variabile2 << endl; for(Int_t i=0; i<n; i++) cout << x[i] << " " << y[i] << endl; }

Istogrammi ROOT permette di gestire vari tipi di istogrammi: 1-D 2-D short, integer, float, double Istogrammi 1-D TH1F(const char name,const *title,Int_t nbins,Float_t xmin,Float_t xmax) Metodi comunemente usati: Fill h1->Fill(x); h1->Fill(x,w); //with weight SetBinContent h1->SetBinContent(Int_t bin, Double_t content) Draw h1->Draw(Option_t *goption) Fit h1->Fit(Fit(const char *fname, Option_t *option, Option_t *goption, Axis_t xxmin, Axis_t xxmax)

Riempimento degli istogrammi: Metodo SetBinContent Ch Frequenza 1 0 2 0 3 0 4 2 5 1 6 3 7 5 8 8 9 11 10 10 11 8 12 6 13 6 14 4 15 2 16 1 17 0 18 0 19 0 (i,val_i) h1->SetBinContent(i,val_i) i = 0 underflow bin i = nbins+1 overflow bin nbins: numero canali xmin, xmax: range istogramma Stabiliti dai dati in ingresso

Riempimento degli istogrammi: Metodo Fill Ch Frequenza 1 0 2 0 3 0 4 2 5 1 6 3 7 5 8 8 9 11 10 10 11 8 12 6 13 6 14 4 15 2 16 1 17 0 18 0 19 0 Valore 7 5 9 11 13 8 16 4 … (i) h1->Fill(i)

Esercizio: importare i dati in formato ASCII relativi all’esperienza sulla sorgente 

void alfa() { const char *nomeFile = "spectrum.Spe"; fstream file(nomeFile, ios::in); string dummy; for(Int_t i=0; i<12; i++) getline(file, dummy); TH1I *hspectrum = new TH1I("hspectrum","hspectrum",2048,0,2047); Int_t n=0; Int_t counts; while((file >> counts) && n < 2048){ hspectrum->SetBinContent(n+1,counts); n++; } hspectrum->Draw(); hspectrum->GetXaxis()->SetRangeUser(200,320); hspectrum->Fit("gaus","","",237,243);

Istogrammi 2-D TH2F(const char name,const *title,Int_t nbinsx,Float_t xmin,Float_t xmax, Int_t nbinsy,Float_t ymin,Float_t ymax) Metodi comunemente usati: Fill h2->Fill(x,y); h2->Fill(x,y,w); //with weight SetBinContent h2->SetBinContent(Int_t binx, Int_t biny, Double_t content) Draw h2->Draw(Option_t *goption)

Opzioni grafiche valide per tutti i tipi di istogramma: "AXIS": Disegna solo l’asse indicato. "SAME": Disegna l’istogramma nella pad corrente. "CYL": Usa le coordinate cilindriche. "POL": Usa le coordinate polari. "SPH": Usa le coordinate sferiche. "LEGO”, "LEGO1”, "LEGO2": Disegna un lego plot. "SURF”, "SURF1”, "SURF2”, "SURF3”, "SURF4”: Disegna plot di superficie … Opzioni grafiche valide per istogrammi 2-D: "COL": Mappa di colori "COLZ": Mappa di colori + palette "CONT": Contour plot "CONTZ": Contour plot + palette "CONT1“, "CONT2“, "CONT3“, "CONT4“, "CONT5“, : Diversi stili di contour plot "SCAT": Disegna uno scatter-plot (default)

Generatori di numeri casuali In ROOT numeri pseudo - casuali sono generati usando le classi TRandom. Esistono 4 differenti classi (TRandom, TRandom1, TRandom2 e TRandom3), ciascuna delle quali implementa un differente tipo di generatore di numeri casuali. Il metodo SetSeed permette di scegliere il seme. gRandom->SetSeed(Int_t seed); Se non specificato, il seme è stabilito dal clock del PC Esempio: distribuzione uniforme void randomUni(){ 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->Uniform(0,10); h2->Fill(x,y); } gStyle->SetPalette(1); h2->Draw(“colz”);

Un esercizio: simulare il fenomeno del decadimento radioattivo N0=100, = 0.01 s-1, dt = 1s dN= -N  dt cioè N=N0e-t

void decay(){ Float_t alfa = 0.01; Int_t deltaT = 1; Int_t N0 = 100; Int_t time = 300; Int_t nbins = time/deltaT; TH1I *h1 = new TH1I("h1","h1",nbins,0,time); h1->SetBinContent(1,N0); Int_t counter = 2; for(Int_t i=0; i<time; i = i + deltaT){ for(Int_t j=0; j<N0; j++){ Double_t rand = gRandom->Uniform(0,1); if(rand<alfa*deltaT) N0--; } h1->SetBinContent(counter,N0); counter++; h1->Draw();

Distribuzione non uniformi disponibili in ROOT

Esercizio: simulazione MC per valutare la distanza relativa tra due contatori geiger Ipotesi: 1) Contatori Geiger bidimensionali r = 0.5 Geiger radius in cm l = 6 Geiger length in cm 2) Distanza nominale d = 5 cm 3) Estrazione uniforme dei punti Possibili miglioramenti: 1) Contatori Geiger in 3D DA VERIFICARE!

void geigerMC(){ gROOT->SetStyle("Plain"); Double_t x1, y1, x2, y2; //Define the experimental setup const int d = 5; // Distance between geigers Double_t r = 0.5; // Geiger radius in cm Double_t l = 6; // Geiger length in cm TH1D *h1 = new TH1D("h1","Distances distribution", 100,0,10); TH2D *h2 = new TH2D("h2","Points distribution", 150, -5, 10, 100, -5, 5); for(Int_t i=0; i < 100000; i++){ x1 = gRandom->Uniform(-r,r); y1 = gRandom->Uniform(-l/2,l/2); x2 = gRandom->Uniform(d-r,d+r); y2 = gRandom->Uniform(-l/2,l/2); h2->Fill(x1,y1); h2->Fill(x2,y2); Double_t distance = TMath::Sqrt((x1-x2)**2+(y1-y2)**2); h1->Fill(distance); } TCanvas *c1 = new TCanvas(); gStyle->SetPalette(1); h2->Draw("colz"); TCanvas *c2 = new TCanvas(); h1->Draw();

5 cm

3 cm 15 cm