8 #include <rawdata/modules/PrintDataTemplate.h>
10 #include <rawdata/dataobjects/RawPXD.h>
30 setDescription(
"Encode DataStore into RingBuffer");
32 m_compressionLevel = 0;
33 B2INFO(
"PrintDataTemplate: Constructor done.");
41 PrintDataTemplateModule::~PrintDataTemplateModule()
45 void PrintDataTemplateModule::initialize()
47 B2INFO(
"PrintDataTemplate: initialize() started.");
54 B2INFO(
"PrintDataTemplate: initialize() done.");
65 void PrintDataTemplateModule::printBuffer(
int* buf,
int nwords)
68 for (
int j = 0; j < nwords; j++) {
69 printf(
" %.8x", buf[ j ]);
70 if ((j + 1) % 8 == 0) {
82 void PrintDataTemplateModule::printFTSWEvent(
RawDataBlock* raw_datablock,
int i)
87 printf(
"*******FTSW data**********: nwords %d\n", nwords);
88 printBuffer(buf, nwords);
96 rawftsw.
SetBuffer(buf, nwords, delete_flag, num_event, num_nodes);
105 printf(
"HdrNwords %d nodeID %.8x runsub %.8x run %.4x sub %.4x exp %.4x eve %.8x trl %.8x\n",
116 printf(
"ctimetrg %.8x utime %.8x ctime %.8x trg %d TTD(sec %.8x usec %.8x) PC(sec %.8x usec %.8x)\n",
121 (
unsigned int)(tv.tv_sec),
122 (
unsigned int)(tv.tv_usec),
123 (
unsigned int)(tv_pc.tv_sec),
124 (
unsigned int)(tv_pc.tv_usec));
130 printf(
"IsHER %d TimeLastInj %u TimePrevTrg %u BunchNum %d FrameCnt %d \n",
143 void PrintDataTemplateModule::checkFTSWver2(
RawFTSW* rawftsw,
int i)
154 int runno_subrunno = buf[ 3 ] & 0x3fffff;
155 int runno = (buf[ 3 ] >> 8) & 0x3fff;
156 int subrunno = buf[ 3 ] & 0xff;
157 int expno = (buf[ 3 ] >> 22) & 0x3ff;
158 unsigned int eveno = (
unsigned int)buf[ 4 ];
160 unsigned int ctime_trgtype = (
unsigned int)buf[ 8 ];
161 unsigned int utime = (
unsigned int)buf[ 9 ];
162 unsigned int ctime = (
unsigned int)(buf[ 8 ] >> 4);
163 int trgtype = buf[ 8 ] & 0xf;
164 int tv_sec = (
unsigned int)buf[ 9 ];
165 int tv_usec = (int)(ctime / 127.216);
167 unsigned int frame_cnt = buf[ 11 ];
168 unsigned int time_prevtrg = buf[ 12 ];
169 int is_her = buf[ 13 ] >> 31;
170 unsigned int time_lastinj = buf[ 13 ] & 0x7fffffff;
171 unsigned int bunch_num = buf[ 14 ] & 0x7ff;
191 B2FATAL(
"Magic " << runno_subrunno <<
" != " << rawftsw->
GetRunNoSubRunNo(i));
194 if (runno != rawftsw->
GetRunNo(i)) {
195 B2FATAL(
"RunNo " << runno <<
" != " << rawftsw->
GetRunNo(i));
199 B2FATAL(
"SubRunNo " << subrunno <<
" != " << rawftsw->
GetSubRunNo(i));
202 if (expno != rawftsw->
GetExpNo(i)) {
203 B2FATAL(
"ExpNo" << expno <<
" != " << rawftsw->
GetExpNo(i));
206 if (eveno != rawftsw->
GetEveNo(i)) {
207 B2FATAL(
"EveNo " << eveno <<
" != " << rawftsw->
GetEveNo(i));
211 B2FATAL(
"ctime_trg " << ctime_trgtype <<
" != " << rawftsw->
GetTTCtimeTRGType(i));
215 B2FATAL(
"utime " << utime <<
" != " << rawftsw->
GetTTUtime(i));
219 B2FATAL(
"ctime " << ctime <<
" != " << rawftsw->
GetTTCtime(i));
223 B2FATAL(
"trgtype " << trgtype <<
" != " << rawftsw->
GetTRGType(i));
226 if (tv_sec != (
int)(tv.tv_sec)) {
227 B2FATAL(
"tv_sec " << tv_sec <<
" != " << (
int)(tv.tv_sec));
230 if (tv_usec != (
int)(tv.tv_usec)) {
231 B2FATAL(
"tv_usec " << tv_usec <<
" != " << (
int)(tv.tv_usec));
235 B2FATAL(
"frame_cnt " << frame_cnt <<
" != " << rawftsw->
GetFrameCount(i));
242 if (is_her != rawftsw->
GetIsHER(i)) {
243 B2FATAL(
"is_her " << is_her <<
" != " << rawftsw->
GetIsHER(i));
251 B2FATAL(
"bunch_num " << bunch_num <<
" != " << rawftsw->
GetBunchNumber(i));
257 void PrintDataTemplateModule::printCOPPEREvent(
RawCOPPER* raw_copper,
int i)
260 printf(
": Event %8u node 0x%.8x block %d by: sum det %d by : A %d by B %d by C %d by D %d by\n",
270 printf(
"EventMetaData : exp %d run %d subrun %d eve %.8d\n", m_eventMetaDataPtr->getExperiment(),
271 m_eventMetaDataPtr->getRun(), m_eventMetaDataPtr->getSubrun(), m_eventMetaDataPtr->getEvent());
273 if (m_eventMetaDataPtr->getErrorFlag()) {
274 printf(
"!!!!!!!!! ERROR event !!!!!!!!!! : eve %u errflag %.8x\n", raw_copper->
GetEveNo(i), m_eventMetaDataPtr->getErrorFlag());
282 for (
int j = 0; j < max_num_ch ; j++) {
284 printf(
"===== Detector Buffer(ch %d) 0x%x words (finesse 0x%x) \n", j
293 void PrintDataTemplateModule::printPXDEvent(
RawPXD* raw_pxd)
295 printf(
": block size %d bytes : bebafeca = %04x :\n",
296 (
int)raw_pxd->
size(), raw_pxd->
data()[0]);
297 printf(
"******* Raw PXD data block (including Detector Buffer) **********\n");
298 printBuffer(raw_pxd->
data(), raw_pxd->
size());
300 int* temp_buf = raw_pxd->
data();
301 vector <int> nframesv;
302 int nframes = ((temp_buf[ 1 ] >> 24) & 0xff) | (((temp_buf[ 1 ] >> 16) & 0xff) << 8) |
303 (((temp_buf[ 1 ] >> 8) & 0xff) << 16) | (((temp_buf[ 1 ] >> 0) & 0xff) << 24);
305 for (
int i = 0; i < nframes; i++) {
307 ((temp_buf[ i + 2 ] >> 24) & 0xff) | (((temp_buf[ i + 2 ] >> 16) & 0xff) << 8) |
308 (((temp_buf[ i + 2 ] >> 8) & 0xff) << 16) | (((temp_buf[ i + 2 ] >> 0) & 0xff) << 24);
309 nframesv.push_back(temp_nframes);
313 unsigned int onsen_trg = temp_buf[ nframes + 2 ];
314 onsen_trg = ((onsen_trg >> 24) & 0xff) | (((onsen_trg >> 16) & 0xff) << 8) |
315 (((onsen_trg >> 8) & 0xff) << 16) | (((onsen_trg >> 0) & 0xff) << 24);
316 unsigned int hlttrg = ((temp_buf[ nframes + 4 ] >> 24) & 0xff) | (((temp_buf[ nframes + 4 ] >> 16) & 0xff) << 8) |
317 (((temp_buf[ nframes + 4 ] >> 8) & 0xff) << 16) | (((temp_buf[ nframes + 4 ] >> 0) & 0xff) << 24);
323 int pos = nframesv[ 0 ] / 4 + nframes + 2 ;
325 for (
int i = 1; i < (int)(nframesv.size()); i++) {
326 if ((nframesv[ i ] % 4) != 0)
break;
327 int dhh_trg1 = (temp_buf[ pos ] >> 24) & 0xff;
328 int dhh_trg2 = (temp_buf[ pos ] >> 16) & 0xff;
329 int dhh_trg3 = (temp_buf[ pos + 1 ] >> 8) & 0xff;
330 int dhh_trg4 = (temp_buf[ pos + 1 ] >> 0) & 0xff;
331 unsigned int dhh_trg = dhh_trg1 | (dhh_trg2 << 8) | (dhh_trg3 << 16) | (dhh_trg4 << 24);
334 if (((temp_buf[ pos ] >> 4) & 0x7) == 5) {
335 ctime_type = ((temp_buf[ pos + 2 ] & 0xff) << 24) |
336 (((temp_buf[ pos + 2 ] >> 8) & 0xff) << 16) |
337 (((temp_buf[ pos + 1 ] >> 16) & 0xff) << 8) |
338 (((temp_buf[ pos + 1 ] >> 24) & 0xff));
341 if (((temp_buf[ pos ] >> 4) & 0x7) == 1) {
342 dhe_time = ((temp_buf[ pos + 2 ] & 0xff) << 24) |
343 (((temp_buf[ pos + 2 ] >> 8) & 0xff) << 16) |
344 (((temp_buf[ pos + 1 ] >> 16) & 0xff) << 8) |
345 (((temp_buf[ pos + 1 ] >> 24) & 0xff));
350 printf(
"Event tag(16bits) in PXD data : frame %.2d hlt %.4x onsen %.4x dhh %.4x\n", i + 1, hlttrg & 0xffff, onsen_trg & 0xffff,
352 if (((dhh_trg & 0xffff) != (hlttrg & 0xffff)) || ((dhh_trg & 0xffff) != (onsen_trg & 0xffff))) {
353 printf(
"### ERROR !! Event mixing occured. : frame %d hlt %.4x onsen %.4x dhh %.4x\n", i + 1, hlttrg & 0xffff, onsen_trg & 0xffff,
356 pos += nframesv[ i ] / 4;
359 printf(
"PXD FTSW %d TRG %u DHE %d\n", ctime_type, hlttrg, dhe_time);
364 void PrintDataTemplateModule::event()
368 B2INFO(
"PrintDataTemplate: event() started.");
375 for (
int i = 0; i < raw_datablkarray.
getEntries(); i++) {
376 for (
int j = 0; j < raw_datablkarray[ i ]->GetNumEntries(); j++) {
377 int* temp_buf = raw_datablkarray[ i ]->GetBuffer(j);
378 int nwords = raw_datablkarray[ i ]->GetBlockNwords(j);
382 if (raw_datablkarray[ i ]->CheckFTSWID(j)) {
384 printf(
"\n===== DataBlock( RawDataBlock(FTSW) ) : Block # %d ", i);
386 temp_raw_ftsw.
SetBuffer(temp_buf, nwords, delete_flag, num_nodes, num_events);
387 printFTSWEvent(&temp_raw_ftsw, 0);
388 }
else if (raw_datablkarray[ i ]->CheckTLUID(j)) {
393 printf(
"\n===== DataBlock( RawDataBlock(COPPER) ) : Block # %d ", i);
395 temp_raw_copper.
SetBuffer(temp_buf, nwords, delete_flag, num_nodes, num_events);
396 printCOPPEREvent(&temp_raw_copper, 0);
406 for (
int i = 0; i < raw_tluarray.
getEntries(); i++) {
407 for (
int j = 0; j < raw_tluarray[ i ]->GetNumEntries(); j++) {
408 printf(
"\n===== DataBlock(RawTLU) : Block # %d ", i);
409 printFTSWEvent(raw_tluarray[ i ], j);
417 for (
int i = 0; i < raw_ftswarray.
getEntries(); i++) {
418 for (
int j = 0; j < raw_ftswarray[ i ]->GetNumEntries(); j++) {
419 printf(
"\n===== DataBlock(RawFTSW): Block # %d ", i);
420 printFTSWEvent(raw_ftswarray[ i ], j);
421 if (raw_ftswarray[ i ]->m_version == 2) {
422 checkFTSWver2(raw_ftswarray[ i ], j);
432 for (
int i = 0; i < rawcprarray.
getEntries(); i++) {
433 for (
int j = 0; j < rawcprarray[ i ]->GetNumEntries(); j++) {
434 printf(
"\n===== DataBlock(RawCOPPER): Block # %d ", i);
435 printCOPPEREvent(rawcprarray[ i ], j);
443 for (
int i = 0; i < raw_svdarray.
getEntries(); i++) {
444 for (
int j = 0; j < raw_svdarray[ i ]->GetNumEntries(); j++) {
445 printf(
"\n===== DataBlock(RawSVD) : Block # %d ", i);
446 printCOPPEREvent(raw_svdarray[ i ], j);
455 for (
int i = 0; i < raw_cdcarray.
getEntries(); i++) {
456 for (
int j = 0; j < raw_cdcarray[ i ]->GetNumEntries(); j++) {
457 printf(
"\n===== DataBlock(RawCDC) : Block # %d ", i);
458 printCOPPEREvent(raw_cdcarray[ i ], j);
466 for (
int i = 0; i < raw_pxdarray.
getEntries(); i++) {
467 printf(
"\n===== DataBlock(RawPXD) : Block # %d ", i);
468 printPXDEvent(raw_pxdarray[ i ]);
472 for (
int i = 0; i < raw_bpidarray.
getEntries(); i++) {
473 for (
int j = 0; j < raw_bpidarray[ i ]->GetNumEntries(); j++) {
474 printf(
"\n===== DataBlock(RawTOP) : Block # %d ", i);
475 printCOPPEREvent(raw_bpidarray[ i ], j);
480 for (
int i = 0; i < raw_epidarray.
getEntries(); i++) {
481 for (
int j = 0; j < raw_epidarray[ i ]->GetNumEntries(); j++) {
482 printf(
"\n===== DataBlock(RawARICH) : Block # %d ", i);
483 printCOPPEREvent(raw_epidarray[ i ], j);
488 for (
int i = 0; i < raw_klmarray.
getEntries(); i++) {
489 for (
int j = 0; j < raw_klmarray[ i ]->GetNumEntries(); j++) {
490 printf(
"\n===== DataBlock(RawKLM) : Block # %d ", i);
491 printCOPPEREvent(raw_klmarray[ i ], j);
496 for (
int i = 0; i < raw_eclarray.
getEntries(); i++) {
497 for (
int j = 0; j < raw_eclarray[ i ]->GetNumEntries(); j++) {
498 printf(
"\n===== DataBlock(RawECL) : Block # %d ", i);
499 printCOPPEREvent(raw_eclarray[ i ], j);
505 for (
int i = 0; i < raw_trgarray.
getEntries(); i++) {
506 for (
int j = 0; j < raw_trgarray[ i ]->GetNumEntries(); j++) {
507 printf(
"\n===== DataBlock(RawTRg) : Block # %d ", i);
508 printCOPPEREvent(raw_trgarray[ i ], j);