9 #include <trg/top/modules/trgtopUnpacker/trgtopUnpackerModule.h>
26 string TRGTOPUnpackerModule::version()
const
28 return string(
"1.00");
35 TRGTOPUnpackerModule::TRGTOPUnpackerModule()
36 :
Module::
Module(), m_eventNumber(0), m_trigType(0), m_nodeId(0), m_nWords(0)
41 string desc =
"TRGTOPUnpackerModule(" +
version() +
")";
45 B2DEBUG(20,
"TRGTOPUnpacker: Constructor done.");
52 TRGTOPUnpackerModule::~TRGTOPUnpackerModule()
71 for (
int i = 0; i < raw_trgarray.
getEntries(); i++) {
72 for (
int j = 0; j < raw_trgarray[i]->GetNumEntries(); j++) {
74 m_nodeId = raw_trgarray[i]->GetNodeID(j);
78 m_nWords = raw_trgarray[i]->GetDetectorNwords(j, 0);
79 m_eventNumber = raw_trgarray[i]->GetEveNo(j);
115 int l1_revo = rdat[2] & 0x7ff;
118 int trgtag = (rdat[2] >> 12) & 0xfffff;
123 bool dataFormatKnown =
false;
126 int numberOfWindows = -1;
128 int dataFormatVersionExpected = -1;
129 int revoClockDeltaExpected = 4;
130 int cntr127DeltaExpected = 4;
140 dataFormatKnown =
true;
141 dataFormatVersionExpected = 0;
144 numberOfWindows = 24;
145 dataFormatKnown =
true;
146 dataFormatVersionExpected = 2;
149 numberOfWindows = 48;
150 dataFormatKnown =
true;
151 dataFormatVersionExpected = 1;
154 if (!dataFormatKnown) {
155 B2INFO(
"Unknown data format / error / exiting");
170 unsigned int testPattern;
172 int revoClockLast = -1;
173 int cntr127Last = -1;
176 unsigned int errorCountEvent = 0;
180 int t0CombinedDecisionLast = -1;
182 bool performBufferAnalysis =
true;
183 bool reportAllErrors =
true;
184 bool reportSummaryErrors =
true;
187 int counterDummyWindows = 0;
188 unsigned int testPatternDummyEvent = 0xbbbb;
189 for (
int iWindow = 0; iWindow < numberOfWindows; iWindow++) {
190 int index = iWindow * windowSize + 3;
191 testPattern = (rdat[index] >> 16) & 0xffff;
192 if (testPattern == testPatternDummyEvent) {
193 counterDummyWindows++;
197 testPattern = (rdat[index + 2] >> 29) & 0x7;
198 if (testPattern & 0x1) performBufferAnalysis =
false;
199 if (testPattern & 0x2) reportAllErrors =
false;
200 if (testPattern & 0x4) reportSummaryErrors =
false;
204 if (counterDummyWindows == numberOfWindows) {
205 performBufferAnalysis =
false;
207 if (counterDummyWindows != 0) {
208 if (reportAllErrors) B2ERROR(
"Corrupted data? numberOfWindows = " << numberOfWindows <<
", counterDummyWindows = " <<
209 counterDummyWindows);
210 performBufferAnalysis =
false;
216 int iWindowFirst = 0;
220 int numberRvcJumps = 0;
221 int numberCntr127Jumps = 0;
222 int windowRvcJumpFirst = -1;
223 int windowCntr127JumpFirst = -1;
224 int clocksRvcJumpFirst = -1;
225 int clocksCntr127JumpFirst = -1;
227 if (performBufferAnalysis) {
228 for (
int iWindow = 0; iWindow < numberOfWindows; iWindow++) {
229 int index = iWindow * windowSize + 3;
232 int revoClockNow = rdat[index] & 0x7ff;
235 if (revoClockLast != -1) {
237 int revoClockDeltaNow = revoClockNow - revoClockLast;
238 if (revoClockDeltaNow != revoClockDeltaExpected) {
240 if (revoClockDeltaNow == 1188 || revoClockDeltaNow == -92) {
242 if (iWindowFirst == 0) {
243 iWindowFirst = iWindow;
245 }
else if (revoClockDeltaNow != -1276) {
246 if (reportAllErrors) B2ERROR(
"rvc changed by an unexpected number of units: " << revoClockDeltaNow <<
", last rvc = " <<
248 ", current rvc = " << revoClockNow <<
", window " << iWindow <<
", index = " << index);
250 if (windowRvcJumpFirst < 0) {
251 windowRvcJumpFirst = iWindow;
252 clocksRvcJumpFirst = revoClockDeltaNow;
257 revoClockLast = revoClockNow;
259 int cntr127Now = (rdat[index + 1] >> 16) & 0xffff;
262 if (cntr127Last != -1) {
264 int cntr127DeltaNow = cntr127Now - cntr127Last;
265 if (cntr127DeltaNow != cntr127DeltaExpected) {
267 if (cntr127DeltaNow != 65444 && cntr127DeltaNow != -92 && cntr127DeltaNow != -65532) {
268 if (reportAllErrors) B2ERROR(
"cntr127 changed by an unexpected number of units: " << cntr127DeltaNow <<
", cntr127 last = " <<
270 ", cntr127 now = " << cntr127Now <<
", window " << iWindow <<
", index = " << index + 1);
271 numberCntr127Jumps++;
272 if (windowCntr127JumpFirst < 0) {
273 windowCntr127JumpFirst = iWindow;
274 clocksCntr127JumpFirst = cntr127DeltaNow;
279 cntr127Last = cntr127Now;
331 if (performBufferAnalysis) {
334 for (
int iWindowProvisional = 0; iWindowProvisional < numberOfWindows; iWindowProvisional++) {
337 int iWindow = iWindowProvisional + iWindowFirst;
339 if (iWindow >= numberOfWindows) {
340 iWindow = iWindow - numberOfWindows;
346 unsigned int errorCountWindowMinor = 0;
347 unsigned int errorCountWindowMajor = 0;
350 int index = iWindow * windowSize + 3;
352 unsigned int testPatternExpected = 0;
353 if (dataFormatVersionExpected == 1) testPatternExpected = 0xbbba;
354 else if (dataFormatVersionExpected == 2 || dataFormatVersionExpected == 3) testPatternExpected = 0xdddd;
356 testPattern = (rdat[index] >> 16) & 0xffff;
358 if (testPattern != testPatternExpected) {
360 if (reportAllErrors) B2ERROR(
"Unexpected test pattern 1: " << std::hex << testPattern << std::dec <<
", window " << iWindow <<
361 ", index = " << index);
362 errorCountWindowMajor++;
365 int dataFormatVersionNow = (rdat[index] >> 11) & 0x1f;
367 if (dataFormatVersionNow == 3 && dataFormatVersionExpected == 2) {
368 dataFormatVersionExpected = 3;
371 if (dataFormatVersionNow != dataFormatVersionExpected) {
372 if (reportAllErrors) B2ERROR(
"Unexpected data format version: " << dataFormatVersionNow <<
", window " << iWindow <<
", index = " <<
374 errorCountWindowMajor++;
378 int revoClockNow = rdat[index] & 0x7ff;
381 if (revoClockLast != -1) {
383 int revoClockDeltaNow = revoClockNow - revoClockLast;
384 if (revoClockDeltaNow != revoClockDeltaExpected) {
385 if (revoClockDeltaNow != 1188 && revoClockDeltaNow != -92 && revoClockDeltaNow != -1276) {
386 if (reportAllErrors) B2ERROR(
"rvc changed by an unexpected number of units: " << revoClockDeltaNow <<
", last rvc = " <<
388 ", current rvc = " << revoClockNow <<
", window " << iWindow <<
", index = " << index);
389 errorCountWindowMinor++;
393 if (revoClockNow > 1279) {
394 if (reportAllErrors) B2ERROR(
"Unexpected rvc value = " << revoClockNow <<
", window " << iWindow <<
", index = " << index);
395 errorCountWindowMajor++;
397 revoClockLast = revoClockNow;
399 int cntr127Now = (rdat[index + 1] >> 16) & 0xffff;
402 if (cntr127Last != -1) {
404 int cntr127DeltaNow = cntr127Now - cntr127Last;
405 if (cntr127DeltaNow != cntr127DeltaExpected) {
407 if (cntr127DeltaNow != 65444 && cntr127DeltaNow != -92 && cntr127DeltaNow != -65532) {
408 if (reportAllErrors) B2ERROR(
"cntr127 changed by an unexpected number of units: " << cntr127DeltaNow <<
", cntr127 last = " <<
410 ", cntr127 now = " << cntr127Now <<
", window " << iWindow <<
", index = " << index + 1);
411 errorCountWindowMinor++;
415 cntr127Last = cntr127Now;
417 testPattern = (rdat[index + 1]) & 0x0000ffff;
419 if (testPattern != 0) {
420 if (reportAllErrors) B2ERROR(
"Unexpected test pattern 2: " << testPattern <<
", window " << iWindow <<
", index = " << index + 1);
421 errorCountWindowMajor++;
425 int t0CombinedDecisionNow = (rdat[index + 2]) & 0x3ffff;
426 int t0CombinedDecisionNowEstimated = 0;
430 int revoClockGDL = (rdat[index + 2] >> 18) & 0x7ff;
441 int t0CombinedSegments[16];
443 t0CombinedSegments[15] = (rdat[index + 11] >> 28) & 0xf;
444 t0CombinedSegments[14] = (rdat[index + 11] >> 24) & 0xf;
445 t0CombinedSegments[13] = (rdat[index + 11] >> 20) & 0xf;
446 t0CombinedSegments[12] = (rdat[index + 11] >> 16) & 0xf;
447 t0CombinedSegments[11] = (rdat[index + 11] >> 12) & 0xf;
448 t0CombinedSegments[10] = (rdat[index + 11] >> 8) & 0xf;
449 t0CombinedSegments[9] = (rdat[index + 11] >> 4) & 0xf;
450 t0CombinedSegments[8] = (rdat[index + 11]) & 0xf;
452 t0CombinedSegments[7] = (rdat[index + 12] >> 28) & 0xf;
453 t0CombinedSegments[6] = (rdat[index + 12] >> 24) & 0xf;
454 t0CombinedSegments[5] = (rdat[index + 12] >> 20) & 0xf;
455 t0CombinedSegments[4] = (rdat[index + 12] >> 16) & 0xf;
456 t0CombinedSegments[3] = (rdat[index + 12] >> 12) & 0xf;
457 t0CombinedSegments[2] = (rdat[index + 12] >> 8) & 0xf;
458 t0CombinedSegments[1] = (rdat[index + 12] >> 4) & 0xf;
459 t0CombinedSegments[0] = (rdat[index + 12]) & 0xf;
461 int nSegmentsCombinedDecision = 0;
463 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
464 if (t0CombinedSegments[iSlot] != 0) {
467 nSegmentsCombinedDecision++;
471 int t0CombinedSlots[16];
473 t0CombinedSlots[0] = (rdat[index + 3] >> 16) & 0xffff;
474 t0CombinedSlots[1] = (rdat[index + 3]) & 0xffff;
475 t0CombinedSlots[2] = (rdat[index + 4] >> 16) & 0xffff;
476 t0CombinedSlots[3] = (rdat[index + 4]) & 0xffff;
477 t0CombinedSlots[4] = (rdat[index + 5] >> 16) & 0xffff;
478 t0CombinedSlots[5] = (rdat[index + 5]) & 0xffff;
479 t0CombinedSlots[6] = (rdat[index + 6] >> 16) & 0xffff;
480 t0CombinedSlots[7] = (rdat[index + 6]) & 0xffff;
481 t0CombinedSlots[8] = (rdat[index + 7] >> 16) & 0xffff;
482 t0CombinedSlots[9] = (rdat[index + 7]) & 0xffff;
483 t0CombinedSlots[10] = (rdat[index + 8] >> 16) & 0xffff;
484 t0CombinedSlots[11] = (rdat[index + 8]) & 0xffff;
485 t0CombinedSlots[12] = (rdat[index + 9] >> 16) & 0xffff;
486 t0CombinedSlots[13] = (rdat[index + 9]) & 0xffff;
487 t0CombinedSlots[14] = (rdat[index + 10] >> 16) & 0xffff;
488 t0CombinedSlots[15] = (rdat[index + 10]) & 0xffff;
490 int nSlotsCombinedDecision = 0;
492 int nSegmentErrors = 0;
494 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
495 if (t0CombinedSegments[iSlot] != 0) {
497 t0CombinedDecisionNowEstimated = t0CombinedDecisionNowEstimated + 2 * t0CombinedSlots[iSlot];
498 nSlotsCombinedDecision++;
499 }
else if (t0CombinedSlots[iSlot] != 0) {
500 if (reportAllErrors) B2ERROR(
"Segment==0 for Slot " << iSlot + 1 <<
", t0 (raw ns) = " << 2 * t0CombinedSlots[iSlot] <<
501 ", nSegmentsCombinedDecision = " << nSegmentsCombinedDecision <<
", combined t0 decision (FW) = " << t0CombinedDecisionNow <<
502 ", window " << iWindow);
503 errorCountWindowMajor++;
512 nHitsSlots[0] = (rdat[index + 13] >> 16) & 0x3ff;
513 nHitsSlots[1] = (rdat[index + 13]) & 0x3ff;
514 nHitsSlots[2] = (rdat[index + 14] >> 16) & 0x3ff;
515 nHitsSlots[3] = (rdat[index + 14]) & 0x3ff;
516 nHitsSlots[4] = (rdat[index + 15] >> 16) & 0x3ff;
517 nHitsSlots[5] = (rdat[index + 15]) & 0x3ff;
518 nHitsSlots[6] = (rdat[index + 16] >> 16) & 0x3ff;
519 nHitsSlots[7] = (rdat[index + 16]) & 0x3ff;
520 nHitsSlots[8] = (rdat[index + 17] >> 16) & 0x3ff;
521 nHitsSlots[9] = (rdat[index + 17]) & 0x3ff;
522 nHitsSlots[10] = (rdat[index + 18] >> 16) & 0x3ff;
523 nHitsSlots[11] = (rdat[index + 18]) & 0x3ff;
524 nHitsSlots[12] = (rdat[index + 19] >> 16) & 0x3ff;
525 nHitsSlots[13] = (rdat[index + 19]) & 0x3ff;
526 nHitsSlots[14] = (rdat[index + 20] >> 16) & 0x3ff;
527 nHitsSlots[15] = (rdat[index + 20]) & 0x3ff;
529 int nHitsCombinedDecision = 0;
530 int nSlotsHitsCombinedDecision = 0;
532 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
533 if (t0CombinedSegments[iSlot] != 0) {
535 nSlotsHitsCombinedDecision++;
536 nHitsCombinedDecision = nHitsCombinedDecision + nHitsSlots[iSlot];
537 }
else if (nHitsSlots[iSlot] != 0) {
538 if (reportAllErrors) B2ERROR(
"Unexpected nHit (via segments) = " << nHitsSlots[iSlot] <<
" for slot " << iSlot + 1 <<
539 ", nSegmentsCombinedDecision = " << nSegmentsCombinedDecision <<
", combined t0 decision (FW) = " << t0CombinedDecisionNow <<
540 ", window " << iWindow);
541 errorCountWindowMajor++;
546 for (
int iWord = 0; iWord < NUMBER_OF_SLOTS / 2; iWord++) {
547 testPattern = (rdat[index + 13 + iWord]) & 0xfc00fc00;
549 if (testPattern != 0) {
550 if (reportAllErrors) B2ERROR(
"Unexpected test pattern 4: " << testPattern <<
", window " << iWindow <<
", index = " << index + 13 +
552 errorCountWindowMajor++;
556 int logLikelihoodsSlots[16];
558 if (dataFormatVersionExpected == 2 || dataFormatVersionExpected == 3) {
559 logLikelihoodsSlots[0] = (rdat[index + 21]) & 0xffff;
560 logLikelihoodsSlots[1] = (rdat[index + 21] >> 16) & 0xffff;
561 logLikelihoodsSlots[2] = (rdat[index + 22]) & 0xffff;
562 logLikelihoodsSlots[3] = (rdat[index + 22] >> 16) & 0xffff;
563 logLikelihoodsSlots[4] = (rdat[index + 23]) & 0xffff;
564 logLikelihoodsSlots[5] = (rdat[index + 23] >> 16) & 0xffff;
565 logLikelihoodsSlots[6] = (rdat[index + 24]) & 0xffff;
566 logLikelihoodsSlots[7] = (rdat[index + 24] >> 16) & 0xffff;
567 logLikelihoodsSlots[8] = (rdat[index + 25]) & 0xffff;
568 logLikelihoodsSlots[9] = (rdat[index + 25] >> 16) & 0xffff;
569 logLikelihoodsSlots[10] = (rdat[index + 26]) & 0xffff;
570 logLikelihoodsSlots[11] = (rdat[index + 26] >> 16) & 0xffff;
571 logLikelihoodsSlots[12] = (rdat[index + 27]) & 0xffff;
572 logLikelihoodsSlots[13] = (rdat[index + 27] >> 16) & 0xffff;
573 logLikelihoodsSlots[14] = (rdat[index + 28]) & 0xffff;
574 logLikelihoodsSlots[15] = (rdat[index + 28] >> 16) & 0xffff;
575 }
else if (dataFormatVersionExpected == 1) {
576 logLikelihoodsSlots[0] = (rdat[index + 21]);
577 logLikelihoodsSlots[1] = (rdat[index + 22]);
578 logLikelihoodsSlots[2] = (rdat[index + 23]);
579 logLikelihoodsSlots[3] = (rdat[index + 24]);
580 logLikelihoodsSlots[4] = (rdat[index + 25]);
581 logLikelihoodsSlots[5] = (rdat[index + 26]);
582 logLikelihoodsSlots[6] = (rdat[index + 27]);
583 logLikelihoodsSlots[7] = (rdat[index + 28]);
584 logLikelihoodsSlots[8] = (rdat[index + 29]);
585 logLikelihoodsSlots[9] = (rdat[index + 30]);
586 logLikelihoodsSlots[10] = (rdat[index + 31]);
587 logLikelihoodsSlots[11] = (rdat[index + 32]);
588 logLikelihoodsSlots[12] = (rdat[index + 33]);
589 logLikelihoodsSlots[13] = (rdat[index + 34]);
590 logLikelihoodsSlots[14] = (rdat[index + 35]);
591 logLikelihoodsSlots[15] = (rdat[index + 36]);
594 int nLogLikelihoodsCombinedDecision = 0;
596 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
597 if (t0CombinedSegments[iSlot] != 0) {
599 nLogLikelihoodsCombinedDecision++;
600 }
else if (logLikelihoodsSlots[iSlot] != 0) {
601 if (reportAllErrors) B2ERROR(
"Unexpected log likelihood (via segments) = " << logLikelihoodsSlots[iSlot] <<
" for slot " << iSlot +
602 1 <<
", nSegmentsCombinedDecision = " << nSegmentsCombinedDecision <<
", combined t0 decision (FW) = " << t0CombinedDecisionNow <<
603 ", window " << iWindow);
604 errorCountWindowMajor++;
608 if (nSlotsCombinedDecision != 0) {
609 t0CombinedDecisionNowEstimated = t0CombinedDecisionNowEstimated / nSlotsCombinedDecision;
611 t0CombinedDecisionNowEstimated = -1;
612 if (reportAllErrors) B2ERROR(
"nSlotsCombinedDecision (via segments) is zero! FW t0 decision = " << t0CombinedDecisionNow <<
613 ", window " << iWindow);
614 errorCountWindowMajor++;
617 if (reportAllErrors) {
618 if (nSegmentErrors != 0) {
619 B2ERROR(
"nSegmentErrors = " << nSegmentErrors <<
", nSegmentsCombinedDecision = " << nSegmentsCombinedDecision <<
620 ", combined t0 decision (FW) = " << t0CombinedDecisionNow <<
", window " << iWindow);
621 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
622 if (t0CombinedSegments[iSlot] == 0 && logLikelihoodsSlots[iSlot] != 0) {
623 B2ERROR(
"Segment==0, t0Combined (ns) = " << 2 * t0CombinedSlots[iSlot] <<
" for slot " << iSlot + 1);
624 B2ERROR(
"Segment==0, nHits = " << nHitsSlots[iSlot] <<
" for slot " << iSlot + 1);
625 B2ERROR(
"Segment==0, logLikelihood = " << logLikelihoodsSlots[iSlot] <<
" for slot " << iSlot + 1);
626 B2ERROR(
"Segment==0, t0CombinedSegment = " << t0CombinedSegments[iSlot] <<
" for slot " << iSlot + 1);
633 if (dataFormatVersionExpected == 1) index = index + 37;
634 else if (dataFormatVersionExpected == 2 || dataFormatVersionExpected == 3) index = index + 29;
635 else index = index + 29;
641 int revoClockT0CombinedDecisionPrev = -1;
642 int revoClockT0CombinedDecisionNow = -1;
645 if (dataFormatVersionExpected == 2 || dataFormatVersionExpected == 3) index++;
647 if (dataFormatVersionExpected == 2) {
649 testPatternExpected = 0xfeedbeef;
650 testPattern = rdat[index];
652 if (testPattern != testPatternExpected) {
653 if (reportAllErrors) B2ERROR(
"Unexpected test pattern 5: " << std::hex << testPattern << std::dec <<
", window " << iWindow <<
654 ", index = " << index);
655 errorCountWindowMajor++;
657 }
else if (dataFormatVersionExpected == 3) {
658 revoClockT0CombinedDecisionPrev = (rdat[index]) & 0x7ff;
659 revoClockT0CombinedDecisionNow = (rdat[index] >> 11) & 0x7ff;
665 int cnttrgNow = rdat[index];
669 if (t0CombinedDecisionNow != t0CombinedDecisionLast) {
671 t0CombinedDecisionLast = t0CombinedDecisionNow;
673 int t0Residual = t0CombinedDecisionNow - t0CombinedDecisionNowEstimated;
742 double logLSum_d = 0;
743 double logLSum2_d = 0;
745 double timingSum_d = 0;
746 double timingSum2_d = 0;
748 for (
int iSlot = 0; iSlot < NUMBER_OF_SLOTS; iSlot++) {
751 if (t0CombinedSegments[iSlot] == 0 && nHitsSlots[iSlot] != 0) slotNErrors++;
753 if (t0CombinedSegments[iSlot] != 0 || nHitsSlots[iSlot] != 0) {
756 nHitSum = nHitSum + nHitsSlots[iSlot];
758 logLSum_d = logLSum_d + logLikelihoodsSlots[iSlot];
759 logLSum2_d = logLSum2_d + logLikelihoodsSlots[iSlot] * logLikelihoodsSlots[iSlot];
761 int timingNow = (2 * t0CombinedSlots[iSlot] % 10240);
765 timingSum_d = timingSum_d + timingNow;
766 timingSum2_d = timingSum2_d + pow(timingNow, 2);
769 slotTiming.setSlotTiming(2 * t0CombinedSlots[iSlot]);
770 slotTiming.setSlotSegment(t0CombinedSegments[iSlot]);
771 slotTiming.setSlotNHits(nHitsSlots[iSlot]);
772 slotTiming.setSlotLogL(logLikelihoodsSlots[iSlot]);
773 slotTiming.setSlotNErrors(slotNErrors);
779 if (nSlots == 0) nSlots = 1;
781 double logLVar_d = logLSum2_d / nSlots - pow(logLSum_d / nSlots, 2);
782 int logLVar = (int)(logLVar_d + 0.5);
783 int logLSum = (int)(logLSum_d + 0.5);
785 double timingVar_d = timingSum2_d / nSlots - pow(timingSum_d / nSlots, 2);
786 int timingVar = (int)(timingVar_d + 0.5);
829 errorCountEvent = errorCountEvent + errorCountWindowMinor + errorCountWindowMajor;
837 if (reportSummaryErrors) {
838 if (errorCountEvent != 0) {
839 B2INFO(
"Number of instances of unexpected data diagnozed during unpacking = " << errorCountEvent);
842 if (numberRvcJumps > 0) {
843 B2INFO(
"The number of rvc jumps = " << numberRvcJumps);
844 B2INFO(
"The window of the first rvc jump = " << windowRvcJumpFirst);
845 B2INFO(
"The number of clock cycles associated with the first rvc jump = " << clocksRvcJumpFirst);
849 if (numberCntr127Jumps > 0) {
850 B2INFO(
"The number of cntr127 jumps = " << numberCntr127Jumps);
851 B2INFO(
"The window of the first cntr127 jump = " << windowCntr127JumpFirst);
852 B2INFO(
"The number of clock cycles associated with the first cntr127 jump = " << clocksCntr127JumpFirst);
void setDescription(const std::string &description)
Sets the description of the module.
void setPropertyFlags(unsigned int propertyFlags)
Sets the flags for the module properties.
@ c_ParallelProcessingCertified
This module can be run in parallel processing mode safely (All I/O must be done through the data stor...
The Raw TOP class Class for RawCOPPER class data taken by TOP Currently, this class is almost same as...
Accessor to arrays stored in the data store.
int getEntries() const
Get the number of objects in the array.
int m_nodeId
Trigger type.
virtual void initialize() override
Initialize the Module.
int m_nWords
Our read-out ID.
virtual void event() override
This method is the core of the module.
virtual void endRun() override
This method is called if the current run ends.
virtual void fillTreeTRGTOP(int *)
Unpacker main function.
virtual void terminate() override
This method is called at the end of the event processing.
virtual void beginRun() override
Called when entering a new run.
StoreArray< TRGTOPUnpackerStore > m_TRGTOPCombinedTimingArray
N words in raw data.
int m_trigType
Event number (according to L1/global)
std::string version() const
returns version of TRGGDLUnpackerModule.
virtual void readCOPPEREvent(RawTRG *, int)
Read data from TRG copper.
#define REG_MODULE(moduleName)
Register the given module (without 'Module' suffix) with the framework.
int GetDetectorNwords(int n, int finesse_num)
get Detector buffer length
int * GetDetectorBuffer(int n, int finesse_num)
get Detector buffer
Abstract base class for different kinds of events.