@@ -298,10 +298,12 @@ int RawDataDecoder::decodeRaw(o2::framework::InputRecord& inputs, std::vector<o2
298298 if (mCTPConfig .getRunNumber () != 0 ) {
299299 trgclassmask = mCTPConfig .getTriggerClassMaskWInputs ();
300300 trgclassmaskNOTRGDet = mCTPConfig .getTriggerClassMaskWInputsNoTrgDets ();
301+ // mCTPConfig.printStream(std::cout);
301302 }
302- // std::cout << "trgclassmask:" << std::hex << trgclassmask << std::dec << std::endl;
303+ // std::cout << "trgclassmask:" << std::hex << trgclassmask << std::dec << std::endl;
303304 ret = shiftInputs (digitsMap, digits, mTFOrbit );
304- if (mCheckConsistency ) {
305+ // if (mCheckConsistency) {
306+ if (1 ) {
305307 ret = checkReadoutConsistentncy (digits, trgclassmask, trgclassmaskNOTRGDet);
306308 }
307309 }
@@ -596,47 +598,63 @@ int RawDataDecoder::shiftInputs(std::map<o2::InteractionRecord, CTPDigit>& digit
596598//
597599int RawDataDecoder::checkReadoutConsistentncy (o2::pmr::vector<CTPDigit>& digits, uint64_t trgclassmask, uint64_t trgclassmaskNoTrgDet)
598600{
601+ LOG (debug) << " Checking readout" ;
599602 int ret = 0 ;
600603 static int nerror = 0 ;
601604 for (auto const & digit : digits) {
602605 // if class mask => inps
603606 for (int i = 0 ; i < digit.CTPClassMask .size (); i++) {
604- if (digit.CTPClassMask [i] & trgclassmask) {
607+ bool trgcls = trgclassmask & (1ull << i);
608+ if (digit.CTPClassMask [i] & trgcls) {
605609 const CTPClass* cls = mCTPConfig .getCTPClassFromHWIndex (i);
606610 if (cls == nullptr ) {
607- if (nerror < mErrorMax )
611+ if (nerror < mErrorMax ) {
608612 LOG (error) << " Class mask index not found in CTP config:" << i;
613+ nerror++;
614+ }
609615 ret = 128 ;
610616 continue ;
611617 }
612618 mClassCountersA [i]++;
619+ if ( cls->descriptor == nullptr )
620+ continue ;
613621 uint64_t clsinpmask = cls->descriptor ->getInputsMask ();
614622 uint64_t diginpmask = digit.CTPInputMask .to_ullong ();
615623 if (!((clsinpmask & diginpmask) == clsinpmask)) {
616- if (nerror < mErrorMax )
617- LOG (error) << " CTP class:" << cls->name << " inpmask:" << clsinpmask << " not compatible with inputs mask:" << diginpmask;
624+ if (nerror < mErrorMax ) {
625+ LOG (error) << " Cls=>Inps: CTP class:" << cls->name << " inpmask:" << clsinpmask << " not compatible with inputs mask:" << diginpmask;
626+ nerror++;
627+ }
618628 mClassErrorsA [i]++;
619629 ret = 128 ;
620630 }
621631 }
622632 }
623633 // if inps => class mask
624634 for (auto const & cls : mCTPConfig .getCTPClasses ()) {
635+ // cls.printStream(std::cout);
636+ if (cls.descriptor == nullptr )
637+ continue ;
625638 uint64_t clsinpmask = cls.descriptor ->getInputsMask (); // class definition
626639 uint64_t diginpmask = digit.CTPInputMask .to_ullong ();
627640 uint64_t digclsmask = digit.CTPClassMask .to_ullong ();
628641 if ((clsinpmask & diginpmask) == clsinpmask) {
629- if ((cls.classMask & digclsmask) == 0 ) {
630- int32_t BCShiftCorrection = -o2::ctp::TriggerOffsetsParam::Instance ().customOffset [o2::detectors::DetID::CTP];
631- int32_t offset = BCShiftCorrection + o2::ctp::TriggerOffsetsParam::Instance ().LM_L0 + o2::ctp::TriggerOffsetsParam::Instance ().L0_L1_classes - 1 ;
632- offset = o2::constants::lhc::LHCMaxBunches - offset;
633- if (digit.intRecord .bc < offset) {
634- if ((nerror < mErrorMax ) && (cls.classMask & ~trgclassmaskNoTrgDet))
635- LOG (error) << " CTP class:" << cls.name << " inpmask:" << clsinpmask << " cls mask:" << cls.classMask << " not found in digit:" << digit;
636- mClassErrorsB [cls.getIndex ()]++;
637- ret = 256 ;
638- } else {
639- mLostDueToShift ++;
642+ if (cls.classMask & trgclassmask) {
643+ mClassCountersB [cls.getIndex ()]++;
644+ if ((cls.classMask & digclsmask) == 0 ) {
645+ int32_t BCShiftCorrection = -o2::ctp::TriggerOffsetsParam::Instance ().customOffset [o2::detectors::DetID::CTP];
646+ int32_t offset = BCShiftCorrection + o2::ctp::TriggerOffsetsParam::Instance ().LM_L0 + o2::ctp::TriggerOffsetsParam::Instance ().L0_L1_classes - 1 ;
647+ offset = o2::constants::lhc::LHCMaxBunches - offset;
648+ if (digit.intRecord .bc < offset) {
649+ if ((nerror < mErrorMax ) && (cls.classMask & ~trgclassmaskNoTrgDet)){
650+ LOG (info) << " Inp=>Cls: CTP class:" << cls.name << " inpmask:" << clsinpmask << " cls mask:" << cls.classMask << " not found in digit:" << digit;
651+ nerror++;
652+ }
653+ mClassErrorsB [cls.getIndex ()]++;
654+ ret = 256 ;
655+ } else {
656+ mLostDueToShift ++;
657+ }
640658 }
641659 }
642660 }
0 commit comments