http://root.cern.ch C++



Documenti analoghi
Introduzione a ROOT. 1. Informazioni generali

Codifica: dal diagramma a blocchi al linguaggio C++

LINGUAGGI DI PROGRAMMAZIONE

Linguaggio C. Fondamenti. Struttura di un programma.

Funzioni in C. Violetta Lonati

Per scrivere una procedura che non deve restituire nessun valore e deve solo contenere le informazioni per le modalità delle porte e controlli

La selezione binaria

3 - Variabili. Programmazione e analisi di dati Modulo A: Programmazione in Java. Paolo Milazzo

Corso di Informatica (Programmazione) Lezione 6 (31 ottobre 2008)

Dall Algoritmo al Programma. Prof. Francesco Accarino IIS Altiero Spinelli Sesto San Giovanni

SOFTWARE. È l insieme delle istruzioni che è necessario fornire alla macchina per il suo funzionamento. Vi sono due categorie di software:

Laboratorio di Informatica

Programmare in Java. Olga Scotti

Strutture. Strutture e Unioni. Definizione di strutture (2) Definizione di strutture (1)

Gli array. Gli array. Gli array. Classi di memorizzazione per array. Inizializzazione esplicita degli array. Array e puntatori

Introduzione alla programmazione in C

Gian Luca Marcialis studio degli algoritmi programma linguaggi LINGUAGGIO C

Arduino: Programmazione

Introduzione a Dev-C++

Programmazione C Massimo Callisto De Donato massimo.callisto@unicam.it

Introduzione al MATLAB c Parte 2

Nascita di Java. Che cos e Java? Caratteristiche di Java. Java: linguaggio a oggetti

Excel. A cura di Luigi Labonia. luigi.lab@libero.it

Automatizzare i compiti ripetitivi. I file batch. File batch (1) File batch (2) Visualizzazione (2) Visualizzazione

Introduzione a Visual Basic Lezione 1 Concetti base e istruzioni condizionali

Informa(ca Appun% dal laboratorio 2

4 3 4 = 4 x x x 10 0 aaa

Appunti del corso di Informatica 1 (IN110 Fondamenti) 6 Introduzione al linguaggio C

Esercizi su. Funzioni

Richiesta pagina PHP (es: index.php)

Appunti del corso di Informatica 1. 6 Introduzione al linguaggio C

Tipi primitivi. Ad esempio, il codice seguente dichiara una variabile di tipo intero, le assegna il valore 5 e stampa a schermo il suo contenuto:

Programmazione in Java Parte I: Fondamenti

STAMPA UNIONE DI WORD

3) Il seguente numerale A1F0 in base 16 a quale numero in base 10 corrisponde?

Le variabili. Olga Scotti

2. Spiegare brevemente qual è la funzione del compilatore e la sua importanza per il programmatore.

IL SISTEMA OPERATIVO IL SISTEMA OPERATIVO INTERFACCE TESTUALI INTERFACCE TESTUALI FUNZIONI DEL SISTEMA OPERATIVO INTERFACCE GRAFICHE

Raggruppamenti Conti Movimenti

Introduzione al Linguaggio C

Struttura di un programma Java

Corso di Laurea Ingegneria Informatica Fondamenti di Informatica

Variabili e tipi di dato

Convertitori numerici in Excel

Corso di Informatica

Università di Torino Facoltà di Scienze MFN Corso di Studi in Informatica. Programmazione I - corso B a.a prof.

Il programmatore che c e in noi Lezione 12 Statements

Funzioni. Il modello console. Interfaccia in modalità console


Dispensa di database Access

Programmazione in Java (I modulo) Lezione 3: Prime nozioni

Alcune regole di base per scrivere un programma in linguaggio C

void funzioneprova() { int x=2; cout<<"dentro la funzione x="<<x<<endl; }

Università degli Studi di Cassino Corso di Fondamenti di Informatica Puntatori. Anno Accademico 2010/2011 Francesco Tortorella

NOZIONI BASE SHELL E SCRIPT LINUX

Informatica B. Breve introduzione all ambiente di programmazione. Politecnico di Milano IV Facoltà di Ingegneria 2003

Calcolare il massimo di una lista

