reboost.daq package¶
Submodules¶
reboost.daq.core module¶
- reboost.daq.core._run_daq_non_sparse_impl(evt, chids, tau_preamp, noise_threshold, baseline_slope_threshold, trigger_threshold, waveform_length, trigger_position)¶
Numba-accelerated implementation of
run_daq_non_sparse().
- reboost.daq.core.run_daq_non_sparse(evt, n_sim_events, source_activity, *, tau_preamp=500, noise_threshold=5, baseline_slope_threshold=0.01, trigger_threshold=25, waveform_length=100, trigger_position=50)¶
Run the DAQ in non-sparse mode.
Pipe simulated HPGe events through the DAQ system in non-sparse mode. Return a table where each row represents an event that was actually recorded by the DAQ. For each event and each channel, determine the characteristics of the waveform.
Warning
This code assumes that the simulated events are time-independent.
- Parameters:
evt (Array) –
simulated events. Must be an Awkward array with the following fields:
evtid(int): event ID in the simulation.geds_energy_active(array of floats): energy deposits (in keV) in the active HPGe detector channels for this event.geds_rawid_active(array of ints): hardware raw-IDs of the active HPGe detector channels, in the same order asgeds_energy_active.
source_activity (float) – source activity in Bq.
n_sim_events (int) – total number of simulated events.
tau_preamp (float) –
pre-amplification RC constant in microseconds. the signal model is an exponential:
\[f(t) = E_i * e^{((t - t_i) / \tau)}\]where \(E_i\) is the energy of the signal and \(t_i\) is the time it occurred.
noise_threshold (float) – threshold (in keV) for a signal to be “visible” above noise. In LEGEND-200, the “energy” of forced trigger events is gauss-distributed around 0.5 keV with a standard deviation of about 0.5 keV.
baseline_slope_threshold (float) – threshold (in keV/us) on the baseline slope to be tagged as not flat. in LEGEND-200, the slope of waveforms in force-triggered events is gauss-distributed around 0 with a standard deviation of about 2 keV/ms.
trigger_threshold (float) – amplitude (in keV) needed for the DAQ to trigger on a signal.
waveform_length (float) – length of the waveform in microseconds stored on disk.
trigger_position (float) – location (offset) in microseconds of the triggered signal in the waveform.
- Returns:
- tuple[ak.Array, list[int]]
A two-element tuple
(daq_data, channel_ids):daq_dataAwkward array (table) where each row is one DAQ record. Fields:
evtid(int): event ID in the simulation.timestamp(float): timestamp of the start of the waveform in microseconds.has_trigger(2-D array of bool, shape(n_records, n_channels)):Truefor the channel(s) whose energy deposit triggered the DAQ.has_pre_pulse(2-D array of bool, shape(n_records, n_channels)):Truewhen a signal abovenoise_thresholdis present in the pre-trigger part of the waveform (hard pre-pile-up).has_post_pulse(2-D array of bool, shape(n_records, n_channels)):Truewhen a signal abovenoise_thresholdarrives after the trigger position but still within the waveform window (hard post-pile-up).has_slope(2-D array of bool, shape(n_records, n_channels)):Truewhen the decaying tail of an earlier signal produces a significant baseline slope.
channel_idsSorted list of the unique hardware raw-IDs (integers) of all channels present in evt. The column order in the 2-D boolean fields above matches this list.
reboost.daq.utils module¶
- reboost.daq.utils.print_random_crash_msg(rng)¶