Skip to main content
LARDON writes reconstruction results to HDF5 files using the PyTables library. Each run produces one file per subfile processed.

Filename Convention

{detector}_{run}_{sub}{flow_writer_suffix}{outname}.h5
  • {detector} — detector name (e.g. pdvd, pdhd, cbbot)
  • {run} — zero-padded run number
  • {sub} — zero-padded subfile number
  • {flow_writer_suffix} — encodes the flow and writer numbers (e.g. _40 for flow 4, writer 0)
  • {outname} — the value passed to -out, prefixed with _ (omitted if not specified)
Examples (from the README):
# lardon -det pdvd -run 39229 -sub 24 -flow 4 -writer 0 -serv 5 -event 11 -out one_event -trk
$LARDON_RECO/pdvd_39229_24_40_s5_one_event.h5

# lardon -det pdvd -run 39246 -sub 6 -flow 0 -writer 0 -out full_example -trk
$LARDON_RECO/pdvd_39246_00_full_example.h5

# lardon -det cbbot -run 37040 -sub 23 -n 10 -trk -out few_events
$LARDON_RECO/cbbot_37040_23_few_events.h5
When running in -job mode, files are written to the current working directory instead of $LARDON_RECO.

HDF5 Table Reference

The file schema is defined in src/lardon/store.py. Tables are created at the root level /.

Always Present

One row per file. Contains basic metadata about the run configuration.
ColumnTypeDescription
runuint64Run number
substring(6)Subfile identifier
elecstring(3)Electronics type
n_evtuint32Number of events processed
process_dateuint32Unix timestamp of processing
n_channelsuint16Total number of TPC channels
samplingfloat32[n_modules]Sampling rate per module (MHz)
n_samplesfloat32[n_modules]Number of time samples per module
n_viewuint8Number of wire views
view_nchanfloat32[n_view]Number of channels per view
e_driftfloat32[n_modules]Drift electric field per module (kV/cm)
t_larfloat32[n_modules]LAr temperature per module (K)
A nested HDF5 group (not a table) storing the full contents of reco_parameters.json used for this reconstruction, enabling reproducibility. Stored by save_reco_param() in store.py.
One row per processed event.
ColumnTypeDescription
trigger_nbuint32Hardware trigger number
trigger_typeuint16Trigger type identifier
time_suint64Event timestamp (seconds)
time_nsuint64Event timestamp (nanoseconds)
charge_timefloat64[n_modules]Charge readout timestamp per module
pds_stream_timefloat64PDS stream start timestamp
pds_trig_timefloat64PDS trigger timestamp
n_sampleuint32[n_modules]Number of samples used per module
n_hitsuint32[n_view, n_modules]Number of hits found per view and module
n_tracks2Duint32[n_view]Number of 2D tracks per view
n_tracks3Duint32Total number of 3D tracks
n_single_hitsuint32Number of single hits (blips)
n_ghostsuint32Number of ghost tracks
One row per event. Stores mean and RMS for all TPC channels in global channel ordering.
ColumnTypeDescription
raw_meanfloat32[n_tot_channels]Raw pedestal mean per channel (ADC)
raw_rmsfloat32[n_tot_channels]Raw pedestal RMS per channel (ADC)
filt_meanfloat32[n_tot_channels]Post-filter pedestal mean per channel (ADC)
filt_rmsfloat32[n_tot_channels]Post-filter pedestal RMS per channel (ADC)
One row per event. Contains additional noise characterization quantities.
ColumnTypeDescription
delta_meanfloat32[n_tot_channels]Mean shift between pedestal passes
rmsfloat32[n_tot_channels]RMS from noise study
One row per event. Records wall-clock time and memory usage for each reconstruction step, useful for profiling.
ColumnTypeDescription
eventuint32Event number
triggeruint32Trigger number
read_datafloat64[n_modules]Time for raw data reading
ped_1 / ped_2 / ped_3float64[n_modules]Time for each pedestal pass
fftfloat64[n_modules]Time for FFT noise filter
cnrfloat64[n_modules]Time for coherent noise removal
hit_ffloat64[n_modules]Time for hit finding
trk2D_1 / trk2D_2float64[n_modules]Time for 2D tracking passes
stitch2Dfloat64[n_modules]Time for 2D track stitching
trk3Dfloat64[n_modules]Time for 3D tracking
stitch3Dfloat64Time for 3D track stitching
singlefloat64[n_modules]Time for single-hit finding
outputfloat64Time for output writing
mem_modfloat64[n_modules]Memory usage per module (MB)
time_modfloat64[n_modules]Total time per module (s)
mem_totfloat64Total memory usage (MB)
time_totfloat64Total processing time (s)

TPC Reconstruction Tables (-trk)