12 - Introduzione alla Programmazione Orientata agli Oggetti (Object Oriented Programming OOP)

Informatica B. Sezione D. Scuola di Ingegneria Industriale Laurea in Ingegneria Energetica Laurea in Ingegneria Meccanica

Eclipse - Nozioni Base

Concetto di Funzione e Procedura METODI in Java

RISOLUTORE AUTOMATICO PER SUDOKU

Capitolo 3. L applicazione Java Diagrammi ER. 3.1 La finestra iniziale, il menu e la barra pulsanti

SISTEMI OPERATIVI. Prof. Enrico Terrone A. S: 2008/09

Introduzione. Laboratorio di Calcolo Corso di Laurea in Fisica. Università degli Studi di Roma La Sapienza

COS È UN LINGUAGGIO? LINGUAGGI DI ALTO LIVELLO LA NOZIONE DI LINGUAGGIO LINGUAGGIO & PROGRAMMA

Java:Struttura di Programma. Fabio Scanu a.s. 2014/2015

Fondamenti di Informatica 2

GUIDA ALLA PROGRAMMAZIONE GRAFICA IN C

Corso integrato di informatica, statistica e analisi dei dati sperimentali Altri esercizi_esercitazione V

Definire all'interno del codice un vettore di interi di dimensione DIM, es. int array[] = {1, 5, 2, 4, 8, 1, 1, 9, 11, 4, 12};

APPUNTI SUL LINGUAGGIO DI PROGRAMMAZIONE PASCAL

Sistema operativo. Sommario. Sistema operativo...1 Browser...1. Convenzioni adottate

Breve riepilogo della puntata precedente:

APPELLO SCRITTO DI PROGRAMMAZIONE 1 CORSO DI LAUREA IN MATEMATICA UNIVERSITÀ DEGLI STUDI DI MILANO XI.2015

OTTAVA ESPERIENZA DI LABORATORIO. L elaborazione dei files in C

INFORMATICA 1 L. Mezzalira

Linguaggi di programmazione

Software di base. Corso di Fondamenti di Informatica

Fondamenti di Programmazione

Finestre grafiche. >> figure >> figure(n)

lo PERSONALIZZARE LA FINESTRA DI WORD 2000

Introduzione al Python

3. La sintassi di Java

Calcolatori Elettronici A a.a. 2008/2009

Dispensa di Informatica I.1


Libreria standard Java possiede un enorme libreria di classi standard organizzata in vari package che raccolgono le classi secondo un organizzazione

Algebra di Boole: Concetti di base. Fondamenti di Informatica - D. Talia - UNICAL 1. Fondamenti di Informatica

Javascript: il browser

Utilizzo delle formule in Excel

Laboratorio di Programmazione 1. Docente: dr. Damiano Macedonio Lezione 18 31/03/2014

SISTEMI DI NUMERAZIONE DECIMALE E BINARIO

Algoritmo. I dati su cui opera un'istruzione sono forniti all'algoritmo dall'esterno oppure sono il risultato di istruzioni eseguite precedentemente.

Fondamenti di Informatica e Laboratorio T-AB T-16 Progetti su più file. Funzioni come parametro. Parametri del main

PROGRAMMI UTENTE INTERPRETE COMANDI FILE SYSTEM GESTIONE DELLE PERIFERICHE GESTIONE DELLA MEMORIA GESTIONE DEI PROCESSI (NUCLEO) HARDWARE

EXCEL FUNZIONI PRINCIPALI

Il sistema operativo UNIX/Linux. Gli script di shell

Prova di Laboratorio di Programmazione

Tutorial sugli ambienti di sviluppo: Eclipse e NetBeans

Transcript:

http://root.cern.ch ROO C++ Èun com prog dedi Piano di lavoro ROOT é un framework per l analisi dati basato sul C++: E` un sistema estremamente flessibile, ma un po complesso da imparare, Introduzione alla progra che consente di scrivere un programma sfruttando una intera Il framework di analisi R infrastruttura dedicata all analisi Applicazioni all analisi d + piccolissima introduzione/ricapitolazione sulla programmazione + introduzione al framework di root + esempi

