]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRawStreamTrigger.cxx
Merge branch 'master' of https://git.cern.ch/reps/AliRoot
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTrigger.cxx
index dc7e89075d2faad8eaae6b422314538b2af8b10c..06d53278bdab3779031d183c5667292af322f9c5 100644 (file)
@@ -13,7 +13,7 @@
  * provided "as is" without express or implied warranty.                  *
  **************************************************************************/
 
-/* $Id $ */
+/* $Id$ */
 
 //-----------------------------------------------------------------------------
 /// \class AliMUONRawStreamTrigger
@@ -40,6 +40,7 @@
 
 #include "AliRawReader.h"
 #include "AliRawDataHeader.h"
+#include "AliRawDataHeaderV3.h"
 #include "AliDAQ.h"
 #include "AliLog.h"
 
@@ -51,9 +52,30 @@ ClassImp(AliMUONRawStreamTrigger)
 
 const Int_t AliMUONRawStreamTrigger::fgkMaxDDL = 2;
 
+//___________________________________________
+AliMUONRawStreamTrigger::AliMUONRawStreamTrigger(TRootIOCtor* /*dummy*/)
+:   AliMUONVRawStreamTrigger(),
+fPayload(0x0),
+fCurrentDDL(0x0),
+fCurrentDDLIndex(fgkMaxDDL),
+fCurrentDarcHeader(0x0),
+fCurrentRegHeader(0x0),
+fCurrentRegHeaderIndex(0),
+fCurrentLocalStruct(0x0),
+fCurrentLocalStructIndex(0),
+fLocalStructRead(kFALSE),
+fDDL(0),
+fNextDDL(kFALSE)
+{
+  ///
+  /// create an object to read MUON raw digits
+  /// Default ctor with no mem allocation for I/O
+  ///
+}
+
 //___________________________________________
 AliMUONRawStreamTrigger::AliMUONRawStreamTrigger()
-:   AliMUONRawStream(),
+:   AliMUONVRawStreamTrigger(),
     fPayload(new AliMUONPayloadTrigger()),
     fCurrentDDL(0x0),
     fCurrentDDLIndex(fgkMaxDDL),
@@ -64,8 +86,7 @@ AliMUONRawStreamTrigger::AliMUONRawStreamTrigger()
     fCurrentLocalStructIndex(0),
     fLocalStructRead(kFALSE),
     fDDL(0),
-    fNextDDL(kFALSE),
-    fEnableErrorLogger(kFALSE)
+    fNextDDL(kFALSE)
 {
   ///
   /// create an object to read MUON raw digits
@@ -77,7 +98,7 @@ AliMUONRawStreamTrigger::AliMUONRawStreamTrigger()
 
 //_________________________________________________________________
 AliMUONRawStreamTrigger::AliMUONRawStreamTrigger(AliRawReader* rawReader)
-  : AliMUONRawStream(rawReader),
+  : AliMUONVRawStreamTrigger(rawReader),
     fPayload(new AliMUONPayloadTrigger()),
     fCurrentDDL(0x0),
     fCurrentDDLIndex(fgkMaxDDL),
@@ -88,8 +109,7 @@ AliMUONRawStreamTrigger::AliMUONRawStreamTrigger(AliRawReader* rawReader)
     fCurrentLocalStructIndex(0),
     fLocalStructRead(kFALSE),
     fDDL(0),
-    fNextDDL(kFALSE),
-    fEnableErrorLogger(kFALSE)
+    fNextDDL(kFALSE)
 {
   ///
   /// ctor with AliRawReader as argument
@@ -213,7 +233,15 @@ Bool_t AliMUONRawStreamTrigger::GetNextDDL()
   
   Int_t totalDataWord  = GetReader()->GetDataSize(); // in bytes
   
-  Bool_t scalerEvent =  GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1;
+  AliRawReader * reader = GetReader();
+  if (!reader) return kFALSE;
+
+  const AliRawDataHeader * cdh = reader->GetDataHeader();
+  const AliRawDataHeaderV3 * cdh3 = reader->GetDataHeaderV3();
+
+  if (!cdh && !cdh3) return kFALSE;
+
+  Bool_t scalerEvent = ((cdh ?  cdh->GetL1TriggerMessage() : cdh3->GetL1TriggerMessage()) & 0x1) == 0x1;
 
   AliDebug(3, Form("DDL Number %d totalDataWord %d\n", fCurrentDDLIndex,
                    totalDataWord));
@@ -358,7 +386,15 @@ Bool_t AliMUONRawStreamTrigger::NextDDL()
 
   Int_t totalDataWord = GetReader()->GetDataSize(); // in bytes
 
-  Bool_t scalerEvent =  GetReader()->GetDataHeader()->GetL1TriggerMessage() & 0x1;
+  AliRawReader * reader = GetReader();
+  if (!reader) return kFALSE;
+
+  const AliRawDataHeader * cdh = reader->GetDataHeader();
+  const AliRawDataHeaderV3 * cdh3 = reader->GetDataHeaderV3();
+
+  if (!cdh && !cdh3) return kFALSE;
+
+  Bool_t scalerEvent = ((cdh ?  cdh->GetL1TriggerMessage() : cdh3->GetL1TriggerMessage()) & 0x1) == 0x1;
 
 
   UInt_t *buffer = new UInt_t[totalDataWord/4];
@@ -400,7 +436,7 @@ void AliMUONRawStreamTrigger::AddErrorMessage()
 {
 /// add message into logger of AliRawReader per event
 
-  TString msg = 0;
+  TString msg;
   Int_t occurance = 0;
   AliMUONLogger* log = fPayload->GetErrorLogger();