|
| 1 | +/** |
| 2 | + * @file sbnobj/SBND/Timing/TimingInfo.hh |
| 3 | + * @brief Defines data structures for SBND Timing products (docdb#43090). |
| 4 | + * @author Vu Chi Lan Nguyen |
| 5 | + * @date August 29, 2025 |
| 6 | + * |
| 7 | + */ |
| 8 | + |
| 9 | +#ifndef SBND_TIMINGINFO_HH |
| 10 | +#define SBND_TIMINGINFO_HH |
| 11 | + |
| 12 | +#include <stdint.h> |
| 13 | + |
| 14 | +namespace sbnd::timing { |
| 15 | + |
| 16 | + /** |
| 17 | + * @brief A class to store important timestamps in SBND Data |
| 18 | + * |
| 19 | + * Each timestamp is in UNIX Timestamp Format [ns] |
| 20 | + * |
| 21 | + * For more information, see |
| 22 | + * [SBN DocDB 43090](https://sbn-docdb.fnal.gov/cgi-bin/sso/ShowDocument?docid=43090). |
| 23 | + */ |
| 24 | + |
| 25 | + class TimingInfo { |
| 26 | + |
| 27 | + public: |
| 28 | + static constexpr uint64_t InvalidTimestamp = 0; ///< Invalid timestamp |
| 29 | + |
| 30 | + private: |
| 31 | + |
| 32 | + uint64_t fRawDAQHeaderTimestamp = InvalidTimestamp; ///< Timestamp when the event is built by the event builder at DAQ-level |
| 33 | + uint64_t fTdcCrtt1 = InvalidTimestamp; ///< Timestamp of BNB stream CRT T1 Reset recorded by the SPEC-TDC |
| 34 | + uint64_t fTdcBes = InvalidTimestamp; ///< Timestamp of BES signal sent by MFTU recorded by the SPEC-TDC |
| 35 | + uint64_t fTdcRwm = InvalidTimestamp; ///< Timestamp of RWM signal recorded by the SPEC-TDC |
| 36 | + uint64_t fTdcEtrig = InvalidTimestamp; ///< Timestamp of Event Trigger (ETRIG) sent by the PTB recorded by the SPEC-TDC |
| 37 | + uint64_t fHltCrtt1 = InvalidTimestamp; ///< Timestamp of BNB and Offbeam stream CRT T1 Reset High Level Trigger (HLT) created by the PTB |
| 38 | + uint64_t fHltEtrig = InvalidTimestamp; ///< Timestamp of ETRIG HLT created by the PTB |
| 39 | + uint64_t fHltBeamGate = InvalidTimestamp; ///< Timestamp of Beam Gate Acceptance HLT created by the PTB |
| 40 | + |
| 41 | + public: |
| 42 | + |
| 43 | + /** |
| 44 | + * Default constructor. |
| 45 | + */ |
| 46 | + TimingInfo() = default; |
| 47 | + |
| 48 | + /** |
| 49 | + * Constructor to set all timestamps |
| 50 | + * |
| 51 | + * @param rawDAQHeaderTimestamp Raw DAQ Timestamp in UNIX format [ns] |
| 52 | + * @param tdcCrtt1 CRT T1 Timestamp in UNIX format [ns] |
| 53 | + * @param tdcBes BES Timestamp recorded by TDC in UNIX format [ns] |
| 54 | + * @param tdcRwm RWM Timestamp recorded by TDC in UNIX format [ns] |
| 55 | + * @param tdcEtrig ETRIG Timestamp recorded by TDC in UNIX format [ns] |
| 56 | + * @param hltCrtt1 CRT T1 Timestamp created by PTB in UNIX format [ns] |
| 57 | + * @param hltEtrig ETRIG Timestamp created by PTB in UNIX format [ns] |
| 58 | + * @param hltBeamGate Beam Gate Timestamp created by PTB in UNIX format [ns] |
| 59 | + */ |
| 60 | + TimingInfo(uint64_t rawDAQHeaderTimestamp, uint64_t tdcCrtt1, uint64_t tdcBes, uint64_t tdcRwm, uint64_t tdcEtrig, uint64_t hltCrtt1, uint64_t hltEtrig, uint64_t hltBeamGate); |
| 61 | + |
| 62 | + /// @name Getters |
| 63 | + /// @{ |
| 64 | + uint64_t RawDAQHeaderTimestamp() const { return fRawDAQHeaderTimestamp; } |
| 65 | + uint64_t TdcCrtt1() const { return fTdcCrtt1; } |
| 66 | + uint64_t TdcBes() const { return fTdcBes; } |
| 67 | + uint64_t TdcRwm() const { return fTdcRwm; } |
| 68 | + uint64_t TdcEtrig() const { return fTdcEtrig; } |
| 69 | + uint64_t HltCrtt1() const { return fHltCrtt1; } |
| 70 | + uint64_t HltEtrig() const { return fHltEtrig; } |
| 71 | + uint64_t HltBeamGate() const { return fHltBeamGate; } |
| 72 | + /// @} |
| 73 | + |
| 74 | + /// @name Setters |
| 75 | + /// @{ |
| 76 | + void SetRawDAQHeaderTimestamp(uint64_t timestamp){ fRawDAQHeaderTimestamp = timestamp; } |
| 77 | + void SetTdcCrtt1(uint64_t timestamp){ fTdcCrtt1 = timestamp; } |
| 78 | + void SetTdcBes(uint64_t timestamp){ fTdcBes = timestamp; } |
| 79 | + void SetTdcRwm(uint64_t timestamp){ fTdcRwm = timestamp; } |
| 80 | + void SetTdcEtrig(uint64_t timestamp){ fTdcEtrig = timestamp; } |
| 81 | + void SetHltCrtt1(uint64_t timestamp){ fHltCrtt1 = timestamp; } |
| 82 | + void SetHltEtrig(uint64_t timestamp){ fHltEtrig = timestamp; } |
| 83 | + void SetHltBeamGate(uint64_t timestamp){ fHltBeamGate = timestamp; } |
| 84 | + /// @} |
| 85 | + |
| 86 | + }; |
| 87 | +} |
| 88 | + |
| 89 | +#endif |
0 commit comments