La linea di comando Riassunto Architettura di un PC '()*+,-./,01(, B,671*/, &586* Programma:!"# $%& 23'4 "5()*-167/8915:1-6*;<=1(1 >-?-@-AAA Il ciclo di istruzioni Leggere dati da input o l ciclo di memoria istruzioni Eseguire una operazione + Leggere Scrivere dati da risultato input in o memoria o + Eseguire su output una operazione + Scrivere L esecuzione risultato in passa memoria poi o su output all istruzione successiva... + Lʼesecuzione passa poi allʼistruzione successiva... Serie di istruzioni che vengono eseguite in sequenza dalla CPU M. Floris Introduzione alla programmazione Programma: Serie di istruzioni che vengono eseguite in sequenza dalla CPU

La linea di comando Riassunto linguaggio di programmazione Cosa è un linguaggio di programmazione? Un Un linguaggio di di programmazione permette di scriveredei dei comandi per per il il computer in inglese. Queste vengono tradotte in istruzioni per la CPU Queste da un vengono programma tradotte chiamato in istruzioni compilatore pero della interprete. CPU da un programma chiamato compilatore o interprete. Conta fino a 10! Interprete tradotto riga per riga durante l esecuzione Interprete Compilatore tradotto tradotto riga per nell insieme riga durante etrasformato lʼesecuzione in codice eseguibile Compilatore tradotto nellʼinsieme e trasformato in codice eseguibile Il C ed il C++ sono linguaggi compilati Il C ed il C++ sono linguaggi compilati... in genere!

Riassunto Vantaggi di compilatori ed interpreti Compilatori Esecuzione più veloce Errori nel codice vengono trovati prima che inizi l esecuzione La compilazione richiede tempo (es. vedere effetti di una piccola modifica) Poco portabile Medio-grande complessità e fase di produzione Interpreti Vedere subito cosa fa il programma Facilmente utilizzabile su sistemi operativi diversi Programma pù lento Un errore banale alla fine del codice potrebbe essere scoperto solo dopo alcune ore di esecuzione... Programmi molto semplici o in fase di sviluppo/prototipazione M. Floris Introduzione alla programmazione

Riassunto Il C ed il C++: Hello World Il C rinomato per la sua efficienza, e si imposto come linguaggio di riferimento per la realizzazione di software di sistema su gran parte delle piattaforme hardware moderne. Il C++ un linguaggio di programmazione orientato agli oggetti [... ]. stato sviluppato [...] nel 1983 come un miglioramento del linguaggio C (Wikipedia) Ogni corso di programmazione che si rispetti, inizia con il programma Hello World : #i n c l u d e <stdio.h> int main( int argc, char argv []) { printf ( Hello World\n ); return 0; M. Floris Introduzione alla programmazione

Le funzioni La linea di comando Riassunto Sintassi: Punteggiatura Sintassi Un linguaggio di programmazione segue delle Sintassi regole grammaticali rigide (sintassi) Un linguaggio di programmazione segue delle regole grammaticali rigide (sintassi) #i n c l u d e <stdio.h> int main( int argc, char argv []) { printf ( Hello World\n ); return 0; Diversi blocchi di codice sono racchiusi tra {... Le righe di istruzioni devono terminare con ; M. Floris Introduzione alla programmazione

