Skip to main content

Documentation Index

Fetch the complete documentation index at: https://mintlify.com/dune-lardon/lardon/llms.txt

Use this file to discover all available pages before exploring further.

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