@@ -294,13 +294,15 @@ int RawDataDecoder::decodeRaw(o2::framework::InputRecord& inputs, std::vector<o2
294294 }
295295 if (mDoDigits & mDecodeInps ) {
296296 uint64_t trgclassmask = 0xffffffffffffffff ;
297+ uint64_t trgclassmaskNOTRGDet = 0xffffffffffffffff ;
297298 if (mCTPConfig .getRunNumber () != 0 ) {
298- trgclassmask = mCTPConfig .getTriggerClassMaskOnlywInputs ();
299+ trgclassmask = mCTPConfig .getTriggerClassMaskWInputs ();
300+ trgclassmaskNOTRGDet = mCTPConfig .getTriggerClassMaskWInputsNoTrgDets ();
299301 }
300302 // std::cout << "trgclassmask:" << std::hex << trgclassmask << std::dec << std::endl;
301- ret = shiftInputs (digitsMap, digits, mTFOrbit , trgclassmask );
303+ ret = shiftInputs (digitsMap, digits, mTFOrbit );
302304 if (mCheckConsistency ) {
303- ret = checkReadoutConsistentncy (digits, trgclassmask);
305+ ret = checkReadoutConsistentncy (digits, trgclassmask, trgclassmaskNOTRGDet );
304306 }
305307 }
306308 if (mDoDigits && !mDecodeInps ) {
@@ -592,10 +594,9 @@ int RawDataDecoder::shiftInputs(std::map<o2::InteractionRecord, CTPDigit>& digit
592594 return 0 ;
593595}
594596//
595- int RawDataDecoder::checkReadoutConsistentncy (o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask)
597+ int RawDataDecoder::checkReadoutConsistentncy (o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask, uint64_t trgclassmaskNoTrgDet )
596598{
597599 int ret = 0 ;
598- int lost = 0 ;
599600 static int nerror = 0 ;
600601 for (auto const & digit : digits) {
601602 // if class mask => inps
@@ -608,21 +609,20 @@ int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits,
608609 ret = 128 ;
609610 continue ;
610611 }
612+ mClassCountersA [i]++;
611613 uint64_t clsinpmask = cls->descriptor ->getInputsMask ();
612614 uint64_t diginpmask = digit.CTPInputMask .to_ullong ();
613615 if (!((clsinpmask & diginpmask) == clsinpmask)) {
614616 if (nerror < mErrorMax )
615617 LOG (error) << " CTP class:" << cls->name << " inpmask:" << clsinpmask << " not compatible with inputs mask:" << diginpmask;
616- auto result = mClassErrors .insert ({cls->getIndex (),1 });
617- if (!result.second )
618- mClassErrors [cls->getIndex ()]++;
618+ mClassErrorsA [i]++;
619619 ret = 128 ;
620620 }
621621 }
622622 }
623623 // if inps => class mask
624624 for (auto const & cls : mCTPConfig .getCTPClasses ()) {
625- uint64_t clsinpmask = cls.descriptor ->getInputsMask ();
625+ uint64_t clsinpmask = cls.descriptor ->getInputsMask (); // class definition
626626 uint64_t diginpmask = digit.CTPInputMask .to_ullong ();
627627 uint64_t digclsmask = digit.CTPClassMask .to_ullong ();
628628 if ((clsinpmask & diginpmask) == clsinpmask) {
@@ -631,21 +631,19 @@ int RawDataDecoder::checkReadoutConsistentncy(o2::pmr::vector<CTPDigit>& digits,
631631 int32_t offset = BCShiftCorrection + o2::ctp::TriggerOffsetsParam::Instance ().LM_L0 + o2::ctp::TriggerOffsetsParam::Instance ().L0_L1_classes - 1 ;
632632 offset = o2::constants::lhc::LHCMaxBunches - offset;
633633 if (digit.intRecord .bc < offset) {
634- if (nerror < mErrorMax )
634+ if (( nerror < mErrorMax ) && (cls. classMask & ~trgclassmaskNoTrgDet) )
635635 LOG (error) << " CTP class:" << cls.name << " inpmask:" << clsinpmask << " cls mask:" << cls.classMask << " not found in digit:" << digit;
636- auto result = mInpErrors .insert ({diginpmask,1 });
637- if (!result.second )
638- mInpErrors [diginpmask]++;
636+ mClassErrorsB [cls.getIndex ()]++;
639637 ret = 256 ;
640638 } else {
641- lost ++;
639+ mLostDueToShift ++;
642640 }
643641 }
644642 }
645643 }
646644 }
647- if (lost ) {
648- LOG (info ) << " LOST classes because of shift:" << lost ;
645+ if (mLostDueToShift ) {
646+ LOG (debug ) << " LOST classes because of shift:" << mLostDueToShift ;
649647 }
650648 return ret;
651649}
0 commit comments