One row per hit. Hits are the fundamental reconstruction objects — contiguous signal regions on a single wire.
ColumnTypeDescription
eventuint32Event number
triggeruint32Trigger number
IDuint32Global hit identifier
moduleuint8Detector module index
viewuint8Wire view index
channeluint16View-channel number
daq_channeluint16DAQ channel number
is_collectionboolTrue if this is a collection-view hit
tdc_startint32Hit start tick
tdc_stopint32Hit end tick
tdc_maxint32Tick of maximum ADC (positive peak)
tdc_minint32Tick of minimum ADC (negative peak, induction)
tdc_zeroint32Tick of zero-crossing (induction)
zfloat32Drift coordinate of hit (cm, lardon convention)
xfloat32Wire position of hit (cm, lardon convention)
fC_maxfloat32Positive peak amplitude (fC)
fC_minfloat32Negative peak amplitude (fC)
charge_posfloat32Integrated positive charge (fC)
charge_negfloat32Integrated negative charge (fC)
is_freeboolTrue if hit is not yet assigned to any track
match_3Dint32ID of matched 3D track (−1 if none)
match_2Dint32ID of matched 2D track (−1 if none)
match_drayint32ID of matched delta-ray track (−1 if none)
match_ghostint32ID of matched ghost track (−1 if none)
match_shint32ID of matched single hit (−1 if none)
One row per 2D track. Also includes variable-length arrays trk2d_v0, trk2d_v1, … (one per view) storing the track path points as (x, z, charge, hit_ID) tuples.
ColumnTypeDescription
eventuint32Event number
triggeruint32Trigger number
IDuint32Track identifier
match_3Dint32ID of matched 3D track (−1 if none)
matchedint32[n_view]Matching flags per view
viewuint8View this track was found in
pos_inifloat32Wire position at track start (cm)
pos_endfloat32Wire position at track end (cm)
z_inifloat32Drift coordinate at track start (cm)
z_endfloat32Drift coordinate at track end (cm)
chi2_fwdfloat32Forward-fit chi-squared
chi2_bwdfloat32Backward-fit chi-squared
n_hits_trackuint16Number of hits on track
n_hits_drayuint16Number of delta-ray hits
dray_total_chargefloat32Total charge from delta rays (fC)
slope_inifloat32Track slope at start
slope_endfloat32Track slope at end
slope_ini_errfloat32Uncertainty on start slope
slope_end_errfloat32Uncertainty on end slope
len_straightfloat32Straight-line track length (cm)
len_pathfloat32Path-integrated track length (cm)
track_total_chargefloat32Total track charge (fC)
One row per 3D track. Also includes variable-length arrays trk3d_v0, trk3d_v1, … (one per view) storing path points as (x, y, z, dq, ds, hit_ID) tuples.
ColumnTypeDescription
eventuint32Event number
triggeruint32Trigger number
IDuint32Track identifier
matched_2Dint32[n_modules, n_view]Matched 2D track IDs per module and view
n_matcheduint32Number of matched 2D components
module_ini / module_endint32Module index at track start and end
x_ini, y_ini, z_inifloat32Start-point coordinates (cm)
t_iniint32Start tick
x_end, y_end, z_endfloat32End-point coordinates (cm)
t_endint32End tick
chi2float32[n_view]Fit chi-squared per view
theta_ini / theta_endfloat32Polar angle at start and end (rad)
phi_ini / phi_endfloat32Azimuthal angle at start and end (rad)
n_hitsuint16[n_view]Number of hits per view
len_straightfloat32[n_view]Straight-line length per view (cm)
len_pathfloat32[n_view]Path length per view (cm)
total_chargefloat32[n_view]Integrated charge per view (fC)
z0_corrfloat64Drift position correction from t0 (cm)
t0_corrfloat32t0 correction (µs)
z0_lightfloat64Drift correction from PDS matching (cm)
t0_lightfloat32t0 from PDS (µs)
timestamp_lightfloat32PDS cluster timestamp (µs)
d_matchfloat32Distance used for TPC–PDS matching (cm)
timestampfloat64Event timestamp (µs)
cluster_IDint32Matched PDS cluster ID (−1 if none)
is_cathode_crosserboolWhether track crosses the cathode
is_module_crosserboolWhether track crosses a module boundary
is_anode_crosserboolWhether track exits through the anode
exit_pointfloat32[3]Extrapolated anode-exit point (cm)
One row per single hit (blip) candidate — isolated charge depositions matched across views but not assigned to any track.
ColumnTypeDescription
eventuint32Event number
IDuint32Single-hit identifier
moduleuint8Module index
n_hitsuint32[n_view]Number of wire hits per view
hit_IDsint32[n_view, max_per_view]Hit IDs per view
charge_posfloat32[n_view]Positive charge per view (fC)
charge_negfloat32[n_view]Negative charge per view (fC)
tdc_start / tdc_stopint32[n_view]Time extent per view (ticks)
x, y, zfloat643D position (cm)
d_bary_maxfloat64Max barycenter distance (cm)
d_track_3Dfloat64Distance to nearest 3D track (cm)
d_track_2Dfloat64Distance to nearest 2D track (cm)
timestampfloat64Event timestamp (µs)
cluster_IDint32Matched PDS cluster ID (−1 if none)
Z_lightfloat64Drift position from light timing (cm)
One row per ghost track, with an associated variable-length array ghost_tracks storing path points as (x, y, z, dq, ds, hit_ID) tuples.
ColumnTypeDescription
eventuint32Event number
match_3Duint32ID of the real 3D track this ghost corresponds to
match_2Duint32ID of the 2D track this ghost was found from
x_anode, y_anode, z_anodefloat32Anode position (cm)
theta / phifloat32Track angles (rad)
n_hitsuint16Number of hits
total_ghost_chargefloat32Charge on ghost track (fC)
total_track_chargefloat32Charge on parent real track (fC)
z0_corr / t0_corrfloat64 / float32Drift correction from t0
d_minfloat32Minimum distance to parent track (cm)

