8 #include "Mu2e-STMDAQ/utils/Hex.hh"
10 #include "Mu2e-STMDAQ/utils/async_logger.hh"
13 #include "Mu2e-STMDAQ/config/include/master_config.hh"
14 #include "Mu2e-STMDAQ/config/include/fw_config.hh"
15 #include "Mu2e-STMDAQ/config/include/mu2e_config.hh"
16 #include "Mu2e-STMDAQ/config/include/udp_config.hh"
17 #include "Mu2e-STMDAQ/config/include/zs_config.hh"
18 #include "Mu2e-STMDAQ/config/include/prescale_config.hh"
19 #include "Mu2e-STMDAQ/config/include/write_config.hh"
20 #include "Mu2e-STMDAQ/config/include/buffer_config.hh"
21 #include "Mu2e-STMDAQ/config/include/baseline_config.hh"
22 #include "Mu2e-STMDAQ/config/include/mwd_config.hh"
23 #include "Mu2e-STMDAQ/config/include/pulseheight_config.hh"
24 #include "Mu2e-STMDAQ/config/include/dqm_config.hh"
25 #include "Mu2e-STMDAQ/config/include/tcp_config.hh"
28 static constexpr
int CHNUM = 2;
30 static constexpr
int HPGE = 0;
32 static constexpr
int LABR = 1;
35 static constexpr uint16_t MAX_PACKET_SIZE = 8198;
37 static constexpr uint16_t MAX_PACKET_LEN = MAX_PACKET_SIZE/2;
40 static constexpr uint16_t pHdr_Size = 6;
42 static constexpr uint16_t pHdr_Len = pHdr_Size/2;
44 static constexpr uint16_t pHdr_pNum1 = 0;
45 static constexpr uint16_t pHdr_pNum2 = 1;
46 static constexpr uint16_t pHdr_end = 2;
47 static constexpr uint16_t pHdr_check = 0xFFEE;
50 static constexpr uint16_t DEAD = 0xDEAD;
51 static constexpr uint16_t BEEF = 0xBEEF;
54 static constexpr uint16_t fw_eHdr_size = 64;
56 static constexpr uint16_t fw_eHdr_len = fw_eHdr_size/
sizeof(int16_t);
62 static constexpr uint16_t size = fw_eHdr_size;
64 static constexpr uint16_t len = fw_eHdr_len;
67 static constexpr uint16_t anchor_size = 8;
69 static constexpr uint16_t anchor_len = anchor_size/2;
71 static constexpr uint16_t anchor_start = 0;
74 static constexpr int16_t anchor_data[anchor_len]
75 = {
static_cast<int16_t
>(0xCAFE),
76 static_cast<int16_t
>(0xBBBB),
77 static_cast<int16_t
>(0xAAAA),
78 static_cast<int16_t
>(0xCAFE)};
81 static constexpr uint16_t anchor_0 = 0;
82 static constexpr uint16_t anchor_1 = 1;
83 static constexpr uint16_t anchor_2 = 2;
84 static constexpr uint16_t anchor_3 = 3;
85 static constexpr uint16_t ADCclk_0 = 4;
86 static constexpr uint16_t ADCclk_1 = 5;
87 static constexpr uint16_t ADCclk_2 = 6;
88 static constexpr uint16_t ADCclk_3 = 7;
89 static constexpr uint16_t EvNum_0 = 8;
90 static constexpr uint16_t EvNum_1 = 9;
91 static constexpr uint16_t EvNum_2 = 10;
92 static constexpr uint16_t EWT_0 = 11;
93 static constexpr uint16_t EWT_1 = 12;
94 static constexpr uint16_t EWT_2 = 13;
95 static constexpr uint16_t EM_0 = 14;
96 static constexpr uint16_t EM_1 = 15;
97 static constexpr uint16_t EM_2_DRTDC = 16;
98 static constexpr uint16_t EvStart = 17;
99 static constexpr uint16_t EvInPacket = 18;
100 static constexpr uint16_t Beef = 19;
101 static constexpr uint16_t SubRunNum_0 = 20;
102 static constexpr uint16_t SubRunNum_1 = 21;
103 static constexpr uint16_t ZSflag_PreVal = 22;
104 static constexpr uint16_t EvLen = 23;
105 static constexpr uint16_t RunNum_0 = 24;
106 static constexpr uint16_t RunNum_1 = 25;
107 static constexpr uint16_t RunNum_2 = 26;
108 static constexpr uint16_t RunNum_3 = 27;
109 static constexpr uint16_t Ch_DTCclk_0 = 28;
110 static constexpr uint16_t DTCclk_1 = 29;
111 static constexpr uint16_t DTCclk_2 = 30;
112 static constexpr uint16_t DTCclk_3 = 31;
120 static constexpr uint16_t sw_eHdr_size = 44;
122 static constexpr uint16_t sw_eHdr_len = sw_eHdr_size/
sizeof(int16_t);
128 static constexpr uint16_t size = sw_eHdr_size;
130 static constexpr uint16_t len = sw_eHdr_len;
133 static constexpr int16_t anchor =
static_cast<int16_t
>(0xCAFE);
136 static constexpr uint16_t anchor_start = 0;
137 static constexpr uint16_t EWT_0 = 1;
138 static constexpr uint16_t EWT_1 = 2;
139 static constexpr uint16_t EWT_2 = 3;
140 static constexpr uint16_t ADCclk_0 = 4;
141 static constexpr uint16_t ADCclk_1 = 5;
142 static constexpr uint16_t ADCclk_2 = 6;
143 static constexpr uint16_t ADCclk_3 = 7;
144 static constexpr uint16_t Ch_DTCclk_0 = 8;
145 static constexpr uint16_t DTCclk_1 = 9;
146 static constexpr uint16_t DTCclk_2 = 10;
147 static constexpr uint16_t DTCclk_3 = 11;
148 static constexpr uint16_t EM_0 = 12;
149 static constexpr uint16_t EM_1 = 13;
150 static constexpr uint16_t EM_2_DRTDC = 14;
151 static constexpr uint16_t PRESCALE = 15;
153 static constexpr uint16_t RAW_LEN = 16;
154 static constexpr uint16_t ZS_REGIONS = 17;
155 static constexpr uint16_t ZS_LEN = 18;
156 static constexpr uint16_t PH_NUM = 19;
157 static constexpr uint16_t DATA_FLAGS = 20;
158 static constexpr uint16_t anchor_end = 21;
165 using sw_event_header = std::array<int16_t, sw_eHdr_info::len>;
175 const std::shared_ptr<AsyncLogger> logger;
181 const std::shared_ptr<AsyncLogger>& logger_);
185 std::cout <<
"STMdata destructor called.\n";
189 uint32_t make_uint32_t(int16_t p0, int16_t p1);
192 uint64_t make_uint64_t(int16_t p0, int16_t p1, int16_t p2, int16_t p3);
195 std::vector<int16_t> split_uint32_t(uint32_t value);
198 std::vector<int16_t> split_uint64_t(uint64_t value);
201 uint64_t get_event_number(int16_t*
data, uint64_t hdr_index);
204 uint64_t get_ADCclock(int16_t*
data, uint64_t hdr_index);
207 uint64_t get_EWT(int16_t*
data, uint64_t hdr_index);
210 uint64_t get_event_mode(int16_t*
data, uint64_t hdr_index);
213 uint64_t get_Ch_DTCclk(int16_t*
data, uint64_t hdr_index);
216 uint16_t get_channel(int16_t*
data, uint64_t hdr_index);
219 uint64_t get_DTCclock(int16_t*
data, uint64_t hdr_index);
222 uint16_t check_dead_beef(int16_t*
data, uint64_t packet_start, uint16_t leftInPacket);
225 sw_event_header create_sw_eHdr(int16_t*
data, uint64_t hdr_index);
228 sw_event_header create_sw_eHdr(uint64_t EWT,