Le funzioni Cosa significa programmare Introduzione al C/C++ Le funzioni La linea di comando Riassunto Il codice pu`o essere diviso in vari blocchi logici (funzioni), che raccolgono comandi coerenti tra loro. Il codice può essere diviso in vari blocchi logici (funzioni), che raccolgono comandi coerenti tra loro. #i n c l u d e <stdio.h> int main( int argc, char argv []) { printf ( Hello World\n ); return 0; printf è una funzione Se dovete riscrivere lo stesso codice piuʼ volte, conviene ragrupparlo in una funzione TIP: Se dovete riscrivere lo stesso codice piu volte, conviene ragrupparlo in una funzione Il compilatore mette a disposizione un gran numero di funzioni per svolgere alcuni compiti comuni (libreria standard). M. Floris Introduzione alla programmazione printf eʼ una funzione della libreria standard utile per scrivere del testo sullo schermo.

svolgere alcuni compiti comuni (libreria standard). printf è una funzione della libreria standard utile per scrivere del testo sullo schermo. ROOT fornice delle librerie supplementari con funzioni (e oggetti) di uso comune nell analisi dei dati! #i n c l u d e <stdio.h> int main( int argc, char argv []) { printf ( Hello World\n ); return 0; per usare una funzione di libreria è necessario includere la sua definizione printf è una funzione di libreria M. Floris Introduzione alla programmazione

ROOT fornice delle librerie supplementari con funzioni (e oggetti) di uso comune nellʼanalisi dei dati

La funzione Main La linea di comando Riassunto Ogni programma in C++ deve avere una funzione principale (main), che viene eseguita quanto parte il programma Ogni programma in C++ deve avere una funzione principale (main), che viene eseguita quanto parte il programma! Le funzioni possono restituire dei valori Le funzioni possono restituire dei valori! Ad esempio, la funzione Ad esempio, Quardrato(x) la funzione potrebbe Quardrato(x) restituire x potrebbe x. restituire x x. I valori I valori delle delle funzioni funzioni devono devono avereun un tipo, che chedefiniscedichevaloresi di si tratta tratta (es. (es. numero intero, intero, numero decimale, testo testo....). ) #i n c l u d e <stdio.h> int main( int argc, char argv []) { printf ( Hello World\n ); return 0; M. Floris Introduzione alla programmazione tipo di dato restituito da main main è il punto di ingresso al programma

Esempio di Utilizzo di una funzione Un esempio completo: #i n c l u d e <stdio.h> int Quadrato( int x); int main( int argc, char argv []) { int n = 3; int xquadro = Quadrato(n); printf ( Quadrato di %d: %d\n, n, xquadro); return 0; int Quadrato( int x) { return x x; M. Floris Introduzione alla programmazione

Esempio di Utilizzo di una funzione Un esempio completo: #i n c l u d e <stdio.h> int Quadrato( int x); Dichiarazione della funzione int main( int argc, char argv []) { int n = 3; Dichiarazione variabile x int xquadro = Quadrato(n); Uso quadrato e assegnazione printf ( Quadrato di %d: %d\n, n, xquadro); return 0; int Quadrato( int x) { return x x; M. Floris Introduzione alla programmazione I %d vengono sostituiti con i valori di x ed xquadro!

linea di comando Sia che si usi Linux, sia che si usi Windows eʼ utile saper usare la linea di comando Modo per dare istruzioni al PC alternativo a point-and-click con il mouse Piu` flessibile in molte circostanze: provate a cancellare con il mouse tutti i files che cominciano con pi e finiscono con ppo! Riga di comando del pi*ppo Indispensabile per usare ROOT!

le variabili Le Variabili Scelte Cicli Riassunto Variabili : celle di memoria dove vengono conservati i valori nei vostri Variabili : programmi. celle di memoria dove vengono conservati i valori nei vostri programmi. Come Come le funzioni, le funzioni, le le variabili devono essere dichiarate: dichiarate: Con la dichiarazione viene riservata Conuna la dichiarazione cella memoria viene riservata per la una variabile cella di memoria Con lʼassegnazione per la variabile viene inserito il valore Con nella l assegnazione cella viene inserito il valore nella cella 10... Cella riservata con definizione Tipo di variabile (intero) int var ; Nome della variabile Il punto e virgola! Si deve assegnare un valore alla variabile:... var = 10; Variabile inizializzata: int var = 10;; M. Floris Variabili ed Operatori Variabile inizializzata: int var = 10;

ItipidiVariabili Le Variabili Scelte Cicli Riassunto Esistono diversi tipi di variabili, a seconda del dato che deve essere conservato: Tipi int float double void char bool Numero intero Numero a virgola mobile Numero a virgola mobile (doppia precisione) Nessun valore (utile nella definizione di funzioni) Singolo carattere Vero/Falso float e double rappresentano lo stesso tipo di numero. double occupa più memoria ma è più preciso (consente più cifre significative) void è utile per definire funzioni che non restituiscono valori Per definire stringhe (sequenze di caratteri) sono necessari i puntatori, che vedremo tra qualche lezione. M. Floris Variabili ed Operatori

