All projects

Particle event reconstruction

My final degree thesis, developed with a PhD candidate working on inclusive flavour tagging and in collaboration with LHCb at CERN. The project uses heterogeneous graph neural networks for collision event reconstruction and inclusive flavour tagging, connecting track-level decay reconstruction to predictions of B-meson production flavour, with calibrated evaluation and validation-based model selection.

Period
October 2025–July 2026
Domain
LHCb · Particle physics
Tools
Python · PyTorch Lightning · PyTorch Geometric · ROOT · YAML

Reconstructing collision events

The reconstruction task identifies tracks originating from b-hadron decays, infers their decay relationships and associates tracks with a primary vertex: the proton–proton collision point. Heterogeneous graph neural networks model these relationships, with node and edge pruning to refine the reconstructed graph.

From tracks to flavour tags

Two connected stages drive the workflow. DFEI performs track-level reconstruction, predicting decay topology and primary-vertex associations. IFT then uses the DFEI-reconstructed graph for inclusive flavour tagging: predicting whether a B meson originated as B or B̄. Calibrated effective tagging power is the evaluation target.

From ROOT files to graph data

A three-stage preprocessing pipeline converts raw LHCb Monte Carlo ROOT tuples into particle and relation data, then compressed PyTorch Geometric graph caches. YAML configurations control training and evaluation, including dataset size, primary-vertex association and particle-identification inputs.

Evaluation and calibration

The workflow selects pruning thresholds and model versions on validation data before reporting on the held-out test split. Realistic or absent particle-identification inputs are used for headline evaluation; Monte Carlo truth inputs serve only as an oracle comparison. Calibration tools support isotonic and linear methods, bootstrap uncertainties, multi-seed experiments and track-type ablations.

Source on GitHub