PDS Reconstruction Tables (-pds)

One row per file. Parallel to the TPC infos table but for the photon detection system.
ColumnTypeDescription
runuint16Run number
substring(6)Subfile identifier
n_evtuint32Number of events processed
n_channelsuint16Total number of PDS channels
samplingfloat32PDS sampling rate (MHz)
n_samplesfloat32Number of samples per event
e_driftfloat32[n_modules]Drift field per module (kV/cm)
t_larfloat32[n_modules]LAr temperature per module (K)
One row per event.
ColumnTypeDescription
eventuint32Event number
trigger_nbuint32Trigger number
stream_timefloat64PDS stream start time
trig_timefloat64PDS trigger time
n_sampleuint32Number of PDS samples
n_peakuint32[n_pds_channels]Number of peaks per channel
n_clusteruint32Number of PDS clusters
chan_time_offsetfloat64[n_pds_channels]Per-channel timing offset (µs)
One row per event.
ColumnTypeDescription
raw_mean / raw_rmsfloat32[n_pds_channels]Pre-filter pedestal mean and RMS
filt_mean / filt_rmsfloat32[n_pds_channels]Post-filter pedestal mean and RMS
One row per peak.
ColumnTypeDescription
eventuint32Event number
IDuint32Peak identifier
glob_chuint32Global PDS channel number
channeluint32Local channel number
start / stopint32Peak time window (PDS ticks)
max_tint32Tick of peak maximum
chargefloat64Integrated charge (ADC·ticks)
max_adcfloat64Peak ADC amplitude
cluster_IDint32Matched PDS cluster ID (−1 if none)
timestampfloat64Peak timestamp (µs)
One row per cluster, plus variable-length arrays pds_peakID_clusters listing the peak IDs in each cluster, and charge_pds_match_vol<N> per drift volume storing TPC–PDS matching results as (PeakID, glob_ch, distance, charge, max_adc, x_impact, y_impact, z_impact, x_closest, y_closest, z_closest, closestIsExtrapolated).
ColumnTypeDescription
eventuint32Event number
IDuint32Cluster identifier
sizeuint32Number of peaks in cluster
start_t / stop_tint32Cluster time window (PDS ticks)
timestampfloat64Cluster timestamp (µs)
match_trk3Dint32[n_drift_volumes]Matched 3D track ID per volume
match_singleint32Matched single hit ID (−1 if none)

Charge Pulsing Tables (-pulse)

One row per channel per event, storing the number of positive and negative pulses found.
ColumnTypeDescription
eventuint32Event number
view / channel / daq_channeluint8 / uint16 / uint16Channel identifiers
n_pulse_posuint16Number of positive pulses found
n_pulse_neguint16Number of negative pulses found
Also includes variable-length arrays pos_pulse and neg_pulse storing fit parameters as (start, tmax, vmax, A, Aerr, tau, tauerr, area, fit_area, rchi2) per pulse.
One row per channel. Stores mean and standard deviation of aligned pulse waveforms (60-sample windows) for positive and negative pulses.
ColumnTypeDescription
view / channel / daq_channeluint8 / uint16 / uint16Channel identifiers
pos_mean / pos_stdfloat32[60]Mean and std of positive pulse shape
neg_mean / neg_stdfloat32[60]Mean and std of negative pulse shape

Coordinate System in Output

By default, LARDON stores positions in lardon coordinates (see Coordinate Conventions). This is controlled by the "store": {"coord": "lardon"} key in reco_parameters.json.
"store": {
    "coord": "lardon"
}
The coord parameter can also be set to produce LArSoft-compatible coordinates when integrating with other DUNE software tools.

Build docs developers (and LLMs) love