root einführung -...
TRANSCRIPT
![Page 1: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/1.jpg)
ROOT Einführung
Julian Glatzer ([email protected])
Fortgeschrittenenpraktikum
Felix Bührer ([email protected])
![Page 2: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/2.jpg)
Felix Bührer - ROOT Einführung25.02.2013 2
Was ist ROOT?
● ROOT ist ein am CERN entwickeltes Softwarepaket zur
Datenanalyse
(insbesondere in der Teilchenphysik)
● ROOT basiert auf C++ Klassen.
● Es ist nicht notwendig C++ im Detail zu können. Kenntnisse
schaden aber nicht.
● Wobei kann mir ROOT helfen?
– Datenverarbeitung (Einlesen, Fitten, ...)
– Visualisierung
![Page 3: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/3.jpg)
Felix Bührer - ROOT Einführung25.02.2013 3
Warum ROOT?
● ROOT ist nicht das einsteigerfreundlichste Programm, aber:
- es ist sehr einfach, häufig benutzte Schritte zu wiederholen
- sehr mächtige Statistik-Funktionen und sehr robustes Fitting
● Gerade fürs FP: Gute Möglichkeit Methoden an Hand
“einfacher” Beispiele auszuprobieren
![Page 4: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/4.jpg)
Felix Bührer - ROOT Einführung25.02.2013 4
● http://root.cern.ch
– User's Guide
in “Buchform” (PDFs)
– Reference Guide
Erklärung aller Klassen
– HowTo's
● Google Suche
– TH1F site:root.cern.ch
● Bei uns: Westbau 022, Tel: 8534, E-Mail
Hilfe
![Page 5: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/5.jpg)
Felix Bührer - ROOT Einführung25.02.2013 5
Installation
● Im CIP-Pool installiert
● Für die meisten großen Linux-Distributionen in den Paketquellen enthalten
(Ubuntu: apt-get install root-system
Fedora: yum install root)
● Mac OS X und Windows binaries auf
http://root.cern.ch/drupal/content/downloading-root
![Page 6: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/6.jpg)
Felix Bührer - ROOT Einführung25.02.2013 6
Erste Schritte
● Es gibt mehrere Möglichkeiten ROOT zu benutzen:
- über eine interaktive Shell (CINT)
- schreiben von Makros welche von ROOT ausgeführt werden
können
- Einbinden von ROOT-Klassen in kompilierfähigen C++-Code
- ROOT-Modul für Python
![Page 7: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/7.jpg)
Felix Bührer - ROOT Einführung25.02.2013 7
Erste Schritte: Interaktiv● Starten durch Eingabe von root oder
Klick auf Desktop Icon
● Root hat einen eingebauten C++
Interpreter (CINT)
● Mit den Tasten ↑ ↓ erreicht man die
zuletzt benutzten Befehle
● Beenden mit .q
(bzw .qqqqqq)
● Sollte nur zum Testen benutzt werden
![Page 8: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/8.jpg)
Felix Bührer - ROOT Einführung25.02.2013 8
● Makros automatisieren wiederkehrende
Arbeiten
● Werden in Textdateien geschrieben (z.B.
beispiel.C) und mit .x beispiel.C
ausgeführt
● Dateiname beispiel.C muss dem Namen
der Funktion void beispiel()
entsprechen.
void beispiel(){ gROOT->Reset(); cout << "Beispiel 1: "<<endl; cout << "Wurzel aus 2 = " << sqrt(2.) << endl;}
Erste Schritte: Makros
![Page 9: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/9.jpg)
Felix Bührer - ROOT Einführung25.02.2013 9
Sehr kurze C++ Einführungvoid vartypen(){ int ganz=1; double fliesskomma=2.5; TString text="Hello world!"; cout << text << endl;
//Rechnen double dkf=fliesskomma+ganz;
cout << fliesskomma << " + " << ganz << " = " << dkf << endl;
TH1F* myHist=new TH1F(“myHisto”,”Distribution”,10,0.,1.); myHist->Fill(1.);}
Funktionsdefinition Rückgabetyp name(<Typ> parameter)Aufruf: name() bzw. name(1)
Variablendefinition: Typ name=wert
Ausgabe: cout: Kommandozeileendl: end line
Komplexere Objekte:Typ* name=new Typ(Parameter)
Aufruf von Objektfunktion mit ->
![Page 10: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/10.jpg)
Felix Bührer - ROOT Einführung25.02.2013 10
ROOT Klassen
● ROOT bietet verschiedene Datenstrukturen in denen
Messwerte gespeichert werden können, für das FP relevant
sind:
- Histogramme (TH1F, TH2F)
- Graphen (TGraph, TGraphErrors)
● Außerdem: Funktions-Klasse (TF1), Definition von
benutzerdefinierten Funktionen
![Page 11: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/11.jpg)
Felix Bührer - ROOT Einführung25.02.2013 11
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 7
![Page 12: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/12.jpg)
Felix Bührer - ROOT Einführung25.02.2013 12
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 8
![Page 13: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/13.jpg)
Felix Bührer - ROOT Einführung25.02.2013 13
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
![Page 14: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/14.jpg)
Felix Bührer - ROOT Einführung25.02.2013 14
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 11
![Page 15: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/15.jpg)
Felix Bührer - ROOT Einführung25.02.2013 15
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 114 + 5 = 9
![Page 16: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/16.jpg)
Felix Bührer - ROOT Einführung25.02.2013 16
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 114 + 5 = 95 + 4 = 9
![Page 17: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/17.jpg)
Felix Bührer - ROOT Einführung25.02.2013 17
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 114 + 5 = 95 + 4 = 92 + 5 = 7
...
![Page 18: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/18.jpg)
Felix Bührer - ROOT Einführung25.02.2013 18
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 114 + 5 = 95 + 4 = 92 + 5 = 7
...
![Page 19: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/19.jpg)
Felix Bührer - ROOT Einführung25.02.2013 19
Histogramme
dienen der Visualisierung von Wahrscheinlichkeitsverteilungen
6 + 1 = 72 + 6 = 82 + 3 = 5
6 + 5 = 114 + 5 = 95 + 4 = 92 + 5 = 7
...
1/6
5/36
1/9
1/12
1/18
1/36
![Page 20: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/20.jpg)
Felix Bührer - ROOT Einführung25.02.2013 20
Histogramme● “Buchen”
● Mehrfach füllen
● Zeichnen
wobei Option=“”, “E” (√N Fehlerbalken), “SAME” (Histogramm über
altes Histogramm), “C” (glatte Kurve), “L” (Linie) oder Kombinationen z.B.
“SAME,E”.
TH1F* myHist=new TH1F(“myHisto”,“Distribution”,10,0.,1.);
myHist->Fill(x);
myHist->Draw(“Option”);
Name des Objekts Name beim Speichern Titel Anzahl Bins
X Achse von bis
![Page 21: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/21.jpg)
Felix Bührer - ROOT Einführung25.02.2013 21
Histogramme
void histogram(){ gROOT->Reset(); gROOT->SetStyle("Plain"); TH1F* myHist = new TH1F("myHist","Distribution”, 10,0.,1.); myHist->Fill(0.37); //Bin 4 myHist->Fill(0.35); //Bin 4 myHist->Fill(0.78); //Bin 8 myHist->Fill(0.51); //Bin 6 myHist->Draw();}
Für schönere Grafik
![Page 22: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/22.jpg)
Felix Bührer - ROOT Einführung25.02.2013 22
Histogramme
void histogram(){ gROOT->Reset(); gROOT->SetStyle("Plain"); TH1F* myHist = new TH1F("myHist","Distribution”
,10,0.,1.); myHist->Fill(0.37); //Bin 4 myHist->Fill(0.35); //Bin 4 myHist->Fill(0.78); //Bin 8 myHist->Fill(0.51); //Bin 6 myHist->Draw();}
Für schönere Grafik
![Page 23: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/23.jpg)
Felix Bührer - ROOT Einführung25.02.2013 23
Rechtsklickmenüs
Viele Funktionen sindauch per Rechtsklick auf das passende Objekt erreichbar.
![Page 24: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/24.jpg)
Felix Bührer - ROOT Einführung25.02.2013 24
Optionen● Für Linien
Hist->SetLineStyle(x); Hist->SetLineColor(x); Hist->SetLineWidth(x);
● Für Marker
Hist->SetMarkerStyle(x); Hist->SetMarkerColor(x); Hist->SetMarkerSize(x);
● Für Flächen
Hist->SetFillStyle(x); Hist->SetFillColor(x);
● Für Achsen
Hist->GetXaxis()->SetTitle(“#phi_{2}^{2}”);
Hist->GetYaxis()->SetRangeUser(-1.,1.);
● Für den Titel
Hist->SetTitle(“Titel”);
Latex mit # statt \
![Page 25: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/25.jpg)
Felix Bührer - ROOT Einführung25.02.2013 25
Farben, Linien, Marker, ...
![Page 26: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/26.jpg)
Felix Bührer - ROOT Einführung25.02.2013 26
Farben, Linien, Marker, ...
http://root.cern.ch/root/html522/TAttLine.htmlhttp://root.cern.ch/root/html522/TAttFill.htmlhttp://root.cern.ch/root/html522/TAttMarker.html
![Page 27: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/27.jpg)
Felix Bührer - ROOT Einführung25.02.2013 27
Eine typische FP-Auswertung
z.B. Spannung in 0.1s Schritten
● Aus dem Versuch: Messwerte in Textdatei
● Ziel ist es die Werte darzustellen und eine
Anpassung durchzuführen
1. Einlesen der Daten
2. Füllen der Messwerte in geeignete
Datenstruktur
3. Anpassung einer Funktion an die Daten
peaks.dat:
322323322312314335291331329317318337336364310etc.
![Page 28: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/28.jpg)
Felix Bührer - ROOT Einführung25.02.2013 28
Einlesen von Datenvoid readFile(){ gROOT->Reset(); gROOT->SetStyle("Plain"); ifstream in; //Input Stream in.open("peaks.dat"); //Oeffnen der Datei Float_t xi; Int_t nlines = 0;
TH1F* _histo = new TH1F("_histo","Peaks", 1250, 0., 125 );
while( !in.eof() ){ //Bis zum Ende der Datei if(in >> xi){ //Einlesen einer Zeile _histo->SetBinContent( nlines, xi );
//Setzen des Bin Inhalts nlines++; cout << nlines << ": " << xi <<endl; } }
cout<<"found "<<nlines<<" data points"<<endl; in.close(); _histo->Draw();}
peaks.dat:
322323322312314335291331329317318337336364310etc.
![Page 29: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/29.jpg)
Felix Bührer - ROOT Einführung25.02.2013 29
Füllen in ein Histogrammvoid readFile(){ gROOT->Reset(); gROOT->SetStyle("Plain"); ifstream in; //Input Stream in.open("peaks.dat"); //Oeffnen der Datei Float_t xi; Int_t nlines = 0;
TH1F* _histo = new TH1F("_histo","Peaks", 1250, 0., 125 );
while( !in.eof() ){ //Bis zum Ende der Datei if(in >> xi){ //Einlesen einer Zeile _histo->SetBinContent( nlines, xi );
//Setzen des Bin Inhalts nlines++; cout << nlines << ": " << xi <<endl; } }
cout<<"found "<<nlines<<" data points"<<endl; in.close(); _histo->Draw();}
peaks.dat:
322323322312314335291331329317318337336364310etc.
![Page 30: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/30.jpg)
Felix Bührer - ROOT Einführung25.02.2013 30
Füllen in ein Histogrammvoid readFile(){ gROOT->Reset(); gROOT->SetStyle("Plain"); ifstream in; //Input Stream in.open("peaks.dat"); //Oeffnen der Datei Float_t xi; Int_t nlines = 0;
TH1F* _histo = new TH1F("_histo","Peaks", 1250, 0., 125 );
while( !in.eof() ){ //Bis zum Ende der Datei if(in >> xi){ //Einlesen einer Zeile _histo->SetBinContent( nlines, xi );
//Setzen des Bin Inhalts nlines++; cout << nlines << ": " << xi <<endl; } }
cout<<"found "<<nlines<<" data points"<<endl; in.close(); _histo->Draw();}
peaks.dat:
322323322312314335291331329317318337336364310etc.
![Page 31: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/31.jpg)
Felix Bührer - ROOT Einführung25.02.2013 31
1D-Fit
![Page 32: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/32.jpg)
Felix Bührer - ROOT Einführung25.02.2013 32
Einschub: FunktionenROOT kann
● exp(x), sin(x), log(x), sqrt(x)
● gaus (mit 1 s!), Landau,...
● TMath Funktionen
http://root.cern.ch/root/html522/TMath.html
● Beliebige Funktionen
void function(){ gROOT->Reset(); gROOT->SetStyle("Plain"); TF1 *myFunc = new TF1("myFunction", "sin(x)/x",0.,6.5.); myFunc->Draw(); myFunc->GetXaxis()->SetTitle("x"); myFunc->GetYaxis()->SetTitle("f(x)=sin(x)/x"); myFunc->SetTitle("Funktion");}
![Page 33: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/33.jpg)
Felix Bührer - ROOT Einführung25.02.2013 33
1D-Fit
.
.
.
_histo->Draw(); TF1* fitFunc = new TF1("fitFunc","pol1(0)+gaus(2)",0,130); fitFunc->SetParameter(3,70); fitFunc->SetParameter(4,5); fitFunc->SetLineColor(kRed); _histo->Fit("fitFunc","", "", 55,83); cout<<" --------------------------------" <<endl; cout<<" chi2/dof: "<< fitFunc->GetChisquare()/fitFunc->GetNDF()<<endl; }
Gaussfunktion [2]*exp(-((x-[3])/(2*[4]))^2) (Parameternummerierung startet bei 2)
Polynom ersten Grades [0]+[1]*x Parameternummerierung startet bei 0)
Startwerte setzen
Fit durchführen
![Page 34: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/34.jpg)
Felix Bührer - ROOT Einführung25.02.2013 34
1D-Fit
.
.
.
_histo->Draw(); TF1* fitFunc = new TF1("fitFunc","pol1(0)+gaus(2)",0,130); fitFunc->SetParameter(3,70); fitFunc->SetParameter(4,5); fitFunc->SetLineColor(kRed); _histo->Fit("fitFunc","", "", 55,83); cout<<" --------------------------------" <<endl; cout<<" chi2/dof: "<< fitFunc->GetChisquare()/fitFunc->GetNDF()<<endl; }
Gaussfunktion [2]*exp(-((x-[3])/(2*[4]))^2) (Parameternummerierung startet bei 2)
Polynom ersten Grades [0]+[1]*x Parameternummerierung startet bei 0)
Startwerte setzen
Fit durchführen
![Page 35: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/35.jpg)
Felix Bührer - ROOT Einführung25.02.2013 35
Kovarianzmatrix
.
.
.
_histo->Draw(); TF1* fitFunc = new TF1("fitFunc","pol1(0)+gaus(2)",0,130); fitFunc->SetParameter(3,70); fitFunc->SetParameter(4,5); fitFunc->SetLineColor(kRed); _histo->Fit("fitFunc","", "", 55,83); cout<<" --------------------------------" <<endl; cout<<" chi2/dof: "<< fitFunc->GetChisquare()/fitFunc->GetNDF()<<endl;
TVirtualFitter *fitter = TVirtualFitter::GetFitter(); TMatrixD *matrix = new TMatrixD(5,5,fitter->GetCovarianceMatrix()); matrix->Print(); }
Gaussfunktion [2]*exp(-((x-[3])/(2*[4]))^2) (Parameternummerierung startet bei 2)
Polynom ersten Grades [0]+[1]*x Parameternummerierung startet bei 0)
Startwerte setzen
Fit durchführen
![Page 36: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/36.jpg)
Felix Bührer - ROOT Einführung25.02.2013 36
Kovarianzmatrix
.
.
.
_histo->Draw(); TF1* fitFunc = new TF1("fitFunc","pol1(0)+gaus(2)",0,130); fitFunc->SetParameter(3,70); fitFunc->SetParameter(4,5); fitFunc->SetLineColor(kRed); _histo->Fit("fitFunc","", "", 55,83); cout<<" --------------------------------" <<endl; cout<<" chi2/dof: "<< fitFunc->GetChisquare()/fitFunc->GetNDF()<<endl;
TVirtualFitter *fitter = TVirtualFitter::GetFitter(); TMatrixD *matrix = new TMatrixD(5,5,fitter->GetCovarianceMatrix()); matrix->Print(); }
Gaussfunktion [2]*exp(-((x-[3])/(2*[4]))^2) (Parameternummerierung startet bei 2)
Polynom ersten Grades [0]+[1]*x Parameternummerierung startet bei 0)
Startwerte setzen
Fit durchführen
![Page 37: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/37.jpg)
Felix Bührer - ROOT Einführung25.02.2013 37
2D-Histogrammevoid twodhistos(){ gROOT->Reset(); gStyle->SetPalette(1); TCanvas *c1 = new TCanvas("c1","Canvas fuer viele Histogramme",800,800); c1->Divide(2,2); TH2F *h2 = new TH2F("h2","Energie vs Impuls",40,-5.,5.,40,-5.,5.); h2->FillRandom("gaus",6000); h2->GetXaxis()->SetTitle("Energie E (GeV)"); h2->GetYaxis()->SetTitle("Impuls p (GeV)"); h2->GetZaxis()->SetTitle("Ereignisse"); TF2* f2=new TF2("func2","sin(x)*sin(y)/(x*y)",-10.,10.,-10.,10.); c1->cd(1); h2->GetXaxis()->SetTitleOffset(1.5); h2->GetYaxis()->SetTitleOffset(1.5); h2->GetZaxis()->SetTitleOffset(1.2); h2->Draw("LEGO2"); c1->cd(2); h2->Draw("COL"); c1->cd(3); f2->Draw("SURF1"); c1->cd(4); f2->Draw("COLZ");}
![Page 38: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/38.jpg)
Felix Bührer - ROOT Einführung25.02.2013 38
2D-Histogramme
![Page 39: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/39.jpg)
Felix Bührer - ROOT Einführung25.02.2013 39
void graph(){ gROOT->Reset(); gROOT->SetStyle("Plain");
const int n = 300;//const wird zur Array Initialisierung benoetigt double x[n]; double y[n];
ifstream in; //Input Stream in.open("peak.dat"); //Oeffnen der Datei Int_t nlines = 0;
while( !in.eof() && nlines < n ){ //Bis zum Ende der Datei if(in >> x[nlines] >> y[nlines]){ //Einlesen einer Zeile nlines++; cout << nlines << ": " << x[nlines] << " " << y[nlines] << endl; } }
cout << "found "<< nlines << " data points."<<endl; in.close();
TGraph *gr = new TGraph(n,x,y); gr->Draw("AL");//Option A zeichnet Achsen, L Linien}
Graphen
Für nicht-äquidistante Messpunkte
![Page 40: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/40.jpg)
Felix Bührer - ROOT Einführung25.02.2013 40
void graph(){ gROOT->Reset(); gROOT->SetStyle("Plain");
const int n = 300;//const wird zur Array Initialisierung benoetigt double x[n]; double y[n];
ifstream in; //Input Stream in.open("peak.dat"); //Oeffnen der Datei Int_t nlines = 0;
while( !in.eof() && nlines < n ){ //Bis zum Ende der Datei if(in >> x[nlines] >> y[nlines]){ //Einlesen einer Zeile nlines++; cout << nlines << ": " << x[nlines] << " " << y[nlines] << endl; } }
cout << "found "<< nlines << " data points."<<endl; in.close();
TGraph *gr = new TGraph(n,x,y); gr->Draw("AL");//Option A zeichnet Achsen, L Linien}
Graphen
Für nicht-äquidistante Messpunkte
![Page 41: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/41.jpg)
Felix Bührer - ROOT Einführung25.02.2013 41
Graphen mit Fehlernvoid grapherrors(){ gROOT->Reset(); gROOT->SetStyle("Plain");
const int n = 10;//const is need in array initialization double x[n] = {-0.22, 0.05, 0.25, 0.35, 0.5, 0.61,0.7,0.85,0.89,0.95}; double y[n] = {1,2.9,5.6,7.4,9,9.6,8.7,6.3,4.5,1}; double ex[n] = {.05,.1,.07,.07,.04,.05,.06,.07,.08,.05}; double ey[n] = {.8,.7,.6,.5,.4,.4,.5,.6,.7,.8}; TGraphErrors *gr = new TGraphErrors(n,x,y,ex,ey); gr->Draw("ALP");}
![Page 42: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/42.jpg)
Felix Bührer - ROOT Einführung25.02.2013 42
Zusammenfassung● Root zu benutzen ist eigentlich gar
nicht so schwer
● Die Online-Hilfe ist empfehlenswert
unverzichtbar
● “Google ist dein Freund”
● Ansonsten eure Betreuer fragen.
http://root.cern.ch
ROOT is user friendly (but it picks its friends carefully)
![Page 43: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/43.jpg)
Felix Bührer - ROOT Einführung25.02.2013 43
Zum weiterlesen
Diese Einführung mit allen Code-Beispielen ist zu finden unter:
wwwhep.physik.uni-freiburg.de/fp/root2012-2/
Falls es Probleme mit den Beispielen gibt -> Kurze
Rückmeldung an mich.
![Page 44: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/44.jpg)
Felix Bührer - ROOT Einführung25.02.2013 44
Backup
![Page 45: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/45.jpg)
Felix Bührer - ROOT Einführung25.02.2013 45
Root Dateien
Histogramm speichern
Histogramm laden
void readHisto(){ gROOT->Reset(); gROOT->SetStyle("Plain"); TFile* _file=new TFile("histo.root","OPEN"); TH1F* _myH1 = (TH1F*)_file->Get("myHisto"); _myH1->Draw();}
void writeHisto(){ gROOT->Reset(); gROOT->SetStyle("Plain"); TFile* _file=new TFile("histo.root","RECREATE"); TH1F* myHist = new TH1F("myHisto","Distribution",10,0.,1.); myHist->Fill(0.37); myHist->Fill(0.35); myHist->Fill(0.78); myHist->Fill(0.51); myHist->Write(); _file->Close();}
TBrowser b
Oder interaktiv
Histogramm laden
new TBrowser
![Page 46: ROOT Einführung - hacol13.physik.uni-freiburg.dehacol13.physik.uni-freiburg.de/fp/root2013-1/FP_Root_Felix.pdf · 25.02.2013 Felix Bührer - ROOT Einführung 2 Was ist ROOT? ROOT](https://reader030.vdocuments.site/reader030/viewer/2022040117/5d5a4fe588c993913d8b8f71/html5/thumbnails/46.jpg)
Felix Bührer - ROOT Einführung25.02.2013 46
PyROOT
import ROOThist = ROOT.TH1F("hist", "hist", 20, -5, 5)hist.FillRandom("gaus",10000)hist.Draw()raw_input("Press Enter to Exit")
● Wer sich in Python sicherer fühlt als mit C++: Alle
ROOT-Klassen existieren als Python-Modul
● Um Python mit ROOT benutzen zu können: ROOT-Modul in
$PYTHONPATH eintragen