by Jonas Eppelt, Filipp Gostner, Isabel Haide, Torben Ferber,
Basierend auf Jupyter-Notebooks werden die grundlegende Prinzipien im Arbeiten mit Teilchendetektoren wie Belle~II vermittelt. Mit interaktiven Widgets lernt man wie die Ladung, der Impuls und die Energie von Teilchen bestimmt wird. Diese Informationen werden kombiniert um verschiedene Teilchen zu identifizieren. Dadurch können Ereignisse interpretiert werden und nach neuen Teilchen wie Dunkler Materie gesucht werden.
Clone dieses Repository mit
git clone https://git.scc.kit.edu/ukjyf/belleii_masterclass.git
Diese Masterclass nutzt python3 und benötigt zusätzliche packete die folgendermasen installiert werden können:
pip install jupyterlab numpy pandas tables matplolib ipympl jupyterlab-git jupyter-lsp ipywidgets=8.0.4
Um die Notebooks zu starten, starte jupyter lab
jupyter lab
und wähle eines der Notebooks Introduction.ipynb
, Event_Interpretation.ipynb
oder Fehlen_hier_Teilchen.ipynb
aus.
Im Verzeichnis ausführen:
python3 -m pip install -e .
TrackingWidget(particles_manager,...)
Stellt ein Teilchen Tracker dar. Der Tracker ließt aus dem particles_manager die Daten über mehrere Teilchen aus. Im Tracker werden alle Segmente die die Teilchen überflogen haben rot gekennzeichnet, zusätzlich kommt noch Rauschen dazu. Für jedes dieser Teilchen(truthparticles) kann man ein Teilchen simulieren und an die wahren Teilchen anpassen indem man den Impuls und Winkel des Teilchens variiert. An welches Teilchen man anpassen soll zeigt der Pfeil an.
TrackingWidget.show(): Zeigt das tracking Widget an.
particles_manager:
particles manager klasse, welche nötig ist um die events zu laden und die Ergebnisse fest zu halten.
B(=None,float):
B-feld Einstellung für den Tracker, bei None wird das B-feld automatisch angepasst zu der Snzahl von layers gewählt.
layer(=50,int):
Anzahl der Layers im Tracker. Umso mehr Layer man hat, umso besser kann man die Teilchen anpassen. Mehr als 60 wird unübersichtlich.
n_segments(=8,int):
Anzahl der Segmente im ersten layer.
add_segments(=3,int):
Gibt an, wieviel Segmente bei jedem Layer dazu kommen (layer i hat (n_segments+k*i) Segmente).
noise_ratio(=0.1,float):
Konstante für Noisefloor im Tracker, 0.1 bedeutet 10% Prozent aller Segmente werden fälschlicherweise Rot gekennzeichnet.
linewidth(=2.5,float):
Linienbreite, am besten bei 2.5 lassen.
continuous_update(=True,bool):
Einstellung ob die Slider im Widget kontinuierlich ausgelesen werden oder nur zu gewissen Punkten. Nur auf False stellen, wenn es Performance Probleme gibt.
truthvalues(=False,bool):
Wenn auf True werden direkt die richtigen Werte für Phi und impuls der simulierten Teilchen eingestellt.
granularity(=100,int): Sollte einfach auf 100 bleiben.
show_hitcounter(=False,bool): Zeigt ein Hitcounter für die simulierten Teilchen an.
Stellt ein Kaloriemeter dar. Ziel hier ist die Energie der einzelnen Teilchen herauszufinden. der ECL ließt aus dem selben particles manager wie der Tracker die Information darüber, in welchem Segment wieviel Energie ist. In dem Widget kann man dann jeweils die angezeigten Teilchen umkreisen(lasso selector) und deren Energie auslesen.
ECLWidget.show(): Zeigt das ECL Widget an.
particles_manager:
particles manager klasse, welche nötig ist um die events zu laden und die Ergebnisse fest zu halten.
noise_rate(=0.2,float):
Konstante für den Noisefloor.
true_particles:(=False,bool)
...
Hier werden jetzt die gesammelten Ergebnisse aus dem Tracking_widget und ECL_widget dargestellt. Man kann vergleichen und nachvollziehen was für Teilchen man gefunden hat.
MatchingWidget.show(): Zeigt das matching Widget an.
ew:
ECL_widget object
tw:
Tracking_widget object
cheat_mode(=True,bool):
Da bei Elektronen es oft kaum möglich ist sie richtig zu fitten kann das Matchingwidget die Werte anpassen, falls die gefundenen Werte nahe genug an den echten sind(wenn auf True).
cheating_threshhold(=1e-2,float):
Threshhold für differenz ab dem die Werte angepasst werden. (nur relevant für cheat_mode=True)