* provided "as is" without express or implied warranty. *
**************************************************************************/
-/* $Id $ */
+/* $Id$ */
//-----------------------------------------------------------------------------
/// \class AliMUONRawStreamTrigger
//___________________________________________
AliMUONRawStreamTrigger::AliMUONRawStreamTrigger()
-: AliMUONRawStream(),
+: AliMUONVRawStreamTrigger(),
fPayload(new AliMUONPayloadTrigger()),
fCurrentDDL(0x0),
fCurrentDDLIndex(fgkMaxDDL),
fCurrentLocalStruct(0x0),
fCurrentLocalStructIndex(0),
fLocalStructRead(kFALSE),
- fDDL(0)
+ fDDL(0),
+ fNextDDL(kFALSE),
+ fEnableErrorLogger(kFALSE)
{
///
/// create an object to read MUON raw digits
//_________________________________________________________________
AliMUONRawStreamTrigger::AliMUONRawStreamTrigger(AliRawReader* rawReader)
- : AliMUONRawStream(rawReader),
+ : AliMUONVRawStreamTrigger(rawReader),
fPayload(new AliMUONPayloadTrigger()),
fCurrentDDL(0x0),
fCurrentDDLIndex(fgkMaxDDL),
fCurrentLocalStruct(0x0),
fCurrentLocalStructIndex(0),
fLocalStructRead(kFALSE),
- fDDL(0)
+ fDDL(0),
+ fNextDDL(kFALSE),
+ fEnableErrorLogger(kFALSE)
{
///
/// ctor with AliRawReader as argument
/// Returns the next DDL present
assert( GetReader() != 0 );
+
Bool_t kFound(kFALSE);
// We have not actually been able to complete the loading of the new DDL so
// we are still on the old one. In this case we do not need to reset fCurrentDDL.
//fCurrentDDL = 0;
+ if (IsErrorLogger()) AddErrorMessage();
return kFALSE;
}
Int_t totalDataWord = GetReader()->GetDataSize(); // in bytes
+ Bool_t scalerEvent = GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1;
+
AliDebug(3, Form("DDL Number %d totalDataWord %d\n", fCurrentDDLIndex,
totalDataWord));
UInt_t *buffer = new UInt_t[totalDataWord/4];
-
+
if ( !GetReader()->ReadNext((UChar_t*)buffer, totalDataWord) )
{
// We have not actually been able to complete the loading of the new DDL so
}
#ifndef R__BYTESWAP
- swap(buffer, totalDataWord); // swap needed for mac power pc
+ Swap(buffer, totalDataWord / sizeof(UInt_t)); // swap needed for mac power pc
#endif
fPayload->ResetDDL();
- Bool_t ok = fPayload->Decode(buffer);
-
- if (IsErrorLogger()) AddErrorMessage();
+
+
+ Bool_t ok = fPayload->Decode(buffer, scalerEvent);
delete[] buffer;
if (fDDL >= fgkMaxDDL) {
fDDL = 0;
+ if (IsErrorLogger()) AddErrorMessage();
return kFALSE;
}
Int_t totalDataWord = GetReader()->GetDataSize(); // in bytes
+ Bool_t scalerEvent = GetReader()->GetDataHeader() && GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1;
+
+
UInt_t *buffer = new UInt_t[totalDataWord/4];
// check not necessary yet, but for future developments
if (!GetReader()->ReadNext((UChar_t*)buffer, totalDataWord)) return kFALSE;
-#ifndef R__BYTESWAP
- swap(buffer, totalDataWord); // swap needed for mac power pc
+#ifndef R__BYTESWAP
+ Swap(buffer, totalDataWord / sizeof(UInt_t)); // swap needed for mac power pc
#endif
- fPayload->Decode(buffer);
- if (IsErrorLogger()) AddErrorMessage();
+ fPayload->Decode(buffer, scalerEvent);
+
fDDL++;
return kTRUE;
}
-//______________________________________________________
-void AliMUONRawStreamTrigger::SetMaxReg(Int_t reg)
-{
- /// set regional card number
- fPayload->SetMaxReg(reg);
-}
+// //______________________________________________________
+// void AliMUONRawStreamTrigger::SetMaxReg(Int_t reg)
+// {
+// /// set regional card number
+// fPayload->SetMaxReg(reg);
+// }
//______________________________________________________
void AliMUONRawStreamTrigger::SetMaxLoc(Int_t loc)
{
/// add message into logger of AliRawReader per event
- TString msg = 0;
+ TString msg;
Int_t occurance = 0;
AliMUONLogger* log = fPayload->GetErrorLogger();
if (msg.Contains("Local"))
GetReader()->AddMajorErrorLog(kLocalEoWErr, msg.Data());
}
+
+ log->Clear(); // clear after each event
}