#include <Riostream.h>
#include "AliRawReader.h"
#include "AliDAQ.h"
+#include "AliLog.h"
ClassImp(AliRawReader)
fSelectMaxEquipmentId(-1),
fSkipInvalid(kFALSE),
fSelectEventType(-1),
- fErrorCode(0)
+ fErrorCode(0),
+ fEventNumber(-1),
+ fErrorLogs("AliRawDataErrorLog",100)
{
// default constructor: initialize data members
}
fSelectMaxEquipmentId(rawReader.fSelectMaxEquipmentId),
fSkipInvalid(rawReader.fSkipInvalid),
fSelectEventType(rawReader.fSelectEventType),
- fErrorCode(0)
+ fErrorCode(0),
+ fEventNumber(-1),
+ fErrorLogs("AliRawDataErrorLog",100)
{
// copy constructor
}
fErrorCode = rawReader.fErrorCode;
+ fEventNumber = rawReader.fEventNumber;
+ fErrorLogs = *((TClonesArray*)rawReader.fErrorLogs.Clone());
+
return *this;
}
} 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);
+}
#include <TObject.h>
#include <TArrayI.h>
+#include <TClonesArray.h>
+
+#include "AliRawDataErrorLog.h"
#include "AliRawDataHeader.h"
class AliRawEventHeaderBase;
void DumpData(Int_t limit = -1);
+ void AddErrorLog(AliRawDataErrorLog::ERawDataErrorType type,
+ const char *message = NULL);
+ Int_t GetNumberOfErrorLogs() const { return fErrorLogs.GetEntriesFast(); }
+ AliRawDataErrorLog *GetErrorLog(Int_t i) const {
+ return (AliRawDataErrorLog *)fErrorLogs.UncheckedAt(i);
+ }
+
protected :
Bool_t IsSelected() const;
Bool_t IsEventSelected() const;
Int_t fErrorCode; // code of last error
+ Int_t fEventNumber; // current event number
+ TClonesArray fErrorLogs; // raw data decoding errors
+
ClassDef(AliRawReader, 0) // base class for reading raw digits
};
break;
}
fEvent = (eventHeaderStruct*) buffer;
+ fEventNumber++;
return kTRUE;
};
if (!fFile) return kFALSE;
fseek(fFile, 0, SEEK_SET);
+ fEventNumber = -1;
return Reset();
}
break;
}
fEvent = (eventHeaderStruct*) buffer;
+ fEventNumber++;
return kTRUE;
};
if (!fFile) return kFALSE;
fseek(fFile, 0, SEEK_SET);
+ fEventNumber = -1;
return Reset();
}
Reset();
} while (!IsEventSelected());
+ fEventNumber++;
+
return kTRUE;
}
// reset the event counter
if (fEventIndex >= 0) fEventIndex = -1;
+ fEventNumber = -1;
return Reset();
}
// the given memory location
fHeader = new AliRawDataHeader;
+
+ fEventNumber = 0;
}
AliRawReaderMemory::AliRawReaderMemory(UChar_t* memory, UInt_t size) :
// create an object to read digits from the given memory
fHeader = new AliRawDataHeader;
+
+ fEventNumber = 0;
}
AliRawReaderMemory::~AliRawReaderMemory()
return kFALSE;
fEventIndex++;
} while (!IsEventSelected());
+ fEventNumber++;
return Reset();
}
delete fEvent;
fEvent = new AliRawEvent;
fBranch->SetAddress(&fEvent);
+ fEventNumber = -1;
return Reset();
}