301 if (verbose && mDecoderVerbose) {
302 std::cout <<
colorBlue <<
"--- PROCESS DRM"
308 mDecoderNextWord = 1;
309 mDecoderError =
false;
310 mDecoderFatal =
false;
311 mEncoderPointerStart = mEncoderPointer;
318 mDecoderFatal =
true;
321 mDecoderSummary.tofDataHeader = mDecoderPointer;
322 if (verbose && mDecoderVerbose) {
323 auto tofDataHeader =
reinterpret_cast<const raw::TOFDataHeader_t*
>(mDecoderPointer);
324 auto bytePayload = tofDataHeader->bytePayload;
325 printf(
" %08x TOF Data Header (bytePayload=%d) \n", *mDecoderPointer, bytePayload);
328 if (paranoid && decoderParanoid()) {
333 mDecoderSummary.tofOrbit = mDecoderPointer;
334 if (verbose && mDecoderVerbose) {
335 auto tofOrbit =
reinterpret_cast<const raw::TOFOrbit_t*
>(mDecoderPointer);
336 auto orbit = tofOrbit->orbit;
337 printf(
" %08x TOF Orbit (orbit=%u) \n", *mDecoderPointer,
orbit);
340 if (paranoid && decoderParanoid()) {
349 mDecoderFatal =
true;
352 mDecoderSummary.drmDataHeader = mDecoderPointer;
353 if (verbose && mDecoderVerbose) {
354 auto drmDataHeader =
reinterpret_cast<const raw::DRMDataHeader_t*
>(mDecoderPointer);
355 auto drmId = drmDataHeader->drmId;
356 auto eventWords = drmDataHeader->eventWords;
357 printf(
" %08x DRM Data Header (drmId=%d, eventWords=%d) \n", *mDecoderPointer, drmId, eventWords);
360 if (paranoid && decoderParanoid()) {
365 mDecoderSummary.drmHeadW1 = mDecoderPointer;
366 if (verbose && mDecoderVerbose) {
367 auto drmHeadW1 =
reinterpret_cast<const raw::DRMHeadW1_t*
>(mDecoderPointer);
368 auto partSlotMask = drmHeadW1->partSlotMask;
369 auto clockStatus = drmHeadW1->clockStatus;
370 auto drmHSize = drmHeadW1->drmHSize;
371 printf(
" %08x DRM Header Word 1 (partSlotMask=0x%03x, clockStatus=%d, drmHSize=%d) \n", *mDecoderPointer, partSlotMask, clockStatus, drmHSize);
374 if (paranoid && decoderParanoid()) {
379 mDecoderSummary.drmHeadW2 = mDecoderPointer;
380 if (verbose && mDecoderVerbose) {
381 auto drmHeadW2 =
reinterpret_cast<const raw::DRMHeadW2_t*
>(mDecoderPointer);
382 auto enaSlotMask = drmHeadW2->enaSlotMask;
383 auto faultSlotMask = drmHeadW2->faultSlotMask;
384 auto readoutTimeOut = drmHeadW2->readoutTimeOut;
385 printf(
" %08x DRM Header Word 2 (enaSlotMask=0x%03x, faultSlotMask=0x%03x, readoutTimeOut=%d) \n", *mDecoderPointer, enaSlotMask, faultSlotMask, readoutTimeOut);
388 if (paranoid && decoderParanoid()) {
393 mDecoderSummary.drmHeadW3 = mDecoderPointer;
394 if (verbose && mDecoderVerbose) {
395 auto drmHeadW3 =
reinterpret_cast<const raw::DRMHeadW3_t*
>(mDecoderPointer);
396 auto gbtBunchCnt = drmHeadW3->gbtBunchCnt;
397 auto locBunchCnt = drmHeadW3->locBunchCnt;
398 printf(
" %08x DRM Header Word 3 (gbtBunchCnt=%d, locBunchCnt=%d) \n", *mDecoderPointer, gbtBunchCnt, locBunchCnt);
401 if (paranoid && decoderParanoid()) {
406 mDecoderSummary.drmHeadW4 = mDecoderPointer;
407 if (verbose && mDecoderVerbose) {
408 printf(
" %08x DRM Header Word 4 \n", *mDecoderPointer);
411 if (paranoid && decoderParanoid()) {
416 mDecoderSummary.drmHeadW5 = mDecoderPointer;
417 if (verbose && mDecoderVerbose) {
418 printf(
" %08x DRM Header Word 5 \n", *mDecoderPointer);
421 if (paranoid && decoderParanoid()) {
426 *mEncoderPointer = 0x80000000;
429 *mEncoderPointer |= (mDecoderRDH->feeId & 0xFF) << 24;
431 if (verbose && mEncoderVerbose) {
433 auto bunchID = crateHeader->
bunchID;
434 auto drmID = crateHeader->drmID;
435 auto slotPartMask = crateHeader->slotPartMask;
436 printf(
"%s %08x Crate header (drmID=%d, bunchID=%d, slotPartMask=0x%x) %s \n",
colorGreen, *mEncoderPointer, drmID, bunchID, slotPartMask,
colorReset);
444 *mEncoderPointer = *mDecoderSummary.tofOrbit;
445 if (verbose && mEncoderVerbose) {
447 auto orbitID = crateOrbit->
orbitID;
448 printf(
"%s %08x Crate orbit (orbitID=%u) %s \n",
colorGreen, *mEncoderPointer, orbitID,
colorReset);
459 if (nsteps > 19 && !(nsteps % 20)) {
460 LOG(
debug) <<
"processDRM: nsteps in while loop = " << nsteps <<
", infity loop?";
480 mDecoderSummary.drmDataTrailer = mDecoderPointer;
481 if (verbose && mDecoderVerbose) {
482 auto drmDataTrailer =
reinterpret_cast<const raw::DRMDataTrailer_t*
>(mDecoderPointer);
483 auto locEvCnt = drmDataTrailer->locEvCnt;
484 printf(
" %08x DRM Data Trailer (locEvCnt=%d) \n", *mDecoderPointer, locEvCnt);
489 while ((mDecoderPointer < mDecoderPointerMax) &&
IS_FILLER(*mDecoderPointer)) {
490 if (verbose && mDecoderVerbose) {
491 printf(
" %08x Filler \n", *mDecoderPointer);
497 *mEncoderPointer = 0x80000000;
502 *mEncoderPointer |= mCheckerSummary.nDiagnosticWords;
504 *mEncoderPointer |= (mCheckerSummary.nTDCErrors << 16);
507 if (verbose && mEncoderVerbose) {
510 auto NumberOfDiagnostics = CrateTrailer->numberOfDiagnostics;
511 auto NumberOfErrors = CrateTrailer->numberOfErrors;
512 printf(
"%s %08x Crate trailer (EventCounter=%d, NumberOfDiagnostics=%d, NumberOfErrors=%d) %s \n",
colorGreen, *mEncoderPointer, EventCounter, NumberOfDiagnostics, NumberOfErrors,
colorReset);
520 for (
int iword = 0; iword < mCheckerSummary.nDiagnosticWords; ++iword) {
521 auto itrm = (mCheckerSummary.DiagnosticWord[iword] & 0xF) - 3;
522 *mEncoderPointer = mCheckerSummary.DiagnosticWord[iword];
523 if (verbose && mEncoderVerbose) {
527 printf(
"%s %08x Diagnostic (slotId=%d, faultBits=0x%x) %s \n",
colorGreen, *mEncoderPointer, slotId, faultBits,
colorReset);
536 for (
int itrm = 0; itrm < 10; ++itrm) {
537 for (
int ichain = 0; ichain < 2; ++ichain) {
539 for (
int ierror = 0; ierror < mDecoderSummary.trmErrors[itrm][ichain]; ++ierror) {
540 *mEncoderPointer = *mDecoderSummary.trmError[itrm][ichain][ierror];
541 *mEncoderPointer &= 0xFF07FFFF;
542 *mEncoderPointer |= ((itrm + 3) << 19);
543 *mEncoderPointer |= (ichain << 23);
544 if (verbose && mEncoderVerbose) {
547 auto slotID = Error->slotID;
548 auto chain = Error->chain;
549 auto tdcID = Error->tdcID;
550 printf(
"%s %08x Error (slotId=%d, chain=%d, tdcId=%d, errorFlags=0x%x) %s \n",
colorGreen, *mEncoderPointer, slotID,
chain, tdcID, errorFlags,
colorReset);
558 mDecoderSummary.trmErrors[itrm][ichain] = 0;
562 mCheckerSummary.nDiagnosticWords = 0;
563 mCheckerSummary.nTDCErrors = 0;
570 if (verbose && mDecoderVerbose) {
571 printf(
" %08x DRM Test Word \n", *mDecoderPointer);
578 mDecoderError =
true;
579 mDecoderSummary.drmDecodeError =
true;
581 if (verbose && mDecoderVerbose) {
582 printf(
"%s %08x [ERROR] trying to recover DRM decode stream %s \n",
colorRed, *mDecoderPointer,
colorReset);
586 if (decoderParanoid()) {
594 mIntegratedBytes += getDecoderByteCounter();
596 if (verbose && mDecoderVerbose) {
598 <<
"--- END PROCESS DRM"
756 int slotId = itrm + 3;
758 mDecoderSummary.trmChainHeader[itrm][ichain] = mDecoderPointer;
759 mDecoderSummary.hasHits[itrm][ichain] =
false;
760 mDecoderSummary.hasErrors[itrm][ichain] =
false;
761 if (verbose && mDecoderVerbose) {
762 auto trmChainHeader =
reinterpret_cast<const raw::TRMChainHeader_t*
>(mDecoderPointer);
763 auto bunchCnt = trmChainHeader->bunchCnt;
764 printf(
" %08x TRM Chain-%c Header (slotId=%u, bunchCnt=%d) \n", *mDecoderPointer, ichain == 0 ?
'A' :
'B', slotId, bunchCnt);
767 if (paranoid && decoderParanoid()) {
775 if (nsteps > 99 && !(nsteps % 100)) {
776 LOG(
debug) <<
"processTRMchain: nsteps in while loop = " << nsteps <<
", infity loop?";
780 mDecoderSummary.hasHits[itrm][ichain] =
true;
782 auto ihit = mDecoderSummary.trmDataHits[ichain][itdc];
783 mDecoderSummary.trmDataHit[ichain][itdc][ihit] = mDecoderPointer;
784 mDecoderSummary.trmDataHits[ichain][itdc]++;
785 if (verbose && mDecoderVerbose) {
786 auto trmDataHit =
reinterpret_cast<const raw::TRMDataHit_t*
>(mDecoderPointer);
787 auto time = trmDataHit->time;
788 auto chanId = trmDataHit->chanId;
789 auto tdcId = trmDataHit->tdcId;
790 auto dataId = trmDataHit->dataId;
791 printf(
" %08x TRM Data Hit (time=%d, chanId=%d, tdcId=%d, dataId=0x%x) \n", *mDecoderPointer,
time, chanId, tdcId, dataId);
794 if (paranoid && decoderParanoid()) {
802 mDecoderSummary.hasErrors[itrm][ichain] =
true;
803 auto ierror = mDecoderSummary.trmErrors[itrm][ichain];
804 mDecoderSummary.trmError[itrm][ichain][ierror] = mDecoderPointer;
805 mDecoderSummary.trmErrors[itrm][ichain]++;
806 if (verbose && mDecoderVerbose) {
810 if (paranoid && decoderParanoid()) {
818 mDecoderSummary.trmChainTrailer[itrm][ichain] = mDecoderPointer;
819 if (verbose && mDecoderVerbose) {
820 auto trmChainTrailer =
reinterpret_cast<const raw::TRMChainTrailer_t*
>(mDecoderPointer);
821 auto eventCnt = trmChainTrailer->eventCnt;
822 printf(
" %08x TRM Chain-A Trailer (slotId=%u, eventCnt=%d) \n", *mDecoderPointer, slotId, eventCnt);
825 if (paranoid && decoderParanoid()) {
832 mDecoderError =
true;
833 mDecoderSummary.trmDecodeError[itrm] =
true;
834 if (verbose && mDecoderVerbose) {
835 printf(
"%s %08x [ERROR] breaking TRM Chain-%c decode stream %s \n",
colorRed, *mDecoderPointer, ichain == 0 ?
'A' :
'B',
colorReset);
838 if (decoderParanoid()) {
870 int slotId = itrm + 3;
873 int firstFilledFrame = 255;
874 int lastFilledFrame = 0;
877 for (
int ichain = 0; ichain < 2; ++ichain) {
879 if (!mDecoderSummary.hasHits[itrm][ichain]) {
884 for (
int itdc = 0; itdc < 15; ++itdc) {
886 auto nhits = mDecoderSummary.trmDataHits[ichain][itdc];
892 for (
int ihit = 0; ihit < nhits; ++ihit) {
894 auto lhit = *mDecoderSummary.trmDataHit[ichain][itdc][ihit];
902 uint32_t totWidth = 0;
905 for (
int jhit = ihit + 1; jhit < nhits; ++jhit) {
906 auto thit = *mDecoderSummary.trmDataHit[ichain][itdc][jhit];
914 auto iframe = hitTime >> 13;
915 auto phit = mSpiderSummary.nFramePackedHits[iframe];
917 mSpiderSummary.FramePackedHit[iframe][phit] = 0x00000000;
918 mSpiderSummary.FramePackedHit[iframe][phit] |= (totWidth & 0x7FF) << 0;
919 mSpiderSummary.FramePackedHit[iframe][phit] |= (hitTime & 0x1FFF) << 11;
920 mSpiderSummary.FramePackedHit[iframe][phit] |= chan << 24;
921 mSpiderSummary.FramePackedHit[iframe][phit] |= itdc << 27;
922 mSpiderSummary.FramePackedHit[iframe][phit] |= ichain << 31;
923 mSpiderSummary.nFramePackedHits[iframe]++;
925 if (iframe < firstFilledFrame) {
926 firstFilledFrame = iframe;
928 if (iframe > lastFilledFrame) {
929 lastFilledFrame = iframe;
933 mDecoderSummary.trmDataHits[ichain][itdc] = 0;
938 for (
int iframe = firstFilledFrame; iframe < lastFilledFrame + 1; iframe++) {
941 if (mSpiderSummary.nFramePackedHits[iframe] == 0) {
946 *mEncoderPointer = 0x00000000;
947 *mEncoderPointer |= slotId << 24;
948 *mEncoderPointer |= iframe << 16;
949 *mEncoderPointer |= mSpiderSummary.nFramePackedHits[iframe];
950 if (verbose && mEncoderVerbose) {
953 auto FrameID = FrameHeader->frameID;
954 auto TRMID = FrameHeader->trmID;
955 printf(
"%s %08x Frame header (TRMID=%d, FrameID=%d, NumberOfHits=%d) %s \n",
colorGreen, *mEncoderPointer, TRMID, FrameID, NumberOfHits,
colorReset);
963 for (
int ihit = 0; ihit < mSpiderSummary.nFramePackedHits[iframe]; ++ihit) {
964 *mEncoderPointer = mSpiderSummary.FramePackedHit[iframe][ihit];
965 if (verbose && mEncoderVerbose) {
967 auto Chain = PackedHit->
chain;
968 auto TDCID = PackedHit->tdcID;
969 auto Channel = PackedHit->channel;
970 auto Time = PackedHit->time;
971 auto TOT = PackedHit->tot;
972 printf(
"%s %08x Packed hit (Chain=%d, TDCID=%d, Channel=%d, Time=%d, TOT=%d) %s \n",
colorGreen, *mEncoderPointer, Chain, TDCID, Channel, Time, TOT,
colorReset);
980 mSpiderSummary.nFramePackedHits[iframe] = 0;
990 mCheckerSummary.nDiagnosticWords = 0;
992 if (verbose && mCheckerVerbose) {
1005 mCheckerSummary.DiagnosticWord[0] = 0x00000001;
1008 if (verbose && mCheckerVerbose) {
1009 printf(
" --- Checking DRM Data Header: %p \n", mDecoderSummary.drmDataHeader);
1011 if (!mDecoderSummary.drmDataHeader) {
1013 if (verbose && mCheckerVerbose) {
1014 printf(
" Missing DRM Data Header \n");
1016 mDecoderSummary = {
nullptr};
1017 mCheckerSummary.nDiagnosticWords++;
1018 for (
int itrm = 0; itrm < 10; ++itrm) {
1019 mDecoderSummary.trmDataHeader[itrm] =
nullptr;
1020 mDecoderSummary.trmDataTrailer[itrm] =
nullptr;
1021 for (
int ichain = 0; ichain < 2; ++ichain) {
1022 mDecoderSummary.trmChainHeader[itrm][ichain] =
nullptr;
1023 mDecoderSummary.trmChainTrailer[itrm][ichain] =
nullptr;
1024 mDecoderSummary.trmErrors[itrm][ichain] = 0;
1025 mDecoderSummary.trmErrors[itrm][ichain] = 0;
1032 if (mDecoderSummary.drmDecodeError) {
1034 if (verbose && mCheckerVerbose) {
1035 printf(
" DRM decode error \n");
1037 mDecoderSummary.drmDecodeError =
false;
1041 if (verbose && mCheckerVerbose) {
1042 printf(
" --- Checking DRM Data Trailer: %p \n", mDecoderSummary.drmDataTrailer);
1044 if (!mDecoderSummary.drmDataTrailer) {
1046 if (verbose && mCheckerVerbose) {
1047 printf(
" Missing DRM Data Trailer \n");
1049 mDecoderSummary = {
nullptr};
1050 mCheckerSummary.nDiagnosticWords++;
1062 if (!mDecoderCONET) {
1067 if (verbose && mCheckerVerbose) {
1068 printf(
" --- Checking Enable/participating mask: %03x/%03x \n", enaSlotMask, partSlotMask);
1070 if (partSlotMask != enaSlotMask) {
1071 if (verbose && mCheckerVerbose) {
1072 printf(
" Enable/participating mask differ: %03x/%03x \n", enaSlotMask, partSlotMask);
1078 if (verbose && mCheckerVerbose) {
1083 if (verbose && mCheckerVerbose) {
1089 if (verbose && mCheckerVerbose) {
1094 if (verbose && mCheckerVerbose) {
1100 if (verbose && mCheckerVerbose) {
1105 if (verbose && mCheckerVerbose) {
1106 printf(
" DRM readout timeout \n");
1111 auto drmEventWords = mDecoderSummary.drmDataTrailer - mDecoderSummary.drmDataHeader + 1;
1112 if (mDecoderNextWordStep) {
1113 drmEventWords -= (drmEventWords / 4) * 2;
1116 if (verbose && mCheckerVerbose) {
1117 printf(
" --- Checking DRM declared/detected event words: %u/%ld \n",
GET_DRMDATAHEADER_EVENTWORDS(*mDecoderSummary.drmDataHeader), drmEventWords);
1121 if (verbose && mCheckerVerbose) {
1122 printf(
" DRM declared/detected event words mismatch: %u/%ld \n",
GET_DRMDATAHEADER_EVENTWORDS(*mDecoderSummary.drmDataHeader), drmEventWords);
1127 auto iword = mCheckerSummary.nDiagnosticWords;
1128 if (mCheckerSummary.DiagnosticWord[iword] & 0xFFFFFFF0) {
1129 mCheckerSummary.nDiagnosticWords++;
1134 mCheckerSummary.DiagnosticWord[iword] = 0x00000002;
1137 if (!(partSlotMask & 1)) {
1138 if (mDecoderSummary.ltmDataHeader !=
nullptr) {
1140 if (verbose && mCheckerVerbose) {
1141 printf(
" Non-participating LTM header found \n");
1146 if (verbose && mCheckerVerbose) {
1147 printf(
" --- Checking LTM Data Header: %p \n", mDecoderSummary.ltmDataHeader);
1149 if (!mDecoderSummary.ltmDataHeader) {
1151 if (verbose && mCheckerVerbose) {
1152 printf(
" Missing LTM Data Header \n");
1157 if (verbose && mCheckerVerbose) {
1158 printf(
" --- Checking LTM Data Trailer: %p \n", mDecoderSummary.ltmDataTrailer);
1160 if (!mDecoderSummary.ltmDataTrailer) {
1162 if (verbose && mCheckerVerbose) {
1163 printf(
" Missing LTM Data Trailer \n");
1169 mDecoderSummary.ltmDataHeader =
nullptr;
1170 mDecoderSummary.ltmDataTrailer =
nullptr;
1173 for (
int itrm = 0; itrm < 10; ++itrm) {
1174 uint32_t slotId = itrm + 3;
1177 if (mCheckerSummary.DiagnosticWord[iword] & 0xFFFFFFF0) {
1178 mCheckerSummary.nDiagnosticWords++;
1183 mCheckerSummary.DiagnosticWord[iword] = slotId;
1186 if (!(partSlotMask & 1 << (itrm + 1))) {
1187 if (mDecoderSummary.trmDataHeader[itrm]) {
1189 if (verbose && mCheckerVerbose) {
1190 printf(
" Non-participating header found (slotId=%u) \n", slotId);
1200 if (verbose && mCheckerVerbose) {
1201 printf(
" Fault slot bit set (slotId=%u) \n", slotId);
1206 if (!mDecoderSummary.trmDataHeader[itrm]) {
1208 if (verbose && mCheckerVerbose) {
1209 printf(
" Missing TRM Data Header (slotId=%u) \n", slotId);
1211 mDecoderSummary.trmErrors[itrm][0] = 0;
1212 mDecoderSummary.trmErrors[itrm][1] = 0;
1217 if (mDecoderSummary.trmDecodeError[itrm]) {
1219 if (verbose && mCheckerVerbose) {
1220 printf(
" Decode error in TRM (slotId=%u) \n", slotId);
1222 mDecoderSummary.trmDecodeError[itrm] =
false;
1226 if (!mDecoderSummary.trmDataTrailer[itrm]) {
1228 if (verbose && mCheckerVerbose) {
1229 printf(
" Missing TRM Trailer (slotId=%u) \n", slotId);
1231 mDecoderSummary.trmDataHeader[itrm] =
nullptr;
1232 mDecoderSummary.trmErrors[itrm][0] = 0;
1233 mDecoderSummary.trmErrors[itrm][1] = 0;
1238#ifdef CHECKER_COUNTER
1239 mTRMCounters[itrm].Headers++;
1243#ifdef CHECKER_COUNTER
1244 if (!mDecoderSummary.hasHits[itrm][0] && !mDecoderSummary.hasHits[itrm][1])
1245 mTRMCounters[itrm].Empty++;
1250 if (eventCnt != locEvCnt % 1024) {
1252#ifdef CHECKER_COUNTER
1253 mTRMCounters[itrm].EventCounterMismatch++;
1255 if (verbose && mCheckerVerbose) {
1256 printf(
" TRM EventCounter / DRM LocalEventCounter mismatch: %u / %u (slotId=%u) \n", eventCnt, locEvCnt, slotId);
1263#ifdef CHECKER_COUNTER
1264 mTRMCounters[itrm].EBit++;
1266 if (verbose && mCheckerVerbose) {
1267 printf(
" TRM empty bit is on (slotId=%u) \n", slotId);
1272 auto trmEventWords = mDecoderSummary.trmDataTrailer[itrm] - mDecoderSummary.trmDataHeader[itrm] + 1;
1273 if (mDecoderNextWordStep) {
1274 trmEventWords -= (trmEventWords / 4) * 2;
1276 if (verbose && mCheckerVerbose) {
1277 printf(
" --- Checking TRM (slotId=%u) declared/detected event words: %d/%ld \n", slotId,
GET_TRMDATAHEADER_EVENTWORDS(*mDecoderSummary.trmDataHeader[itrm]), trmEventWords);
1281 if (verbose && mCheckerVerbose) {
1282 printf(
" TRM (slotId=%u) declared/detected event words mismatch: %d/%ld \n", slotId,
GET_TRMDATAHEADER_EVENTWORDS(*mDecoderSummary.trmDataHeader[itrm]), trmEventWords);
1287 for (
int ichain = 0; ichain < 2; ichain++) {
1290 if (!mDecoderSummary.trmChainHeader[itrm][ichain]) {
1292 if (verbose && mCheckerVerbose) {
1293 printf(
" Missing TRM Chain Header (slotId=%u, chain=%d) \n", slotId, ichain);
1295 mDecoderSummary.trmErrors[itrm][ichain] = 0;
1300 if (!mDecoderSummary.trmChainTrailer[itrm][ichain]) {
1302 if (verbose && mCheckerVerbose) {
1303 printf(
" Missing TRM Chain Trailer (slotId=%u, chain=%d) \n", slotId, ichain);
1305 mDecoderSummary.trmChainHeader[itrm][ichain] =
nullptr;
1306 mDecoderSummary.trmErrors[itrm][ichain] = 0;
1311#ifdef CHECKER_COUNTER
1312 mTRMChainCounters[itrm][ichain].Headers++;
1316 if (mDecoderSummary.hasErrors[itrm][ichain]) {
1318 mCheckerSummary.nTDCErrors += mDecoderSummary.trmErrors[itrm][ichain];
1319#ifdef CHECKER_COUNTER
1320 mTRMChainCounters[itrm][ichain].TDCerror++;
1322 if (verbose && mCheckerVerbose) {
1323 printf(
" TDC error detected (slotId=%u, chain=%d) \n", slotId, ichain);
1329 if (eventCnt != locEvCnt) {
1331#ifdef CHECKER_COUNTER
1332 mTRMChainCounters[itrm][ichain].EventCounterMismatch++;
1334 if (verbose && mCheckerVerbose) {
1335 printf(
" TRM Chain EventCounter / DRM LocalEventCounter mismatch: %u / %u (slotId=%u, chain=%d) \n", eventCnt, locEvCnt, slotId, ichain);
1343#ifdef CHECKER_COUNTER
1344 mTRMChainCounters[itrm][ichain].BadStatus++;
1346 if (verbose && mCheckerVerbose) {
1347 printf(
" TRM Chain bad Status: %u (slotId=%u, chain=%d) \n", status, slotId, ichain);
1353 if (bunchCnt != gbtBunchCnt) {
1355#ifdef CHECKER_COUNTER
1356 mTRMChainCounters[itrm][ichain].BunchIDMismatch++;
1358 if (verbose && mCheckerVerbose) {
1359 printf(
" TRM Chain BunchID / DRM L0BCID mismatch: %u / %u (slotId=%u, chain=%d) \n", bunchCnt, gbtBunchCnt, slotId, ichain);
1364 mDecoderSummary.trmChainHeader[itrm][ichain] =
nullptr;
1365 mDecoderSummary.trmChainTrailer[itrm][ichain] =
nullptr;
1370 mDecoderSummary.trmDataHeader[itrm] =
nullptr;
1371 mDecoderSummary.trmDataTrailer[itrm] =
nullptr;
1376 if (mCheckerSummary.DiagnosticWord[iword] & 0xFFFFFFF0) {
1377 mCheckerSummary.nDiagnosticWords++;
1380 if (verbose && mCheckerVerbose) {
1382 <<
"--- END CHECK EVENT: " << mCheckerSummary.nDiagnosticWords <<
" diagnostic words"
1388 mDecoderSummary.tofDataHeader =
nullptr;
1389 mDecoderSummary.drmDataHeader =
nullptr;
1390 mDecoderSummary.drmDataTrailer =
nullptr;