Output tier fields¶
This page documents the fields (columns) produced by each post-processing tier of the Simflow. All output files use the LEGEND HDF5 (LH5) format.
hit tier — HPGe detector post-processing¶
The hit tier applies detector response models (energy resolution, pulse-shape
discrimination) to the raw
stp-tier
simulation output. Each HPGe detector is processed independently; output tables
are stored under /hit/{detector_name}/ in the LH5 file. Each row corresponds
to a single remage hit in one detector — use the evtid column and the
evt tier to group hits into physics events.
Inherited fields¶
These fields are carried over from the
stp tier:
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Event identifier, shared across all detectors hit in the same event. |
|
|
ns |
Time of the first energy deposition in the detector relative to the start of the Geant4 event. |
Added fields¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
keV |
Reconstructed energy after smearing with the detector energy resolution. Computed from the sum of active energy depositions (weighted by the dead-layer activeness model). |
|
|
ns |
Drift time at the maximum-current (A) position of the simulated current pulse. Set to |
|
|
— |
Raw A/E value: maximum current amplitude divided by energy. The maximum current (A) is obtained from the simulated current pulse, constructed from individual hit drift times and a current-pulse model, and includes electronic noise effects. |
|
|
— |
A/E classifier value: |
|
|
— |
Boolean PSD flag. |
|
|
— |
Data-taking period number extracted from the run identifier (numeric encoding). |
|
|
— |
Data-taking run number extracted from the run identifier (numeric encoding). |
|
|
— |
Encoded detector usability status for this run (e.g. |
|
|
— |
Encoded PSD usability flag (e.g. |
opt tier — optical (SiPM) post-processing¶
The opt tier is at the same conceptual level as the hit tier: it performs
detector-wise post-processing, but for SiPMs instead of HPGe detectors. It
applies the optical map convolution and photoelectron (PE) response models to
the scintillator output from the stp tier. When using per-SiPM optical maps, a
separate table is written for each SiPM channel under /hit/{sipm_name}/; when
using a single summed map (the default), all SiPM channels are aggregated into a
single /hit/spms/ table. Each row corresponds to an stp-tier hit entry
(identified by evtid) — not to a single physics event.
Inherited fields¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Event identifier, shared across all detectors hit in the same event. |
Added fields¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
ns |
Photoelectron hit times, after resolution smearing and photoelectron clustering to simulate the timing resolution of the SiPM. Variable-length per row. |
|
|
— |
Photoelectron amplitudes (relative units), after PE resolution smearing. Variable-length array matching |
|
|
— |
Boolean flag. |
|
|
— |
Data-taking period number extracted from the run identifier (numeric encoding). |
|
|
— |
Data-taking run number extracted from the run identifier (numeric encoding). |
|
|
— |
Encoded SiPM channel usability status for this run. Decode with |
evt tier — event-level output¶
The evt tier merges HPGe (hit) and SiPM (opt) data into a unified
event-level structure. It uses the time-coincidence map (TCM) to associate hits
across detector subsystems into physics events. The output table is stored under
/evt/ in the LH5 file and is organized into subtables. The structure is
designed to mirror the evt tier of the actual LEGEND-200 data (produced by
pygama) as closely as possible.
Note
The geds/ and coincident/geds subtables are absent when skip_hit: true is
set in the evt tier settings (HPGe tier skipped). Similarly, the spms/ and
coincident/spms subtables are absent when skip_opt: true is set (SiPM/LAr
tier skipped). See evt tier for details.
trigger/ — event metadata¶
Constant fields identifying each event.
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Event identifier. |
|
|
— |
Data-taking period number. |
|
|
— |
Data-taking run number. |
|
|
ns |
Delta time of the first HPGe hit ( |
geds/ — HPGe detector array¶
Per-event arrays collecting HPGe hits that pass the energy threshold (25 keV) and are from non-OFF detectors.
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
keV |
Hit energies from ON and AC detectors above threshold. Variable-length per event. |
|
|
keV |
Summed energy from ON detectors only (excludes AC). Scalar per event. |
|
|
— |
Detector channel UID for each hit, matching the channel identifiers used in LEGEND-200 data. Variable-length per event. |
|
|
— |
Row index in the |
|
|
— |
Boolean. |
|
|
— |
Number of HPGe hits above threshold per event. Scalar per event. |
geds/psd/ — PSD quality¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Boolean. |
|
|
— |
A/E classifier values forwarded from the |
|
|
— |
Boolean. |
|
|
— |
Boolean PSD flag forwarded from the |
spms/ — SiPM (LAr scintillation) array¶
Per-event arrays collecting SiPM data. All non-OFF channels are always present in ascending UID order, even for events with no energy deposition in liquid argon.
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
SiPM channel UIDs, matching the channel identifiers used in LEGEND-200 data. Always the full list of non-OFF channels per event. |
|
|
— |
PE amplitudes per channel per event, filtered by the PE energy threshold. Nested variable-length array. |
|
|
ns |
PE hit times per channel per event. Nested variable-length array matching |
|
|
— |
Boolean SiPM saturation flag per channel. |
|
|
— |
Row index in the |
|
|
— |
Total PE energy summed over all channels and all PEs. Scalar per event. |
|
|
— |
Number of SiPM channels with at least one detected PE. Scalar per event. |
|
|
— |
(optional) Random-coincidence PE amplitudes from forced-trigger data. Present only when |
|
|
ns |
(optional) Random-coincidence PE times. Present only when |
coincident/ — detector coincidence flags¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Boolean. |
|
|
— |
Boolean LAr veto flag. |
Time-coincidence map (TCM)¶
Every hit, opt, and evt tier file contains a /tcm table
(time-coincidence map) that maps physics events to the individual detector-level
table rows that belong to them. The TCM is built by grouping hits that share the
same evtid and whose t0 values fall within a 10 µs coincidence window
(matching the remage built-in TCM settings).
The TCM table has two fields, both VectorOfVectors (one inner list per event):
Field |
Type |
Description |
|---|---|---|
|
|
Detector UID for each hit in the event. Identifies which |
|
|
Row index into the corresponding detector table. Together with |
In the hit and opt tiers, the TCM indexes into the detector tables within
the same file. In the evt tier, the TCM is a unified version that merges the
hit and opt TCMs, so that a single TCM entry references hits across both
HPGe and SiPM detector tables.
pdf tier — probability density functions¶
The pdf tier reads the event-level data from the cvt tier and bins it into
energy histograms. These histograms represent the probability density functions
(PDFs) used as inputs to spectral fitting analyses. The output is a single LH5
file containing a set of histograms, each corresponding to a different event
selection and detector group, and a scalar recording the total number of
simulated primary events.
The histograms apply a sequence of analysis cuts — multiplicity, LAr
anti-coincidence, and pulse-shape discrimination — to produce PDFs for the most
common LEGEND-200 analysis channels. All histograms carry a description
attribute in the LH5 attrs.
Root-level fields¶
Field |
Type |
Units |
Description |
|---|---|---|---|
|
|
— |
Total number of simulated primary events ( |
pdf/ — histogram struct¶
The 1-D histograms are organised cut-first, then by detector group:
pdf/<cut>/<group>. Each leaf is an lgdo Histogram. The detector groups are
configured via the detector_groups setting (see pdf tier); the
all group containing every detector is always present.
For example, with detector_groups: {icpc: "V.*", bege: "B.*"}, the output
contains pdf/hit/icpc, pdf/hit/bege, and pdf/hit/all, and similarly for
every other cut.
1D histograms¶
Each of the following cuts produces one Histogram per detector group. The
good_channel_mask applied before all cuts requires every channel in the event
to be an ON detector (not AC or OFF). Per-group filtering restricts which
detector energies are accumulated into the histogram; the event-level cuts
themselves are unchanged and applied globally.
Cut |
Description |
|---|---|
|
All individual HPGe energy deposits in ON-channel events, with no multiplicity requirement. |
|
Multiplicity-1 events: exactly one ON detector fired ( |
|
Multiplicity-1 events passing the LAr anti-coincidence cut. Events are vetoed when |
|
Multiplicity-1 events passing the PSD single-site cut. Requires |
|
Multiplicity-1 events passing both the LAr anti-coincidence and PSD single-site cuts (combination of |
Warning
When a detector is ON with valid PSD in the data but its PSD response could not
be simulated (e.g. because it is not included in the simulation model), the
corresponding events will have psd.has_aoe = False in the cvt tier. Such
events are treated as background and excluded from mul_psd and mul_lar_psd.
This is a conservative choice: rather than keeping events we cannot
characterise, we cut them. The fail/psd histogram does not include these
events either, since it is restricted to events where both psd.is_good = True
and psd.has_aoe = True.
2D histograms¶
Key |
Description |
|---|---|
|
Multiplicity-2 events with exactly two ON detectors fired. A 2D histogram with axes (E_low, E_high), where E_low ≤ E_high are the two hit energies sorted in ascending order. |
mul2 is a single global histogram and is not split by detector group.
Per-channel or per-pair 2-D PDFs are out of scope for the current
implementation.
pdf/fail/ — cut-failure histograms¶
The fail/ sub-struct contains histograms for multiplicity-1 events that are
explicitly rejected by a cut, providing a way to characterise the vetoed
background. Like the pass histograms, each cut contains one Histogram per
detector group (pdf/fail/<cut>/<group>).
Cut |
Description |
|---|---|
|
Multiplicity-1 events failing the LAr veto ( |
|
Multiplicity-1 events with valid PSD ( |