Für eine komplexe, reproduzierbare Selektion empfiehlt es sich die Schnitte in einer
richtigen C++ Klasse bzw. Funktion zu definieren und damit den Tree zu prozessieren.
Eine Möglichkeit ist mit TreeName->MakeClass("MyClass"); so eine Klasse mit Root zu erzeugen.
Eine zweite ähnliche Variante ist die Erzeugung einer
TSelector Klasse:
- h5000->MakeSelector("MyZ0Selector");
Vorher Tree File öffnen (TFile f("ntz0mhmc.root"))
- Generiert Dateien MyZ0Selector.h und MyZ0Selector.C mit Klasse MyZ0Selector.
-
MyZ0Selector ist abgeleitete Klasse von
TSelector
- Grundlegende Methoden:
Begin() zur Initialisierung (Histogramme anlegen, etc.)
Terminate() zum Abschliessen (Ergebnisse und Histogramme bzw abspeichern, etc.)
Process( entry ) zum Prozessieren, wird für jedes Event/entry gerufen, Schnitte anwenden, Histogramme füllen, etc.)
Process( ) Methode sollte Aufruf von GetEntry(entry); enthalten um erstmal komplettes Event einzulesen.
Zum Prozessieren des Trees am Besten:
.L MyZ0Selector.C+ // Klasse Kompilieren/Laden
MyZ0Selector *s1 = new MyZ0Selector() // Objekt anlegen
TFile f("ntz0e4.root") // Tree File oeffnen
h5000->Process(s1) // Tree Prozessieren
TSelector/MakeSelector ist modernere Variante von
MakeClass/MyClass.
flexibler, kann auch mit
PROOF (Paralleles Prozessieren mit Root) verwendet werden.
Weiteres Vorgehen für Z0 Versuch:
- Getrennte TSelector Klassen für jeweils Hadron- und Muon-Selektion erstellen
- Zum Prozessieren der verschiedenen Datensätze jeweils eigenes Objekt anlegen:
MyHadSelector *shd1 = new MyHadSelector() // Objekt anlegen
TFile f("ntz0e1.root") // Tree File oeffnen
h5000->Process(shd1) // Tree Prozessieren
...
MyHadSelector *shd2 = new MyHadSelector() // Objekt anlegen
TFile f("ntz0e2.root") // Tree File oeffnen
h5000->Process(shd2) // Tree Prozessieren
...
- Objekte enthalten anschliessend Histogramme und sonstige Ergebnisse der Selektionen.
Beispiele:
SomeZ0Selector.h
SomeZ0Selector.C
runZ0sel.C
Beispiel für Korrektur bzw Wirkungsquerschnitt-Berechnung: calcXS.C
Beispiel-Skript zum Überlagern von Histogrammen: stackHist.C
GDuckeck
2018-04-10