X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=MUON%2FAliMUONRawStreamTriggerHP.cxx;h=aa9b12a2f460eecc31c570e3f1cf91dd6a7110f6;hb=242accb22597c4b066c6c06c6bafdcbcdda0d5de;hp=8b52504d19ca5ee64b667ca5f69f6e551f8082b6;hpb=db7e03ac475daa4756830da34113592b1a084491;p=u%2Fmrichter%2FAliRoot.git diff --git a/MUON/AliMUONRawStreamTriggerHP.cxx b/MUON/AliMUONRawStreamTriggerHP.cxx index 8b52504d19c..aa9b12a2f46 100644 --- a/MUON/AliMUONRawStreamTriggerHP.cxx +++ b/MUON/AliMUONRawStreamTriggerHP.cxx @@ -77,7 +77,11 @@ AliMUONRawStreamTriggerHP::AliMUONRawStreamTriggerHP() : fkCurrentLocalStruct(NULL), fHadError(kFALSE), fDone(kFALSE), - fDDLObject(NULL) + fDDLObject(NULL), + fTotalNumberOfDarcEoWErrors(0), + fTotalNumberOfGlobalEoWErrors(0), + fTotalNumberOfRegEoWErrors(0), + fTotalNumberOfLocalEoWErrors(0) { /// /// Default constructor. @@ -103,7 +107,11 @@ AliMUONRawStreamTriggerHP::AliMUONRawStreamTriggerHP(AliRawReader* rawReader) : fkCurrentLocalStruct(NULL), fHadError(kFALSE), fDone(kFALSE), - fDDLObject(NULL) + fDDLObject(NULL), + fTotalNumberOfDarcEoWErrors(0), + fTotalNumberOfGlobalEoWErrors(0), + fTotalNumberOfRegEoWErrors(0), + fTotalNumberOfLocalEoWErrors(0) { /// /// Constructor with AliRawReader as argument. @@ -147,6 +155,10 @@ void AliMUONRawStreamTriggerHP::First() fDDL = 0; fDone = kFALSE; NextDDL(); + fTotalNumberOfDarcEoWErrors = 0; + fTotalNumberOfGlobalEoWErrors = 0; + fTotalNumberOfRegEoWErrors = 0; + fTotalNumberOfLocalEoWErrors = 0; } @@ -225,6 +237,10 @@ Bool_t AliMUONRawStreamTriggerHP::NextDDL() Swap(reinterpret_cast(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; @@ -235,6 +251,10 @@ Bool_t AliMUONRawStreamTriggerHP::NextDDL() // 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&) { @@ -245,7 +265,6 @@ Bool_t AliMUONRawStreamTriggerHP::NextDDL() // Update the current local structure pointer. fkCurrentLocalStruct = fDecoder.GetHandler().FirstLocalStruct(); - fDDL++; // Remember to increment index to next DDL. return kTRUE; } @@ -355,8 +374,8 @@ AliMUONDDLTrigger* AliMUONRawStreamTriggerHP::GetDDLTrigger() const // ID in the structure with the calculated one returned by GetId(). AliMUONLocalInfoStruct* strptr = reinterpret_cast( localStruct.GetData() ); UInt_t triggerBits = strptr->fTriggerBits; - triggerBits &= (0xF << 19); - strptr->fTriggerBits = triggerBits | (lstruct->GetId() << 19); + triggerBits &= ~(0xF << 19); + strptr->fTriggerBits = triggerBits | ((lstruct->GetId() & 0xF) << 19); } fDDLObject->AddLocStruct(localStruct, iReg); lstruct = lstruct->Next(); @@ -707,7 +726,7 @@ void AliMUONRawStreamTriggerHP::AliDecoderEventHandler::OnError( 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) );