TRUEE-Anleitung

SMD Hands-On: Entfalten mit TRUEE
Umgebungsvariablen Um TRUEE (mit ROOT) laufen lassen zu können, müssen einige Umgebungsvariablen
gesetzt sein. Ihr könnt diese direkt in der Shell definieren. Besser ist es jedoch, sie permanent zu definieren, so
dass jede neu geöffnete Shell sie kennt.
Unter Linux habt ihr in eurem Home-Verzeichnis (cd ∼) die Datei .bashrc, wobei der Punkt vorne wichtig
ist. Wenn ihr sie nicht habt, könnt ihr sie euch erstellen. Unter Mac OS heißt die entsprechende Datei
.bash_profile . Folgende Zeilen sollten - angepasst an die Pfade auf eurem Rechner - in der .bashrc auftauchen:
export
export
export
export
export
ROOTSYS=/home/doert/software/root/root_v5.26.00e
TRUEE_BUILD=/home/doert/software/TRUEE/trunk/build
LD_LIBRARY_PATH=$LD_LIBRARY_PATH:$ROOTSYS/lib:$TRUEE_BUILD/lib
DYLD_LIBRARY_PATH=$LD_LIBRARY_PATH
PATH=$ROOTSYS/bin:$TRUEE_BUILD/bin:$PATH
Installation: Zum Installieren von TRUEE müssen bereits ROOT und cmake installiert sein.
In ..../TRUEE/trunk/ befindet sich das Textfile INSTALL, das eine Installationsanleitung liefert. Die wesentlichen
Schritte sind
• cd trunk/build/
cmake ../
Damit wird aus den einzelnen Source Code Dateien die Library libTrueeCore gebildet.
Evtl. ist es nötig, beim Aufruf den ganzen Pfad eurer cmake Installation anzugeben:
/home/doert/software/cmake/bin/cmake ../
• Jetzt muss noch das executable gebaut werden. Dies macht man im example/build Ordner:
cd trunk/example/build
cmake ../
Jetzt müsste in trunk/example/build/bin die ausführbare Datei truee liegen, zusammen mit Beispielen für
Parameterfiles.
Textdateien öffnen und editieren: Die Textfiles, wie z.B. INSTALL oder parameter.config könnt ihr
mit einem beliebigen Texteditor öffnen. Falls ihr keinen installiert habt, dürfte VI funktionieren. Den gibt es
eigentlich immer.
vi INSTALL öffnet die Datei. Mit ”i” wechselt man in den INSERT Modus, den man mit ”Esc” wieder verlässt.
Im INSERT Modus kann man schreiben und löschen, wie gewohnt. Außerhalb des INSERT Modus funktionieren
Steuerbefehle wie
• :w speichern
• :x speichern und verlassen
• :q verlassen ohne zu speichern
ROOT Dateien im Browser ansehen:
root
new TBrowser
ROOT Dateien lassen sich am einfachsten im TBrowser ansehen:
1
Beispieldaten: In TRUEE/example_data/:
• data.root: Vom Experiment genommene Daten. Die wahre Verteilung kennt man für Daten normalerweise nicht. Für einen späteren Vergleich mit dem Entfaltungsergebnis ist sie bei diesem Beispiel allerdings
doch enthalten.
Im ROOT Tree tree gibt es
– x_m: gemessene Verteilung der getriggerten Events
– x_true: wahre Verteilung der getriggerten Events (normalerweise nicht in Datenfiles vorhanden)
Zusätzlich gibt es das Histogramm hTrue, das die wahre physikalische Verteilung enthält. Diese beinhaltet
alle Events, also nicht nur die Events, die das Experiment getriggert haben. Auch diese Verteilung ist
normalerweise für Daten nicht vorhanden (andernfalls müssten wir nicht entfalten).
• response.root: Monte Carlo Events, die zum Erstellen der Response-Matrix dienen.
Im ROOT Tree tree gibt es
– x_m: gemessene Verteilung
– x_true: wahre Verteilung
Zusätzlich gibt es wieder das Histogramm hTrue, das die volle generierte Verteilung der MC events (vor
dem Experiment-Trigger) enthält. Diese wird benötigt, falls eine Akzeptanzkorrektur durchgeführt werden soll.
TRUEE ausführen: In /home/doert/software/TRUEE/trunk/example/build/bin
liegt die Datei example-parameter.config.
Diese Datei ist die Beispiel-Steuerkarte für TRUEE. Hier können die Pfade und Dateinamen der zu entfaltenden
Daten und des passenden Monte Carlos definiert werden, Binnings für intern verwendete Histogramme und das
finale Ergebnis-Histogramm gewählt werden und die Regularisierungsstärke bestimmt werden. Das Zeichen #
leitet hier Kommentare ein. Zunächst solltet ihr die Beispiel-Steuerkarte umbenennen:
mv example-parameter.config parameter.config
da TRUEE standardmäßig die Datei parameter.config sucht und verwendet. Jetzt könnt ihr editieren und
ausprobieren. Die wichtigsten Keywords sind hier kurz erläutert:
# Hier kann ein Projekttitel gewählt werden
title: TRUEE example - toy Monte Carlo unfolding
# Um TRUEE im Testmodus zu starten, muss "mode: test" gesetzt sein.
# Falls nicht, läuft TRUEE im normalen Modus und entfaltet die Daten.
mode: notest
# printflag gibt an, ob man den Textoutput sehen will oder nicht
printflag: 1
# Hier gibt man die Anzahl aller Observablen an, die verwendet werden.
# Dazu zählen alle Größen außer der Zielvariablen.
number_all_variables: 1
# Hier wird der Pfad und Dateiname des Datenfiles angegeben.
source_file_data: PFAD/data.root
# Der Name des ROOT Tree’s, der die verwendeten Parameter enthält,
# wird hier angegeben. In unserem Beispiel heißt er einfach "tree"
roottree_data: tree
# Das gleiche passiert für das Monte Carlo File.
source_file_moca: PFAD/response.root
roottree_moca: tree
2
# branch_x definiert den Namen der Zielvariablen, also der Variablen,
# deren Verteilung wir suchen.
branch_x: x_true
# limits_x gibt den Wertebereich an, in dem TRUEE arbeiten soll.
limits_x: 4 16
# Hier definiert man den Namen der ersten Observablen, die verwendet wird.
branch_y: x_m
# Die Anzahl der Bins dieser Observablen wird gewählt.
# Diese bestimmt die Feinheit der Response-Matrix in dieser Dimension.
number_y_bins: 50
# Die Anzahl der Freiheitsgrade bestimmt die Regularisierungsstärke.
# Wenige Freiheitsgrade bedeuten starke Regularisierung.
number_deg_free: 16
# minimale Anzahl Freiheitsgrade,
# die vom Programm ausprobiert wird
max_number_deg_free: 16 # maximale Anzahl die probiert wird.
# Wenn beide Angaben gleich sind, wird nur dieser Wert verwendet.
# Anzahl der Knoten: Geben quasi das interne Binning der gesuchten Verteilung an.
# Knoten sind Stützstellen für Spline Fits, aus denen die Verteilung gebildet wird.
number_knots: 50 # minimale Anzahl Knoten, die verwendet wird.
max_number_knots: 51 # maximale Anzahl Knoten, die ausprobiert wird
# Minimale und maximale Anzahl der Bins des Ergebnishistogramms können angegeben werden.
# Falls nicht angegeben, wählt TRUEE die Anzahl der Bins selbst.
# Es sollten nie wesentlich mehr Bins als Anzahl Freiheitsgrade gewählt werden.
number_bins: 16
max_number_bins: 16
# Die Grenzen des Ergebnis-Histogramms können selbst gewählt werden.
# Falls nicht angegeben, bestimmt TRUEE sie selbst.
# bin_limits: 4 4.5 5 5.5 6 6.5 7 7.5 8 8.5 9 9.5 10 10.5 11 11.5 12 12.5 13 13.5 14 14.5 15 15.5 16
# Grundsätzlich entfaltet TRUEE die Verteilung der getriggerten Events.
# Das Programm kann jedoch auch die Akzeptanz des Detektors berücksichtigen und damit
# auf die wahre Verteilung der Daten vor dem Experiment-Trigger rückschließen.
# Die Akzeptanz bestimmt TRUEE aus dem Verhältnis der generierten Monte Carlo Events
# zu den Monte Carlo Events, die das Experiment getriggert haben.
# Um solch eine Akzeptanzkorrektur durchzuführen muss TRUEE also die Verteilung wissen,
# mit der die Monte Carlo Events produziert wurden.
# Da in unserem Beispiel eine flache Verteilung vorliegt, ist der Wert nicht x-abhängig,
# sondern eine Konstante.
# Wenn mc_func nicht definiert ist, entfaltet TRUEE die Verteilung der getriggerten Events
#
mc_func: 62500.
Jetzt kann TRUEE im gleichen Verzeichnis (noch immer /home/doert/software/TRUEE/trunk/example/build/bin)
gestartet werden:
./truee
3
Der TRUEE Output: TRUEE gibt eine Reihe von ROOT Dateien aus, die sich nun im Verzeichnis
trunk/example/build/bin
befinden. Diese können nun mit ROOT’s TBrowser geöffnet und angesehen werden.
Die wichtigsten Output Dateien sind
• MCfileA.root Hier lässt sich an Hand der Monte Carlo Simulationen überprüfen, ob die gewählte(n)
Observable(n) gut mit der Zielvariablen korreliert sind.
• CheckParameterSets.root Hier lässt sich überprüfen, ob die Datenpunkte des Ergebnis-Histogramms zu
stark miteinander korreliert sind. Die enthaltenen Plots sind vor allem sinnvoll, wenn Bereiche in der
Anzahl der Freiheitsgrade und der Knotenanzahl gewählt wurden. Ein großer Korrelationswert deutet auf
ein tendenziell schlechteres Entfaltungsergebnis hin.
• DataPointCorrelation.root Hier findet sich der ”‘Wäscheleinenplot”’. Er zeigt eine Verteilung von
p-Werten (deren Herkunft hier jetzt nicht erläutert werden soll). Eine gute Entfaltung zeichnet sich
durch eine ungefähre Gleichverteilung dieser Werte aus. Hängt die Wäscheleine durch, spricht das für ein
schlechtes Entfaltungsergebnis.
• ResultFile.root Hier befinden sich die Ergebnis-Histogramme der Entfaltung.
• CheckUnfolding.root Mit dieser Datei kann die Konsistenz des Entfaltungsergebnisses überprüft werden.
Die Observablen-Verteilung der Datenevents VOR der Entfaltung werden verglichen mit der ObservablenVerteilung der durch den Entfaltungsfit umgewichteten Monte Carlo Events. Dies ist vor allem sinnvoll,
wenn TRUEE Observablen bekannt sind, die nicht beim Entfalten verwendet werden. Die Verteilung in
den Observablen, die im Entfaltungsfit benutzt werden, sollten ja ohnehin gleich sein.
Im Testmode gibt es zusätzlich noch das File
• TestModeCompareDist.root
Vergleich mit der wahren Verteilung: In dem Ordner TRUEE/example_data/ liegt die Datei vergleich.C.
Dies ist ein ROOT Macro, mit dem das TRUEE Ergebnis mit der wahren Verteilung, nach der die Beispieldaten
generiert wurden, verglichen werden kann. Sie lässt sich als Textfile editieren. In Zeile 32 und 33 muss YOURPATH
durch den entprechenden Pfad auf eurem Rechner ersetzt werden. Dann lässt sich das Macro ausführen, wobei
man das Entfaltungsergebnis aus ResultFile.root durch Angabe der Anzahl von Knoten, Freiheitsgraden und
Bins auswählen muss. Folgende Eingabe vergleicht ein TRUEE Ergebnis, das mit 50 Knoten, 20 Freiheitsgraden
und 18 Bins erstellt wurde, mit der wahren Verteilung:
root
.L vergleich.C+
vergleich(50,20,18)
Dies macht jedoch hier nur Sinn, wenn eine Akzeptanzkorrektur beim Entfalten durchgeführt wurde.
4