Source code for straxen.plugins.events_nv.events_sync_nv

import strax
import numpy as np

export, __all__ = strax.exporter()


[docs]@export class nVETOEventsSync(strax.OverlapWindowPlugin): """Plugin which computes time stamps which are synchronized with the TPC. Uses delay set in the DAQ. """ depends_on = ("events_nv", "detector_time_offsets") delay_field_name = "time_offset_nv" provides = "events_sync_nv" save_when = strax.SaveWhen.EXPLICIT __version__ = "0.0.3"
[docs] def infer_dtype(self): dtype = [] dtype += strax.time_fields dtype += [ ( ( "Time of the event synchronized according to the total digitizer delay.", "time_sync", ), np.int64, ), ( ( "Endtime of the event synchronized according to the total digitizer delay.", "endtime_sync", ), np.int64, ), ] return dtype
[docs] def get_window_size(self): # Ensure to have at least 12 offset-values from detector_time_offsets # to compute average time delay. Otherwise we may get unlucky with # our pacemaker (unlikely but could happen). return 120 * 10**9
[docs] def compute(self, events_nv, detector_time_offsets): delay = detector_time_offsets[self.delay_field_name] delay = np.median(delay[delay > 0]) delay = delay.astype(np.int64) # Check if delay is >= 0 otherwise something went wrong with # the sync signal. assert delay >= 0, f"Missing the GPS sync signal for run {self.run_id}." events_sync_nv = np.zeros(len(events_nv), self.dtype) events_sync_nv["time"] = events_nv["time"] events_sync_nv["endtime"] = events_nv["endtime"] events_sync_nv["time_sync"] = events_nv["time"] + delay events_sync_nv["endtime_sync"] = events_nv["endtime"] + delay return events_sync_nv