Le scelte le scelte Esempi che abbiamo visto finora: istruzioni eseguite in sequenza. Esempi che abbiamo visto finora: istruzioni eseguite in sequenza. Utile avere Utile anche avere dei anche modi dei per modi modificare per modificare il flusso il del flusso programma, del programma, ad esempio ad esempio per per fare fare delle delle scelte. scelte. prendi l ombrello Si piove? Alt, se c è vento prendi la giacca Altrimenti prendi gli occhiali da sole M. Floris Variabili ed Operatori

if - else Le Variabili Scelte Cicli Riassunto In C il costrutto principale utilizzato per fare delle scelte `e: if-[else if]-[else] if - else (else if e else sono opzionali) In C il costrutto principale utilizzato per fare delle scelte è: if-[else if]-[else] (else if e else sono opzionali) int main( int argc, char argv []) { bool rain, wind ; rain = true ; wind = false ; if (rain == true) { PrendiOmbrello (); else if (wind == true) { PrendiGiacca (); else { PrendiOcchialiSole (); Blocchi racchiusi tra { return 0; M. Floris Variabili ed Operatori

And, Or, Not Le Variabili Scelte Cicli Riassunto r e Tabelle di verità sono usare combinazioni logiche, con gli operatori: (&&) e or ( ) e not (!) Si possono usare combinazioni logiche, con gli operatori: and (&&) e or ( ) e not (!) and or 0 0 0 0 0 0 0 1 0 0 1 1 1 0 0 1 0 1 1 1 1 1 1 1 0 = falso 1 = vero Esempio: if (a && b (!c) ) {... C++ 0 corrisponde a falso, qualsiasi valore = 0 corrisponde a

li Operatori 4 operazioni + - * / Incremento (es. i ++) ++ Decremento (es. i ) Uguale == Diverso!= Maggiore > Maggiore o uguale >= Minore < Minore o uguale <= O logico E logico && Negazione Logica! Parentesi () M. Floris Variabili ed Operatori

Icicli I cicli Cicli Riassunto Esistono anche dei costrutti che permettono di eseguire azioni ripetitive: i cicli. Esistono anche dei costrutti che permettono di eseguire azioni ripetitive: icicli. Notare i ; valore iniziale condizione per continuare for( int i = 0; i < 10 ; i ++){ printf ( %d\n, i ); azione da eseguire ad ogni ciclo i può essere dichiarata al volo ma non è definita fuori da qui i non è definita fuori dal blocco di codice delimitato dalle graffe: queste parentesi definiscono lo scope della variabile i non eʼ definita fuori dal blocco di codice delimitato dalle graffe: queste parentesi definiscono lo scope della variabile M. Floris Variabili ed Operatori

Array Array Array Puntatori Riassunto Gli array sono insiemi di n variabili dello stesso tipo. Questo esempio crea un array con 10 elementi. Gli array sono insiemi di n variabili dello stesso tipo. Questo esempio crea un array con 10 elementi. nome della variabile tipo dimensione dell array int ar r [1 0] ; La dimensione è tra [ ] I valori dei singoli elementi vengono impostati in questo modo: arr [0] = 10; arr [1] = 3;... arr [9] = 4; Il primo elemento è 0 L ultimo elemento n-1! M. Floris Array e Puntatori

Immaginate di voler raccogliere i voti di una classe di 10 studenti, e di voler calcolare il voto medio: voto medio = voto 1 + voto 2 + + voto n n Senza gli array avreste bisogno di 10 variabili. Con l array: int voti [10] = { 5,6,10,7,8,6,4,3,6,7 ; float media = 0; for( int istud=0; istud <10; istud++){ media = media + voti [ istud ]; media = media / 10; Dichiarazione, inizializazione array. Notare le { Ciclo for per la somma M. Floris Array e Puntatori

Gli Oggetti Gli Oggetti ROOT Riassunto Definizione: oggetti Un oggetto è un insieme di dati con le funzioni che servono per manipolare questi dati Divisione del programma in unita auto-consistenti Programmazione ad oggetti introduce un livello di astrazione più alto: programmazione più vicina all utente che alla macchina Esempio: nei nostri programmi ci potrebbe essere un oggetto telescopio che contiene tutte le informazioni sul telescopio (numero di piani, distanza, etc e che permette di visualizzare segnali lasciati da particelle). Noi non scriveremo oggetti, ma useremo numerosi oggetti definiti da ROOT M. Floris Oggetti e introduzione a ROOT

Terminologia Gli Oggetti ROOT Riassunto L uso degli oggetti in C++ è associato ad una terminologia: Classe: un nuovo tipo di dato che rappresenta la struttura di un oggetto (esempio la classe istogramma, la classe TH1F ). Molti oggetti possono appartenere alla stessa classe. Oggetto: unavariabilecheimplementaunacertaclasse(esempio l oggetto h1 appartiene alla classe TH1F; più propriamente: è un istanza di TH1F) Metodo: una funzione appartenente ad una classe Membro: unavariabileappartenenteadunaclasse N.B. A volte il termine oggetto viene anche utilizzato con il significato di classe M. Floris Oggetti e introduzione a ROOT

Come usare gli oggetti ROOT Riassunto Oggetti si usano come normali variabili: classi definiscono nuovi tipi. Spesso si usano puntatori per riferirsi agli oggetti. Supponiamo di aver definito la classe TMacchina: due membri per il colore e la velocità e due metodi per impostare valori // Crea un oggetto normalmente TMacchina macchina1 ( rossa ); // Per usare un metodo, serve un. macchina1.setspeed(10); // Crea una macchina come puntatore TMacchina macchina2 = new TMacchina( blu ); // Per usare un metodo s i usa una > macchina2 >SetSpeed (100); Notare il. ela-> new nome classe serve quando si usa un puntatore M. Floris Oggetti e introduzione a ROOT Inizializzazione valori classe

ROOT Riassunto Esempio: L oggetto istogramma Questo esempio usa l oggetto TH1F di ROOT, che rapresenta un istogramma. Il grafico rappresenta il numero di studenti per lezione (ad esempio ci sono stati tra 6 e 9 studenti per 3 lezioni... ) M. Floris Oggetti e introduzione a ROOT

Riassunto Esempio istogramma: codice // Dichiarazione del l istogramma TH1F h = new TH1F( hstud, Studenti per lezione, 10, 0, 30); h > Fill (5); // Ci sono s t a t i 3 studenti h > Fill (10); // Ci sono s t a t i 10 studenti... h > Fill (25); // Serve un f i l l per ogni lezione h >Draw ( ) ; // viene disegnato l istogramma M. Floris Oggetti e introduzione a ROOT

Lʼinterprete di ROOT L interprete di ROOT Gli Oggetti ROOT Riassunto ROOT ROOT fornisce un insieme di classi per l analisi dati e CINT, uninterprete di C++. Come aprire l interprete: 1 start ->...-> Visual C++ ->...-> Visual Studio Command Prompt Questo apre una linea di comando, consapevole dell esistenza di Visual C++ nel sistema aprire un terminale digitare root 2 Digitare root Provare a dichiarare due variabili float, assegnare un valore a ciascuna e farne la somma con l interprete. M. Floris Oggetti e introduzione a ROOT

La Macro Tipo di ROOT I programmi scritti per ROOT vengono normalmente chiamati Macro. Piccole differenze rispetto ad un programma: la funzione main è sostituita da una funzione principale che deve avere lo stesso nome del file di codice File: Macro.cpp // include l i b r e r i e #include <stdio.h> // dichiarazione funzioni float Quadrato( float x); // Funzione Principale ( s i chiama come i l f i l e ) void Macro () { float xquadro = Quadrato (4); printf ( Quadrato di 3: %d\n, n, xquadro); return 0; // implementazione delle a l t r e funzioni float Quadrato( float x) { return x x;

Eseguire una Macro Usando le Macro non è più necessario compilare usando l editor di Visual C++, si può usare direttamente CINT. CINT/ROOT C/C++ I n t e r p r e t e r v e r s i o n 5. 1 6. 2 9, Jan 08,2008 Type? for help. Commands must be C++ statements. Enclose multiple statements between {. root [0].L Macro.C+ [...] root [1] Macro() Ciao root [2].x Macro.C+ Ciao.x carica la macro ed esegue la funzione principale al volo.l carica la macro le funzioni definite nella macro sono disponibili in CINT Senza il + alla fine del nome della macro, la macro viene interpretata. Consiglio: compilare quasi sempre. Provare a fare una macro che scriva Hello World M. Floris Oggetti e introduzione a ROOT

primo esempio - uso root 1) apri terminale 2) esegui root 3) crea l istogramma: root[] TH1F *hist_1 = new TH1F("hist_1", "Il mio primo histo", 100, 2, 200); 4) riempi l istogramma root[] hist_1.fill(50); root[] hist_1.fill(120,2); root[] hist_1.fill(130,2); 5) disegna l istogramma root[] hist_1.draw();

una macro root { TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4); TH1F *hpx = new TH1F("hpx","px",40,-4,4); TH1F *hpy = new TH1F("hpy","py",40,-4,4); Double_t px,py; for (Int_t i = 0; i < 50000; i++) { grandom->rannor(px,py); hpxpy->fill(px,py); hpx->fill(px); hpy->fill(py); hpxpy->draw("col"); 1) apri terminale 2) edita la macro 3) esegui la macro

una macro root { TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4); TH1F *hpx = new TH1F("hpx","px",40,-4,4); TH1F *hpy = new TH1F("hpy","py",40,-4,4); Double_t px,py; for (Int_t i = 0; i < 50000; i++) { grandom->rannor(px,py); hpxpy->fill(px,py); hpx->fill(px); hpy->fill(py); hpxpy->draw("col"); 1) apri terminale 2) edita la macro 3) esegui la macro http://root.cern.ch/root/html http://root.cern.ch/root/html/trandom.html http://root.cern.ch/root/html/trandom.html#trandom:rannor

esempio di un fit gaussiano { TH2F *hpxpy = new TH2F("hpxpy","py vs px",40,-4,4,40,-4,4); TH1F *hpx = new TH1F("hpx","px",40,-4,4); TH1F *hpy = new TH1F("hpy","py",40,-4,4); Double_t px,py; for (Int_t i = 0; i < 50000; i++) { grandom->rannor(px,py); hpxpy->fill(px,py); hpx->fill(px); hpy->fill(py); hpxpy->draw("col"); 1) apri terminale 2) edita la macro 3) esegui la macro 4) hpx->draw() 5) esegui un fit gaussiano tramite l interfaccia fit panel

un poʼ piuʼ complesso 1) scaricate: http://www.cern.ch/iosys/basic2.c 2) scaricate: http://www.cern.ch/iosys/basic.txt 3) eseguite basic2.c

un poʼ piuʼ complesso void basic2() { // example of macro to create can ntuple reading data from an ascii file. // This macro is a variant of basic.c //Author: Rene Brun TString dir = gsystem->unixpathname(ginterpreter->getcurrentmacroname()); dir.replaceall("basic2.c",""); dir.replaceall("/./","/"); TFile *f = new TFile("basic2.root","RECREATE"); TH1F *h1 = new TH1F("h1","x distribution",100,-4,4); TTree *T = new TTree("ntuple","data from ascii file"); Long64_t nlines = T->ReadFile(Form("%sbasic.dat",dir.Data()),"x:y:z"); printf(" found %lld points\n",nlines); T->Draw("y","z>2"); T->Write();

fit con funzione esterna Double_t fitf(double_t *v, Double_t *par) { Double_t arg = 0; arg = (v[0]/par[2] + par[1]); Double_t fitval = par[3]+par[0]*1/((tmath::sin(arg))*(tmath::sin(arg))*(tmath::sin(arg))*(tmath::sin(arg))); return fitval; void myfit() { float ang[9]={0,5,10,15; float cont[9]={3353,1543,96,6; float errx[9]={2,2,2,2; float erry[9]={100,100,10,5; TGraphErrors *gr3 = new TGraphErrors(4,ang,cont,errx,erry); TF1 *func = new TF1("fit",fitf,0,25,4); func->setparameters(35,10,5,10); func->setparnames("par0","par1","par2","par3"); gr3->setmarkerstyle(21); gr3->draw("ap"); gr3->fit("fit"); http://liviof.web.cern.ch/liviof/myfit.c

fit con funzione esterna