BmnRoot
Loading...
Searching...
No Matches
BmnMSCDigit.h
Go to the documentation of this file.
1#ifndef BMNMSCDIGIT_H
2#define BMNMSCDIGIT_H
3
4#include <array>
5#include <chrono>
6// ROOT
7#include "TObject.h"
8// BmnRoot
9#include "BmnFunctionSet.h"
10#include "RawTypes.h"
11
12using SysClock = std::chrono::system_clock;
13using SysPoint = std::chrono::time_point<SysClock>;
14
15template<typename IntType = UChar_t>
16class BmnMSCDigit : public TObject
17{
18 public:
27 BmnMSCDigit(UInt_t iSerial = 0,
28 UInt_t iSlot = 0,
29 std::array<IntType, MSC_N_COUNTERS> iValue = {},
30 UInt_t evId = 0,
31 SysPoint time = SysPoint::min(),
32 UChar_t ext_cond = 0)
33 : fSerial(iSerial)
34 , fSlot(iSlot)
35 , fValue(iValue)
36 // , fTime(time)
37 , fTS(BmnFunctionSet::TimePoint2TS(time))
38 , fEventId(evId)
39 , fExtCond(ext_cond)
40 {
41 // for (UInt_t i = 0; i < NVals; ++i)
42 // fValue[i] = iValue[i];
43 }
44
52 BmnMSCDigit(UInt_t iSerial, UInt_t iSlot, UInt_t evId, SysPoint time = SysPoint::min())
53 : fSerial(iSerial)
54 , fSlot(iSlot)
55 , fTS(BmnFunctionSet::TimePoint2TS(time))
56 , fEventId(evId)
57 , fExtCond(0)
58 {}
59
60 UInt_t GetSerial() const { return fSerial; }
61
62 UInt_t GetSlot() const { return fSlot; }
63
64 std::array<IntType, MSC_N_COUNTERS>& GetValue() { return fValue; }
65
67
68 TTimeStamp GetTS() const { return fTS; }
69
70 UInt_t GetLastEventId() const { return fEventId; }
71
72 bool IsSpill() { return (fExtCond & MSC_EC_SPILL); }
73
74 bool IsBusy() { return (fExtCond & MSC_EC_BUSY); }
75
76 constexpr static const UInt_t GetNVals() { return NVals; }
78 virtual ~BmnMSCDigit() {}
79
80 private:
81 static const UInt_t NVals = MSC_N_COUNTERS;
82 UInt_t fSerial;
83 UInt_t fSlot;
84 std::array<IntType, NVals> fValue;
85 // SysPoint fTime;
86 TTimeStamp fTS;
87 UInt_t fEventId;
88 UChar_t fExtCond;
89
90 ClassDef(BmnMSCDigit, 5);
91};
92
93#endif /* BMNMSCDIGIT_H */
std::chrono::system_clock SysClock
std::chrono::time_point< SysClock > SysPoint
const uint8_t MSC_EC_BUSY
Definition RawTypes.h:90
const uint32_t MSC_N_COUNTERS
Definition RawTypes.h:88
const uint8_t MSC_EC_SPILL
Definition RawTypes.h:89
static SysPoint TimeStamp2TP(TTimeStamp p)
BmnMSCDigit(UInt_t iSerial, UInt_t iSlot, UInt_t evId, SysPoint time=SysPoint::min())
Definition BmnMSCDigit.h:52
static constexpr const UInt_t GetNVals()
Definition BmnMSCDigit.h:76
UInt_t GetSerial() const
Definition BmnMSCDigit.h:60
SysPoint GetTime() const
Definition BmnMSCDigit.h:66
bool IsSpill()
Definition BmnMSCDigit.h:72
TTimeStamp GetTS() const
Definition BmnMSCDigit.h:68
bool IsBusy()
Definition BmnMSCDigit.h:74
UInt_t GetLastEventId() const
Definition BmnMSCDigit.h:70
std::array< IntType, MSC_N_COUNTERS > & GetValue()
Definition BmnMSCDigit.h:64
virtual ~BmnMSCDigit()
Definition BmnMSCDigit.h:78
UInt_t GetSlot() const
Definition BmnMSCDigit.h:62
BmnMSCDigit(UInt_t iSerial=0, UInt_t iSlot=0, std::array< IntType, MSC_N_COUNTERS > iValue={}, UInt_t evId=0, SysPoint time=SysPoint::min(), UChar_t ext_cond=0)
Definition BmnMSCDigit.h:27
std::chrono::time_point< SysClock > SysPoint
Definition BmnMSCDigit.h:13