* provided "as is" without express or implied warranty. *
**************************************************************************/
+// $Id$
+//-----------------------------------------------------------------------------
/// \class AliMUONPayloadTrigger
/// Class Payload
///
/// First version implement for Trigger
///
/// \author Christian Finck
+//-----------------------------------------------------------------------------
#include "AliMUONPayloadTrigger.h"
#include "AliMUONRegHeader.h"
#include "AliMUONLocalStruct.h"
#include "AliMUONDDLTrigger.h"
+#include "AliMUONLogger.h"
#include "AliLog.h"
fMaxLoc(16),
fDDLTrigger(new AliMUONDDLTrigger()),
fRegHeader(new AliMUONRegHeader()),
- fLocalStruct(new AliMUONLocalStruct())
+ fLocalStruct(new AliMUONLocalStruct()),
+ fLog(new AliMUONLogger(1000)),
+ fDarcEoWErrors(0),
+ fGlobalEoWErrors(0),
+ fRegEoWErrors(0),
+ fLocalEoWErrors(0),
+ fWarnings(kTRUE)
{
///
/// create an object to read MUON raw digits
delete fDDLTrigger;
delete fLocalStruct;
delete fRegHeader;
+ delete fLog;
}
index += darcHeader->GetDarcScalerLength();
}
- if (buffer[index++] != darcHeader->GetEndOfDarc())
-
- AliError(Form("Wrong end of Darc word %x instead of %x\n",
- buffer[index-1], darcHeader->GetEndOfDarc()));
-
+ if (buffer[index++] != 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
memcpy(darcHeader->GetGlobalInput(), &buffer[index], (kGlobalHeaderSize)*4);
index += kGlobalHeaderSize;
index += darcHeader->GetGlobalScalerLength();
}
- if (buffer[index++] != darcHeader->GetEndOfGlobal())
+ if (buffer[index++] != darcHeader->GetEndOfGlobal()) {
- AliError(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
for (Int_t iReg = 0; iReg < fMaxReg; iReg++) { //loop over regeonal card
index += fRegHeader->GetScalerLength();
}
- if (buffer[index++] != fRegHeader->GetEndOfReg())
-
- AliError(Form("Wrong end of Reg word %x instead of %x\n",
- buffer[index-1], fRegHeader->GetEndOfReg()));
-
+ if (buffer[index++] != 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
for (Int_t iLoc = 0; iLoc < fMaxLoc; iLoc++) { //loop over local card
index += fLocalStruct->GetScalerLength();
}
- if (buffer[index++] != fLocalStruct->GetEndOfLocal())
-
- AliError(Form("Wrong end of local word %x instead of %x\n",
- buffer[index-1], fLocalStruct->GetEndOfLocal()));
+ if (buffer[index++] != 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
if (fLocalStruct->GetData(0) == fLocalStruct->GetDisableWord())
continue;
///
AliMUONDarcHeader* darcHeader = fDDLTrigger->GetDarcHeader();
darcHeader->GetRegHeaderArray()->Delete();
+ fDarcEoWErrors = 0;
+ fGlobalEoWErrors = 0;
+ fRegEoWErrors = 0;
+ fLocalEoWErrors = 0;
}
//______________________________________________________
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());
+}
+