Interface to the new class for storing and retrieving of the raw-data decoding errors...
[u/mrichter/AliRoot.git] / RAW / AliRawReader.cxx
index 95570b08b46da1f343aa8ec3c7b8a03d0b3bf287..8294b3a1fb6a5edbb5bce4102d0ae78387cee13a 100644 (file)
@@ -39,6 +39,7 @@
 #include <Riostream.h>
 #include "AliRawReader.h"
 #include "AliDAQ.h"
+#include "AliLog.h"
 
 ClassImp(AliRawReader)
 
@@ -54,7 +55,9 @@ AliRawReader::AliRawReader() :
   fSelectMaxEquipmentId(-1),
   fSkipInvalid(kFALSE),
   fSelectEventType(-1),
-  fErrorCode(0)
+  fErrorCode(0),
+  fEventNumber(-1),
+  fErrorLogs("AliRawDataErrorLog",100)
 {
 // default constructor: initialize data members
 }
@@ -103,7 +106,9 @@ AliRawReader::AliRawReader(const AliRawReader& rawReader) :
   fSelectMaxEquipmentId(rawReader.fSelectMaxEquipmentId),
   fSkipInvalid(rawReader.fSkipInvalid),
   fSelectEventType(rawReader.fSelectEventType),
-  fErrorCode(0)
+  fErrorCode(0),
+  fEventNumber(-1),
+  fErrorLogs("AliRawDataErrorLog",100)
 {
 // copy constructor
 }
@@ -125,6 +130,9 @@ AliRawReader& AliRawReader::operator = (const AliRawReader& rawReader)
 
   fErrorCode = rawReader.fErrorCode;
 
+  fEventNumber = rawReader.fEventNumber;
+  fErrorLogs = *((TClonesArray*)rawReader.fErrorLogs.Clone());
+
   return *this;
 }
 
@@ -448,3 +456,25 @@ void AliRawReader::DumpData(Int_t limit)
           
   } while (ReadHeader());
 }
+
+void AliRawReader::AddErrorLog(AliRawDataErrorLog::ERawDataErrorType type,
+                              const char *message)
+{
+  // Add a raw data error message to the list
+  // of raw-data decoding errors
+  if (fEventNumber < 0) {
+    AliError("No events have read so far! Impossible to add a raw data error log!");
+    return;
+  }
+  Int_t ddlId = GetDDLID();
+  if (ddlId < 0) {
+    AliError("No ddl raw data have been read so far! Impossible to add a raw data error log!");
+    return;
+  }
+
+  new (fErrorLogs[fErrorLogs.GetEntriesFast()])
+    AliRawDataErrorLog(fEventNumber,
+                      ddlId,
+                      type,
+                      message);
+}