]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - MUON/AliMUONRawStreamTracker.cxx
Updated AddTask for pPb
[u/mrichter/AliRoot.git] / MUON / AliMUONRawStreamTracker.cxx
index d39b376f3f286bfd655cf65b49b92c865c2ed185..81b78dfdaca16b7a03ce4b28eb8896ea24c38eb8 100644 (file)
@@ -13,7 +13,7 @@
 * provided "as is" without express or implied warranty.                  *
 **************************************************************************/
 
-/* $Id $ */
+/* $Id$ */
 
 
 //-----------------------------------------------------------------------------
 ClassImp(AliMUONRawStreamTracker)
 /// \endcond
 
-const Int_t AliMUONRawStreamTracker::fgkMaxDDL = 20;
 
+//___________________________________________
+AliMUONRawStreamTracker::AliMUONRawStreamTracker(TRootIOCtor* /*dummy*/)
+: AliMUONVRawStreamTracker(),
+fPayload(0x0),
+fCurrentDDL(0),
+fCurrentDDLIndex(fgkMaxDDL),
+fCurrentBlockHeader(0),
+fCurrentBlockHeaderIndex(0),
+fCurrentDspHeader(0),
+fCurrentDspHeaderIndex(0),
+fCurrentBusStruct(0),
+fCurrentBusStructIndex(0),
+fCurrentDataIndex(0),
+fDDL(0)
+{
+  ///
+  /// create an object to read MUON raw digits
+  /// Default ctor with no memory allocation for I/O
+  ///
+}
 
 //___________________________________________
 AliMUONRawStreamTracker::AliMUONRawStreamTracker()
- : AliMUONRawStream(),
+ : AliMUONVRawStreamTracker(),
    fPayload(new AliMUONPayloadTracker()),
    fCurrentDDL(0),
    fCurrentDDLIndex(fgkMaxDDL),
@@ -78,7 +97,7 @@ AliMUONRawStreamTracker::AliMUONRawStreamTracker()
 
 //_________________________________________________________________
 AliMUONRawStreamTracker::AliMUONRawStreamTracker(AliRawReader* rawReader)
-: AliMUONRawStream(rawReader),
+: AliMUONVRawStreamTracker(rawReader),
   fPayload(new AliMUONPayloadTracker()),
   fCurrentDDL(0),
   fCurrentDDLIndex(fgkMaxDDL),
@@ -205,6 +224,7 @@ AliMUONRawStreamTracker::GetNextDDL()
     // 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;
   }
   
@@ -226,13 +246,11 @@ AliMUONRawStreamTracker::GetNextDDL()
   fPayload->ResetDDL();
   
 #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
 
   Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);
   
-  if (IsErrorLogger()) AddErrorMessage();
-
   delete[] buffer;
   
   fCurrentDDL = fPayload->GetDDLTracker();
@@ -377,6 +395,7 @@ Bool_t AliMUONRawStreamTracker::NextDDL()
   if ( fDDL == fgkMaxDDL ) 
   {
     fDDL = 0;
+    if ( IsErrorLogger()) AddErrorMessage();
     return kFALSE;
   }
   
@@ -393,13 +412,11 @@ Bool_t AliMUONRawStreamTracker::NextDDL()
   }
 
 #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
   
   Bool_t ok = fPayload->Decode(buffer, totalDataWord/4);
 
-  if ( IsErrorLogger()) AddErrorMessage();
-
   delete[] buffer;
   
   fDDL++;
@@ -420,7 +437,7 @@ void AliMUONRawStreamTracker::AddErrorMessage()
   /// add message into logger of AliRawReader per event
 
     assert( GetReader() != 0 );
-    TString msg = 0;
+    TString msg;
     Int_t occurance = 0;
     AliMUONLogger* log = fPayload->GetErrorLogger();
     
@@ -436,6 +453,8 @@ void AliMUONRawStreamTracker::AddErrorMessage()
       if (msg.Contains("Padding"))
         GetReader()->AddMinorErrorLog(kPaddingWordErr, msg.Data());
     }
+    
+    log->Clear(); // clear logger after each event
 }
 
 //______________________________________________________