ePIC dRICH Beam Test Analysis Framework
This is the analysis framework I built and maintain for the ePIC dRICH beam test campaigns at the CERN PS. It’s a fairly lightweight C++17 codebase, built on ROOT, that takes raw data straight out of the ALCOR front-end electronics and turns it into the numbers that get presented to the collaboration.
How the data flows through it
Three stages, each with its own data model so you can stop anywhere and inspect what’s going on:
- ALCOR → lightdata — frame-based filtering, sorting hits into Cherenkov, timing, tracking, and trigger categories.
- lightdata → recodata — Cherenkov ring reconstruction (DBSCAN or Hough transform), with optional track matching against the ALTAI telescope.
- Analysis macros — dark count rates, photon yields, afterpulse treatment, ring spatial resolution. The reusable building blocks for whatever physics question we throw at it next.
What it’s built with
C++17, ROOT, CMake (3.16+), CLI11, toml++, MIST. Configuration lives in TOML files so the readout mapping, trigger logic, and sensor parameters can change without touching the code. clang-format is enforced through GitHub Actions. Full Doxygen docs. An online operator dashboard in Qt gives real-time analysis and QA feedback during data taking.
Why it matters
The dRICH is the first SiPM-based Cherenkov detector built for a collider experiment, and this framework turns its raw electronics output into the analysis results presented to the collaboration. It processed the first Cherenkov rings recorded with the prototype at the CERN PS in October 2023, and the beam-test data ever since.