/// \endcond
const Int_t AliMUONRawStreamTriggerHP::fgkMaxDDL = 2;
+bool AliMUONRawStreamTriggerHP::AliLocalStruct::fgOverrideId = true;
const AliMUONRegionalHeaderStruct
AliMUONRawStreamTriggerHP::AliDecoderEventHandler::fgkEmptyHeader = {
fkCurrentLocalStruct(NULL),
fHadError(kFALSE),
fDone(kFALSE),
- fDDLObject(NULL)
+ fDDLObject(NULL),
+ fTotalNumberOfDarcEoWErrors(0),
+ fTotalNumberOfGlobalEoWErrors(0),
+ fTotalNumberOfRegEoWErrors(0),
+ fTotalNumberOfLocalEoWErrors(0)
{
///
/// Default constructor.
fkCurrentLocalStruct(NULL),
fHadError(kFALSE),
fDone(kFALSE),
- fDDLObject(NULL)
+ fDDLObject(NULL),
+ fTotalNumberOfDarcEoWErrors(0),
+ fTotalNumberOfGlobalEoWErrors(0),
+ fTotalNumberOfRegEoWErrors(0),
+ fTotalNumberOfLocalEoWErrors(0)
{
///
/// Constructor with AliRawReader as argument.
fDDL = 0;
fDone = kFALSE;
NextDDL();
+ fTotalNumberOfDarcEoWErrors = 0;
+ fTotalNumberOfGlobalEoWErrors = 0;
+ fTotalNumberOfRegEoWErrors = 0;
+ fTotalNumberOfLocalEoWErrors = 0;
}
Swap(reinterpret_cast<UInt_t*>(fBuffer), dataSize / sizeof(UInt_t)); // Swap needed for mac power pc.
#endif
+ fDDL++; // Remember to increment index to next DDL before the calls to
+ // fDecoder.Decode since the callback methods of the decoder might
+ // use AliMUONRawStreamTriggerHP::GetDDL()
+
// Check if this is a scalar event.
bool scalerEvent = (GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1) == 0x1;
// handler we need to trap any memory allocation exception to be robust.
result = fDecoder.Decode(fBuffer, dataSize, scalerEvent);
fHadError = (result == true ? kFALSE : kTRUE);
+ fTotalNumberOfDarcEoWErrors += fDecoder.GetHandler().GetDarcEoWErrors();
+ fTotalNumberOfGlobalEoWErrors += fDecoder.GetHandler().GetGlobalEoWErrors();
+ fTotalNumberOfRegEoWErrors += fDecoder.GetHandler().GetRegEoWErrors();
+ fTotalNumberOfLocalEoWErrors += fDecoder.GetHandler().GetLocalEoWErrors();
}
catch (const std::bad_alloc&)
{
// Update the current local structure pointer.
fkCurrentLocalStruct = fDecoder.GetHandler().FirstLocalStruct();
- fDDL++; // Remember to increment index to next DDL.
return kTRUE;
}
{
memcpy(localStruct.GetScalers(), lstruct->GetScalars(), sizeof(AliMUONLocalScalarsStruct));
}
+ if (AliMUONRawStreamTriggerHP::AliLocalStruct::GetOverrideIdFlag() == true)
+ {
+ // Since the override ID flag is set, we need to replace the
+ // ID in the structure with the calculated one returned by GetId().
+ AliMUONLocalInfoStruct* strptr = reinterpret_cast<AliMUONLocalInfoStruct*>( localStruct.GetData() );
+ UInt_t triggerBits = strptr->fTriggerBits;
+ triggerBits &= ~(0xF << 19);
+ strptr->fTriggerBits = triggerBits | ((lstruct->GetId() & 0xF) << 19);
+ }
fDDLObject->AddLocStruct(localStruct, iReg);
lstruct = lstruct->Next();
}
default:
message = Form(
- "%s (At byte %d in DDL.)",
+ "%s (At byte %lu in DDL.)",
ErrorCodeToMessage(error),
(unsigned long)location - (unsigned long)fBufferStart + sizeof(AliRawDataHeader)
);