diff --git a/algo/detectors/bmon/UnpackMS.cxx b/algo/detectors/bmon/UnpackMS.cxx index 4841b63c756230f96d737536f5e97b5e0d1b871b..b4fbf123e176991049b236c672beec4fa2a8e26a 100644 --- a/algo/detectors/bmon/UnpackMS.cxx +++ b/algo/detectors/bmon/UnpackMS.cxx @@ -89,7 +89,14 @@ namespace cbm::algo::bmon break; } case critof001::MSG_EPOCH: { - ProcessEpochMessage(message[messageNr], time); + if (critof001::kuChipIdMergedEpoch == message[messageNr].getGet4Idx()) { + ProcessEpochMessage(message[messageNr], time); + } // if this epoch message is a merged one valid for all chips + else { + /// FIXME: Should be checked in/forwarded to <some> monitor <task?>, here we just jump it + std::get<1>(result).fNumErrInvalidAsicEpochs++; + continue; + } // if single chip epoch message break; } case critof001::MSG_SLOWC: { diff --git a/algo/detectors/bmon/UnpackMS.h b/algo/detectors/bmon/UnpackMS.h index 9c893c5318222a63117868835e0620d530fe74ef..8ba772dbb78b6a0fb39953acb6bb724904da7c7a 100644 --- a/algo/detectors/bmon/UnpackMS.h +++ b/algo/detectors/bmon/UnpackMS.h @@ -54,11 +54,12 @@ namespace cbm::algo::bmon uint32_t fNumErrInvalidMsSize = 0; ///< Microslice size is not multiple of message size uint32_t fNumErrTimestampOverflow = 0; ///< Overflow in 64 bit time stamp uint32_t fNumErrInvalidStartEpoch = 0; ///< Microslice index doesn't match first epoch + uint32_t fNumErrInvalidAsicEpochs = 0; ///< Epoch did not match merged one for an asic bool HasErrors() { uint32_t numErrors = fNumNonHitOrTsbMessage + fNumErrElinkOutOfRange + fNumErrInvalidFirstMessage + fNumErrInvalidLastMessage + fNumErrInvalidMsSize + fNumErrTimestampOverflow - + fNumErrInvalidStartEpoch; + + fNumErrInvalidStartEpoch + fNumErrInvalidAsicEpochs; return (numErrors > 0 ? true : false); } std::string print() @@ -66,7 +67,7 @@ namespace cbm::algo::bmon std::stringstream ss; ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | " << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidLastMessage << " | " << fNumErrInvalidMsSize << " | " - << fNumErrTimestampOverflow << " | " << fNumErrInvalidStartEpoch << " | "; + << fNumErrTimestampOverflow << " | " << fNumErrInvalidStartEpoch << " | " << fNumErrInvalidAsicEpochs << " | "; return ss.str(); } }; diff --git a/algo/detectors/tof/UnpackMS.cxx b/algo/detectors/tof/UnpackMS.cxx index b9cd5dcf017f30054b4e71eeeb7818565d97f3bf..0c11fe61634648730d5a7fa5c4c7a834650ac33b 100644 --- a/algo/detectors/tof/UnpackMS.cxx +++ b/algo/detectors/tof/UnpackMS.cxx @@ -82,7 +82,14 @@ namespace cbm::algo::tof break; } case critof001::MSG_EPOCH: { - ProcessEpochMessage(message[messageNr], time); + if (critof001::kuChipIdMergedEpoch == message[messageNr].getGet4Idx()) { + ProcessEpochMessage(message[messageNr], time); + } // if this epoch message is a merged one valid for all chips + else { + /// FIXME: Should be checked in/forwarded to <some> monitor <task?>, here we just jump it + std::get<1>(result).fNumErrInvalidAsicEpochs++; + continue; + } // if single chip epoch message break; } case critof001::MSG_SLOWC: { diff --git a/algo/detectors/tof/UnpackMS.h b/algo/detectors/tof/UnpackMS.h index 1a1033cc6bf1d6db7cf2cb6b6efaf9cd1e2eb87d..591a4deee1072cddf554c55ea34df3f0ad03cc3e 100644 --- a/algo/detectors/tof/UnpackMS.h +++ b/algo/detectors/tof/UnpackMS.h @@ -52,11 +52,12 @@ namespace cbm::algo::tof uint32_t fNumErrInvalidMsSize = 0; ///< Microslice size is not multiple of message size uint32_t fNumErrTimestampOverflow = 0; ///< Overflow in 64 bit time stamp uint32_t fNumErrInvalidStartEpoch = 0; ///< Microslice index doesn't match first epoch + uint32_t fNumErrInvalidAsicEpochs = 0; ///< Epoch did not match merged one for an asic bool HasErrors() { uint32_t numErrors = fNumNonHitOrTsbMessage + fNumErrElinkOutOfRange + fNumErrInvalidFirstMessage + fNumErrInvalidLastMessage + fNumErrInvalidMsSize + fNumErrTimestampOverflow - + fNumErrInvalidStartEpoch; + + fNumErrInvalidStartEpoch + fNumErrInvalidAsicEpochs; return (numErrors > 0 ? true : false); } std::string print() @@ -64,7 +65,7 @@ namespace cbm::algo::tof std::stringstream ss; ss << "errors " << fNumNonHitOrTsbMessage << " | " << fNumErrElinkOutOfRange << " | " << fNumErrInvalidFirstMessage << " | " << fNumErrInvalidLastMessage << " | " << fNumErrInvalidMsSize << " | " - << fNumErrTimestampOverflow << " | " << fNumErrInvalidStartEpoch << " | "; + << fNumErrTimestampOverflow << " | " << fNumErrInvalidStartEpoch << " | " << fNumErrInvalidAsicEpochs << " | "; return ss.str(); } };