|
sipm-characterisation 0.1.0
SiPM characterisation for ePIC — IV/DCR/gain, laser, readout, irradiation
|
A collection of ROOT/C++ macros, Python DAQ scripts and a Geant4 simulation for characterising silicon photomultipliers (SiPMs) for the ePIC dual-radiator RICH (dRICH). It consolidates — organised by measurement type — the work that was previously scattered across several divergent repositories: IV / DCR / gain / breakdown-voltage analysis, laser-based timing and PDE, ALCOR µreadout decoding, Keithley acquisition, irradiation (NIEL) simulation, and slew-rate / TDC studies.
This repository aims to:
Vbd), threshold scans, and their temperature / annealing dependence.Each top-level directory is one measurement / stage; they share sensors and conventions but are otherwise independent and run on their own.
Generated outputs (*.pdf, *.png, *.eps), raw Data/ and the local Archive/ are gitignored — only source is versioned.
| Directory | Language | Measurement / role |
|---|---|---|
source/ + utils/ | C++ (ROOT) | Core: parse the run database, build IV/DCR/gain graphs, find Vbd |
macros/ | C++ (ROOT) | Electrical/dark analysis, temperature & annealing scans, paper plots |
laser/waveform/ | C++ (ROOT) | LeCroy scope waveform decoding + fitting, time-walk |
laser/tgraphs/ | C++ (ROOT) | ASCII → TGraph/TTree laser-characterisation pipeline |
readout/ | C++ (ROOT) | ALCOR TDC fine-tune calibration, noise analysis, frame decoding |
daq/ | Python + C++ | Keithley 2470/2600 IV & forward-scan acquisition, quick-look macros |
irradiation/ | C++ (Geant4) | NIEL displacement-damage simulation for the irradiation campaigns |
slewrate/ | C++ (ROOT) | TDC calibration, laser coincidence, slew-rate |
root / root-config in PATH — for all .C macros.numpy and matplotlib — for daq/keithley/.irradiation/.There is no top-level build: the analysis is run as ROOT macros, and each component is self-contained. The only compiled component is irradiation/.
The macros are meant to be loaded interactively in ROOT. From the repository root, for example:
Data locations are configured through the database::basedir variable (or, in readout/, the ALCOR_DATA_DIR / ALCOR_WORK_DIR environment variables). See the TODO in DISCUSSION.md about hardcoded paths before running on a new machine.
The instrument IP and IDN live at the top of daq/keithley/keithley.py.
Input data is not tracked in git. The repository expects a Data/ symlink (or directory) at the root pointing at the run database and per-run folders. The heavyweight raw datasets (e.g. the 2021/2022 irradiation campaign) are kept outside the repository under a local Archive/ and are gitignored.
main): https://nikolajal.github.io/sipm-characterisation/The Doxygen site is built and published by .github/workflows/docs.yml on every push to main (pull requests build the docs but do not publish); manual rebuilds are possible from the Actions tab via the workflow_dispatch trigger.
One-time setup: in Settings → Pages, set the source to GitHub Actions so the first deploy can publish.
The canonical record lives in `DISCUSSION.md`, which follows the hub / triage-taxonomy template shared with the sibling repositories (mist, beam-test-analysis):
D-XX** — open design questions awaiting a decision.TODO** — concrete fixes in the queue (bugs from the latest sweep), no design pending.F-XX** — feature queue (deduplication, parameterisation, packaging).This tree consolidates several pre-v1 R&D repositories — one per measurement — into a single versioned codebase. Code was merged organised by measurement type; raw data, build artifacts and the original git histories were left out of the tracked tree. The granular history is intentionally collapsed: per the project policy, the full pre-v1 history is kept only until the first v1.0.0 tag, at which point a clean-root reset is performed.
Nicola Rubini and collaborators, ePIC dRICH / SiPM characterisation effort.