BmnRoot 26.10.0-18-g4e3414f9
Software framework of the BM@N experiment
Loading...
Searching...
No Matches
BmnT0Raw.h
Go to the documentation of this file.
1#ifndef BMNT0RAW_H
2#define BMNT0RAW_H
3
4#include <array>
5#include <chrono>
6#include <string>
7#include <vector>
8// ROOT
9#include <TObject.h>
10// BmnRoot
11#include "BmnFunctionSet.h"
12#include "RawTypes.h"
13
14using SysClock = std::chrono::system_clock;
15using SysPoint = std::chrono::time_point<SysClock>;
16using Dur_ns = std::chrono::duration<Double_t, std::nano>;
17using std::map;
18using std::string;
19using std::vector;
20
22{
24 : active{}
25 , name{}
26 , V_P1{}
27 , V_P2{}
28 , state{}
29 {}
30 virtual ~LV_Channel_Config() = default;
31 bool active;
32 string name;
33 int32_t V_P1;
34 int32_t V_P2;
35 bool state;
36 void print()
37 {
38 printf("active: %d\n", active);
39 printf(" name: %s\n", name.data());
40 printf(" V_P1: %d\n", V_P1);
41 printf(" V_P2: %d\n", V_P2);
42 printf(" state: %d\n", state);
43 }
45};
46
48{
54 virtual ~Discriminator_Config() = default;
55 int8_t polarity;
56 int32_t threshold;
57 string threshold_unit;
58 void print()
59 {
60 printf(" polarity: %2d\n", polarity);
61 printf("threshold: %5d %s\n", threshold, threshold_unit.data());
62 }
64};
65
66/**
67 * T0 module spill settings and counts
68 */
69class BmnT0Raw : public TObject
70{
71 public:
72 /** Constructor **/
73 BmnT0Raw(const uint32_t* src = nullptr)
74 : counters{}
76 , bd_mult_h{0}
77 , bd_mult_l{0}
79 , trigger_mask{0}
80 , timestamp{0, 0}
81 {
82 if (src)
83 memcpy(counters.data(), src, sizeof(uint32_t) * kT0_BIN_BLOCK_WORDS);
84 }
85 /** Destructor **/
86 virtual ~BmnT0Raw() = default;
87
88 constexpr static const uint32_t CountersCount() { return kT0_BIN_BLOCK_WORDS; }
89
91
93
94 void SetTS(TTimeStamp ts) { timestamp = ts; }
95
97
98 // void SetTimeSinceLastEv(Dur_ns dur) { since_last_event = dur;}
99 /**
100 * Write time since the last written event.
101 * "last" - actually last in the raw data, not necessarily last in the spill
102 * because the stat events are written asynchronously
103 * @param dur - time (ns) since the last event
104 */
106
108 {
109 // return since_last_event;
111 }
112
114
115 std::array<uint32_t, kT0_BIN_BLOCK_WORDS>& Counters() { return counters; }
116
117 map<uint32_t, Discriminator_Config>& Discriminators() { return discriminator_cfg; }
118
119 map<uint32_t, LV_Channel_Config>& LVChannelConfig() { return lv_channel_cfg; }
120 map<uint32_t, int32_t>& DelayLines() { return delay_lines; }
121 map<uint32_t, bool>& Switches() { return switches; }
122
123 void SetComment(string str) { comment = str; }
124
125 string GetComment() { return comment; }
126
127 void SetBDMultH(uint32_t val) { bd_mult_h = val; }
128
129 uint32_t GetBDMultH() { return bd_mult_h; }
130
131 void SetBDMultL(uint32_t val) { bd_mult_l = val; }
132
133 uint32_t GetBDMultL() { return bd_mult_l; }
134
135 void SetExtraDelaysMask(uint32_t val) { extra_delays_mask = val; }
136
138
139 void SetTriggerMask(uint32_t val) { trigger_mask = val; }
140
141 uint32_t GetTriggerMask() { return trigger_mask; }
142
143 protected:
144 std::array<uint32_t, kT0_BIN_BLOCK_WORDS> counters;
146 string comment;
147 uint32_t bd_mult_h;
148 uint32_t bd_mult_l;
149 uint32_t extra_delays_mask;
150 uint32_t trigger_mask;
151
153 // SysPoint time;
154 // Dur_ns since_last_event;
155
156 map<uint32_t, Discriminator_Config> discriminator_cfg;
157 map<uint32_t, LV_Channel_Config> lv_channel_cfg;
158 map<uint32_t, int32_t> delay_lines;
159 map<uint32_t, bool> switches;
160
161 ClassDef(BmnT0Raw, 9);
162};
163
164#endif /* BMNT0RAW_H */
double Double_t
#define ClassDef(name, id)
std::chrono::system_clock SysClock
std::chrono::time_point< SysClock > SysPoint
std::chrono::duration< Double_t, std::nano > Dur_ns
Definition BmnT0Raw.h:16
const uint32_t kT0_BIN_BLOCK_WORDS
Definition RawTypes.h:93
static SysPoint TimeStamp2TP(TTimeStamp p)
static TTimeStamp TimePoint2TS(SysPoint p)
T0 module spill settings and counts.
Definition BmnT0Raw.h:70
std::array< uint32_t, kT0_BIN_BLOCK_WORDS > & Counters()
Definition BmnT0Raw.h:115
std::array< uint32_t, kT0_BIN_BLOCK_WORDS > counters
Definition BmnT0Raw.h:144
uint32_t GetTriggerMask()
Definition BmnT0Raw.h:141
map< uint32_t, Discriminator_Config > & Discriminators()
Definition BmnT0Raw.h:117
void SetBDMultH(uint32_t val)
Definition BmnT0Raw.h:127
void SetBDMultL(uint32_t val)
Definition BmnT0Raw.h:131
uint32_t GetBDMultH()
Definition BmnT0Raw.h:129
SysPoint GetTime()
Definition BmnT0Raw.h:92
uint32_t extra_delays_mask
Definition BmnT0Raw.h:149
static constexpr const uint32_t CountersCount()
Definition BmnT0Raw.h:88
map< uint32_t, Discriminator_Config > discriminator_cfg
Definition BmnT0Raw.h:156
map< uint32_t, bool > & Switches()
Definition BmnT0Raw.h:121
void SetComment(string str)
Definition BmnT0Raw.h:123
map< uint32_t, LV_Channel_Config > & LVChannelConfig()
Definition BmnT0Raw.h:119
map< uint32_t, bool > switches
Definition BmnT0Raw.h:159
TTimeStamp GetTS()
Definition BmnT0Raw.h:96
void SetTime(SysPoint point)
Definition BmnT0Raw.h:90
Dur_ns GetTimeSinceLastEv()
Definition BmnT0Raw.h:107
string GetComment()
Definition BmnT0Raw.h:125
uint32_t bd_mult_h
Definition BmnT0Raw.h:147
BmnT0Raw(const uint32_t *src=nullptr)
Constructor.
Definition BmnT0Raw.h:73
string comment
Definition BmnT0Raw.h:146
uint32_t trigger_mask
Definition BmnT0Raw.h:150
TTimeStamp timestamp
Definition BmnT0Raw.h:152
map< uint32_t, int32_t > delay_lines
Definition BmnT0Raw.h:158
void SetTS(TTimeStamp ts)
Definition BmnT0Raw.h:94
virtual ~BmnT0Raw()=default
Destructor.
Double_t since_last_event_ns
Definition BmnT0Raw.h:145
uint32_t bd_mult_l
Definition BmnT0Raw.h:148
uint32_t GetExtraDelaysMask()
Definition BmnT0Raw.h:137
void SetTriggerMask(uint32_t val)
Definition BmnT0Raw.h:139
uint32_t GetBDMultL()
Definition BmnT0Raw.h:133
map< uint32_t, int32_t > & DelayLines()
Definition BmnT0Raw.h:120
void SetTimeSinceLastEvNs(Double_t dur)
Write time since the last written event.
Definition BmnT0Raw.h:105
void SetExtraDelaysMask(uint32_t val)
Definition BmnT0Raw.h:135
Double_t GetTimeSinceLastEvNs()
Definition BmnT0Raw.h:113
map< uint32_t, LV_Channel_Config > lv_channel_cfg
Definition BmnT0Raw.h:157
std::chrono::time_point< SysClock > SysPoint
Definition BmnT0Raw.h:15
std::chrono::duration< Double_t, std::nano > Dur_ns
Definition BmnT0Raw.h:16
virtual ~Discriminator_Config()=default
virtual ~LV_Channel_Config()=default