105 static const string here{
"VTPModule::DecodeBlockHeader" };
109 vtp_header_data.slot_blk_hdr = (pdat >> 22) & 0x1F;
113 *
fDebugFile <<
"VTPModule::Decode:: Slot from VTP block header = " << vtp_header_data.slot_blk_hdr << endl;
119 vtp_header_data.iblock_num = (pdat >> 8) & 0x3FF;
120 vtp_header_data.nblock_events = (pdat >> 0) & 0xFF;
124 *
fDebugFile <<
"VTPModule::Decode:: VTP BLOCK HEADER"
125 <<
" >> data = " << hex << pdat << dec
126 <<
" >> slot = " << vtp_header_data.slot_blk_hdr
127 <<
" >> event block number = " << vtp_header_data.iblock_num
128 <<
" >> num events in block = " << vtp_header_data.nblock_events
169 vtp_header_data.trig_time_w1 = (pdat >> 0) & 0xFFFFFF;
171 vtp_header_data.trig_time_w2 = (pdat >> 0) & 0xFFFFFF;
173 vtp_header_data.trig_time = (vtp_header_data.trig_time_w2 << 24) | vtp_header_data.trig_time_w1;
177 *
fDebugFile <<
"VTPModule::Decode:: VTP TRIGGER TIME"
178 <<
" >> data = " << hex << pdat << dec
179 <<
" >> trigger time word 1 = " << vtp_header_data.trig_time_w1
180 <<
" >> trigger time word 2 = " << vtp_header_data.trig_time_w2
181 <<
" >> trigger time = " << vtp_header_data.trig_time
189 uint32_t tpattern = 0;
200 tpattern = (pdat >> 0) & 0xFFFF;
201 ttime = (pdat >> 16) & 0x7F;
203 if( (tpattern >> 0 ) & 0x1 ) ttype0 = 1;
204 if( (tpattern >> 1 ) & 0x1 ) ttype1 = 1;
205 if( (tpattern >> 2 ) & 0x1 ) ttype2 = 1;
206 if( (tpattern >> 3 ) & 0x1 ) ttype3 = 1;
207 if( (tpattern >> 4 ) & 0x1 ) ttype4 = 1;
208 if( (tpattern >> 5 ) & 0x1 ) ttype5 = 1;
211 vtp_trigger_data.trigtype0.push_back( ttype0 );
212 vtp_trigger_data.trigtype1.push_back( ttype1 );
213 vtp_trigger_data.trigtype2.push_back( ttype2 );
214 vtp_trigger_data.trigtype3.push_back( ttype3 );
215 vtp_trigger_data.trigtype4.push_back( ttype4 );
216 vtp_trigger_data.trigtype5.push_back( ttype5 );
217 vtp_trigger_data.trigtime.push_back( ttime );
222 *
fDebugFile <<
"VTPModule::Decode:: VTP Trigger"
223 <<
" >> data = " << hex << pdat << dec
224 <<
" >> trig0 = " << ttype0
225 <<
" >> trig1 = " << ttype1
226 <<
" >> trig2 = " << ttype2
227 <<
" >> trig time = " << ttime
242 ce = (pdat >> 0) & 0x3FFF;
243 vtp_cluster_data.energy.push_back( ce );
246 ct = (pdat >> 0) & 0x7FF;
247 cn = (pdat >> 11) & 0xF;
248 cx = (pdat >> 15) & 0x1F;
249 cy = (pdat >> 20) & 0x3F;
250 vtp_cluster_data.time.push_back( ct );
251 vtp_cluster_data.nblocks.push_back( cn );
252 vtp_cluster_data.xcoord.push_back( cx );
253 vtp_cluster_data.ycoord.push_back( cy );
258 *
fDebugFile <<
"VTPModule::Decode:: VTP Cluster"
259 <<
" >> data = " << hex << pdat << dec
260 <<
" >> energy = " << ce
261 <<
" >> n blocks = " << cn
262 <<
" >> time = " << ct
263 <<
" >> x coordinate = " << cx
264 <<
" >> y coordinate = " << cy
276 static const vector<string> what_text{
"UNDEFINED TYPE",
279 "INCORRECT DECODING" };
281 static const map<uint32_t, uint32_t> what_map = {
299 size_t i = (idx == what_map.end()) ? what_text.size() - 1 : idx->second;
300 const string& what = what_text[i];
302 str <<
"VTPModule::Decode:: " << what
303 <<
" >> data = " << hex << pdat << dec
304 <<
" >> data type id = " << data_type_id
308 if( idx == what_map.end() )
397 for(
vsiz_t itrig = 0; itrig < vtp_trigger_data.trigtype0.size(); itrig++ )
398 sldat->
loadData(
"scaler", 0, vtp_trigger_data.trigtype0[itrig], vtp_trigger_data.trigtype0[itrig]);
399 for(
vsiz_t itrig = 0; itrig < vtp_trigger_data.trigtype1.size(); itrig++ )
400 sldat->
loadData(
"scaler", 0, vtp_trigger_data.trigtype1[itrig], vtp_trigger_data.trigtype1[itrig]);
401 for(
vsiz_t itrig = 0; itrig < vtp_trigger_data.trigtype2.size(); itrig++ )
402 sldat->
loadData(
"scaler", 0, vtp_trigger_data.trigtype2[itrig], vtp_trigger_data.trigtype2[itrig]);
403 for(
vsiz_t itrig = 0; itrig < vtp_trigger_data.trigtime.size(); itrig++ )
404 sldat->
loadData(
"scaler", 0, vtp_trigger_data.trigtime[itrig], vtp_trigger_data.trigtime[itrig]);
407 for(
vsiz_t iclus = 0; iclus < vtp_cluster_data.energy.size(); iclus++ )
408 sldat->
loadData(
"scaler", 0, vtp_cluster_data.energy[iclus], vtp_cluster_data.energy[iclus]);
409 for(
vsiz_t iclus = 0; iclus < vtp_cluster_data.time.size(); iclus++ )
410 sldat->
loadData(
"scaler", 0, vtp_cluster_data.time[iclus], vtp_cluster_data.time[iclus]);
411 for(
vsiz_t iclus = 0; iclus < vtp_cluster_data.nblocks.size(); iclus++ )
412 sldat->
loadData(
"scaler", 0, vtp_cluster_data.nblocks[iclus], vtp_cluster_data.nblocks[iclus]);
413 for(
vsiz_t iclus = 0; iclus < vtp_cluster_data.xcoord.size(); iclus++ )
414 sldat->
loadData(
"scaler", 0, vtp_cluster_data.xcoord[iclus], vtp_cluster_data.xcoord[iclus]);
415 for(
vsiz_t iclus = 0; iclus < vtp_cluster_data.ycoord.size(); iclus++ )
416 sldat->
loadData(
"scaler", 0, vtp_cluster_data.ycoord[iclus], vtp_cluster_data.ycoord[iclus]);