From 96a8629f747a85afe811b3720d894dc8df9b9485 Mon Sep 17 00:00:00 2001 From: ivana Date: Thu, 22 Nov 2007 17:04:09 +0000 Subject: [PATCH] - Used AliMUONLogger for errors - Flag to disable warnings outputs (Christian) --- MUON/AliMUONPayloadTrigger.cxx | 45 +++++++++++++++++++++++++++------- MUON/AliMUONPayloadTrigger.h | 14 +++++++++-- 2 files changed, 48 insertions(+), 11 deletions(-) diff --git a/MUON/AliMUONPayloadTrigger.cxx b/MUON/AliMUONPayloadTrigger.cxx index d55bf6a6553..349bb193818 100644 --- a/MUON/AliMUONPayloadTrigger.cxx +++ b/MUON/AliMUONPayloadTrigger.cxx @@ -32,6 +32,7 @@ #include "AliMUONRegHeader.h" #include "AliMUONLocalStruct.h" #include "AliMUONDDLTrigger.h" +#include "AliMUONLogger.h" #include "AliLog.h" @@ -46,10 +47,12 @@ AliMUONPayloadTrigger::AliMUONPayloadTrigger() fDDLTrigger(new AliMUONDDLTrigger()), fRegHeader(new AliMUONRegHeader()), fLocalStruct(new AliMUONLocalStruct()), + fLog(new AliMUONLogger(1000)), fDarcEoWErrors(0), fGlobalEoWErrors(0), fRegEoWErrors(0), - fLocalEoWErrors(0) + fLocalEoWErrors(0), + fWarnings(kTRUE) { /// /// create an object to read MUON raw digits @@ -67,6 +70,7 @@ AliMUONPayloadTrigger::~AliMUONPayloadTrigger() delete fDDLTrigger; delete fLocalStruct; delete fRegHeader; + delete fLog; } @@ -104,8 +108,10 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer) if (buffer[index++] != darcHeader->GetEndOfDarc()) { - AliWarning(Form("Wrong end of Darc word %x instead of %x\n", - buffer[index-1], darcHeader->GetEndOfDarc())); + const Char_t* msg = Form("Wrong end of Darc word %x instead of %x\n", + buffer[index-1], darcHeader->GetEndOfDarc()); + if (fWarnings) AliWarning(msg); + AddErrorMessage(msg); fDarcEoWErrors++; } // 4 words of global board input + Global board output @@ -120,8 +126,10 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer) if (buffer[index++] != darcHeader->GetEndOfGlobal()) { - AliWarning(Form("Wrong end of Global word %x instead of %x\n", - buffer[index-1], darcHeader->GetEndOfGlobal())); + const Char_t* msg = Form("Wrong end of Global word %x instead of %x\n", + buffer[index-1], darcHeader->GetEndOfGlobal()); + if (fWarnings) AliWarning(msg); + AddErrorMessage(msg); fGlobalEoWErrors++; } // 8 regional boards @@ -139,8 +147,10 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer) if (buffer[index++] != fRegHeader->GetEndOfReg()) { - AliWarning(Form("Wrong end of Reg word %x instead of %x\n", - buffer[index-1], fRegHeader->GetEndOfReg())); + const Char_t* msg = Form("Wrong end of Regional word %x instead of %x\n", + buffer[index-1], fRegHeader->GetEndOfReg()); + if (fWarnings) AliWarning(msg); + AddErrorMessage(msg); fRegEoWErrors++; } // 16 local cards per regional board @@ -160,8 +170,11 @@ Bool_t AliMUONPayloadTrigger::Decode(UInt_t *buffer) if (buffer[index++] != fLocalStruct->GetEndOfLocal()) { - AliWarning(Form("Wrong end of local word %x instead of %x\n", - buffer[index-1], fLocalStruct->GetEndOfLocal())); + const Char_t* msg = Form("Wrong end of Local word %x instead of %x\n", + buffer[index-1], fLocalStruct->GetEndOfLocal()); + + if (fWarnings) AliWarning(msg); + AddErrorMessage(msg); fLocalEoWErrors++; } // fill only if card notified @@ -207,3 +220,17 @@ void AliMUONPayloadTrigger::SetMaxLoc(Int_t loc) if (loc > 16) loc = 16; fMaxLoc = loc; } + +//______________________________________________________ +void AliMUONPayloadTrigger::AddErrorMessage(const Char_t* msg) +{ +/// adding message to logger + + TString tmp(msg); + + Int_t pos = tmp.First("\n"); + tmp[pos] = 0; + + fLog->Log(tmp.Data()); +} + diff --git a/MUON/AliMUONPayloadTrigger.h b/MUON/AliMUONPayloadTrigger.h index c1dfa11d17a..7557c275d67 100644 --- a/MUON/AliMUONPayloadTrigger.h +++ b/MUON/AliMUONPayloadTrigger.h @@ -16,6 +16,8 @@ class AliMUONDDLTrigger; class AliMUONLocalStruct; class AliMUONRegHeader; +class AliMUONLogger; +class AliMUONLogger; class AliMUONPayloadTrigger: public TObject { public : @@ -50,13 +52,20 @@ class AliMUONPayloadTrigger: public TObject { /// Get number of end of local word errors Int_t GetLocalEoWErrors() const {return fLocalEoWErrors;} - + /// Get Error logger + AliMUONLogger* GetErrorLogger() const {return fLog;} + + /// set warnings flag + void DisableWarnings() {fWarnings = kFALSE;} + private : /// Not implemented AliMUONPayloadTrigger(const AliMUONPayloadTrigger& stream); /// Not implemented AliMUONPayloadTrigger& operator = (const AliMUONPayloadTrigger& stream); + void AddErrorMessage(const Char_t* msg); + Int_t fMaxReg; ///< maximum number of regional cards in DATE file Int_t fMaxLoc; ///< maximum number of local cards in DATE file @@ -64,11 +73,12 @@ class AliMUONPayloadTrigger: public TObject { AliMUONRegHeader* fRegHeader; //!< pointer for regional structure AliMUONLocalStruct* fLocalStruct; //!< pointer to local structure + AliMUONLogger* fLog; //!< Map of errors msg; Int_t fDarcEoWErrors; //!< number of end of DARC word errors; Int_t fGlobalEoWErrors; //!< number of end of global word errors; Int_t fRegEoWErrors; //!< number of end of regional word errors; Int_t fLocalEoWErrors; //!< number of end of local word errors; - + Bool_t fWarnings; //!< flag to enable/disable warnings ClassDef(AliMUONPayloadTrigger, 2) // base class for reading MUON trigger rawdata }; -- 2.43.5