Skip to content

Commit facbf10

Browse files
committed
Make sure the ROF IR is decoded, otherwise abort link data
1 parent 630acbb commit facbf10

2 files changed

Lines changed: 25 additions & 1 deletion

File tree

Detectors/ITSMFT/common/reconstruction/include/ITSMFTReconstruction/GBTLink.h

Lines changed: 8 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@
3939
} \
4040
if ((errRes)&uint8_t(Abort)) { \
4141
discardData(); \
42-
return AbortedOnError; \
42+
return (status = AbortedOnError); \
4343
}
4444

4545
namespace o2
@@ -187,6 +187,8 @@ struct GBTLink {
187187
uint8_t checkErrorsDiagnosticWord(const GBTDiagnostic* gbtD) const { return NoError; }
188188
uint8_t checkErrorsCalibrationWord(const GBTCalibration* gbtCal) const { return NoError; }
189189
uint8_t checkErrorsCableID(const GBTData* gbtD, uint8_t cableSW) const { return NoError; }
190+
uint8_t checkErrorsIRNotExtracted() const { return NoError; }
191+
190192
#else
191193
uint8_t checkErrorsAlignmentPadding();
192194
uint8_t checkErrorsRDH(const RDH& rdh);
@@ -203,6 +205,8 @@ struct GBTLink {
203205
uint8_t checkErrorsDiagnosticWord(const GBTDiagnostic* gbtD);
204206
uint8_t checkErrorsCalibrationWord(const GBTCalibration* gbtCal);
205207
uint8_t checkErrorsCableID(const GBTData* gbtD, uint8_t cableSW);
208+
uint8_t checkErrorsIRNotExtracted();
209+
206210
#endif
207211
uint8_t checkErrorsGBTDataID(const GBTData* dbtD);
208212

@@ -339,7 +343,10 @@ GBTLink::CollectedDataStatus GBTLink::collectROFCableData(const Mapping& chmap)
339343
}
340344
continue;
341345
}
346+
// trigger is supposed to be seen
347+
GBTLINK_DECODE_ERRORCHECK(errRes, checkErrorsIRNotExtracted());
342348
}
349+
343350
auto gbtD = reinterpret_cast<const o2::itsmft::GBTData*>(&currRawPiece->data[dataOffset]);
344351
expectPacketDone = true;
345352

Detectors/ITSMFT/common/reconstruction/src/GBTLink.cxx

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -510,6 +510,23 @@ uint8_t GBTLink::checkErrorsCableID(const GBTData* gbtD, uint8_t cableSW)
510510
return err;
511511
}
512512

513+
///_________________________________________________________________
514+
/// Check that the IR was extracted from the trigger
515+
uint8_t GBTLink::checkErrorsIRNotExtracted()
516+
{
517+
uint8_t err = uint8_t(NoError);
518+
if (ir.isDummy()) {
519+
statistics.errorCounts[GBTLinkDecodingStat::ErrMissingGBTTrigger]++;
520+
gbtErrStatUpadated = true;
521+
if (needToPrintError(statistics.errorCounts[GBTLinkDecodingStat::ErrMissingGBTTrigger])) {
522+
LOG(info) << describe() << " IR_RDH " << irHBF << " IR_ROF " << ir << ". " << statistics.ErrNames[GBTLinkDecodingStat::ErrMissingGBTTrigger];
523+
}
524+
errorBits |= 0x1 << int(GBTLinkDecodingStat::ErrMissingGBTTrigger);
525+
err |= uint8_t(Abort);
526+
}
527+
return err;
528+
}
529+
513530
///_________________________________________________________________
514531
/// Account link recovery RDH flag
515532
void GBTLink::accountLinkRecovery(o2::InteractionRecord ir)

0 commit comments

Comments
 (0)