AliRawReader::AliRawReader() :
+ fRequireHeader(kTRUE),
fHeader(NULL),
fCount(0),
fSelectEquipmentType(-1),
AliRawReader::AliRawReader(const AliRawReader& rawReader) :
TObject(rawReader),
+ fRequireHeader(rawReader.fRequireHeader),
fHeader(rawReader.fHeader),
fCount(rawReader.fCount),
fSelectEquipmentType(rawReader.fSelectEquipmentType),
void SkipInvalid(Bool_t skip = kTRUE)
{fSkipInvalid = skip;};
void SelectEvents(Int_t type);
+ void RequireHeader(Bool_t required = kTRUE)
+ {fRequireHeader = required;};
virtual UInt_t GetType() const = 0;
virtual UInt_t GetRunNumber() const = 0;
virtual Bool_t ReadNext(UChar_t* data, Int_t size) = 0;
+ Bool_t fRequireHeader; // if false, data without header is accepted
+
AliRawDataHeader* fHeader; // current data header
Int_t fCount; // counter of bytes to be read for current DDL
void* /* event */
#endif
) :
- fRequireHeader(kTRUE),
fFile(NULL),
fEvent(NULL),
fSubEvent(NULL),
Int_t /*eventNumber*/
#endif
) :
- fRequireHeader(kTRUE),
fFile(NULL),
fEvent(NULL),
fSubEvent(NULL),
AliRawReaderDate::AliRawReaderDate(const AliRawReaderDate& rawReader) :
AliRawReader(rawReader),
- fRequireHeader(rawReader.fRequireHeader),
fFile(rawReader.fFile),
fEvent(rawReader.fEvent),
fSubEvent(rawReader.fSubEvent),
// continue with the next sub event if no data left in the payload
if (position >= end) continue;
+ if (fRequireHeader) {
// check that there are enough bytes left for the data header
- if (position + sizeof(AliRawDataHeader) > end) {
- result |= kErrNoDataHeader;
- position = end;
- continue;
- }
-
- // check consistency of data size in the data header and in the sub event
- AliRawDataHeader* header = (AliRawDataHeader*) position;
- if (header->fSize != 0xFFFFFFFF) {
- if (position + header->fSize > end) {
- result |= kErrSize;
+ if (position + sizeof(AliRawDataHeader) > end) {
+ result |= kErrNoDataHeader;
position = end;
- } else {
- position += header->fSize;
+ continue;
+ }
+
+ // check consistency of data size in the data header and in the sub event
+ AliRawDataHeader* header = (AliRawDataHeader*) position;
+ if (header->fSize != 0xFFFFFFFF) {
+ if (position + header->fSize > end) result |= kErrSize;
}
- } else {
- position = end;
}
+ position = end;
};
#endif
AliRawReaderDate(const char* fileName, Int_t eventNumber = -1);
virtual ~AliRawReaderDate();
- void RequireHeader(Bool_t required = kTRUE)
- {fRequireHeader = required;};
-
virtual UInt_t GetType() const;
virtual UInt_t GetRunNumber() const;
virtual const UInt_t* GetEventId() const;
protected :
virtual Bool_t ReadNext(UChar_t* data, Int_t size);
- Bool_t fRequireHeader; // if false, data without header is accepted
-
FILE* fFile; // DATE file
eventHeaderStruct* fEvent; // raw data super event
eventHeaderStruct* fSubEvent; // raw data sub event
AliRawReaderDateV3::AliRawReaderDateV3(void* event) :
- fRequireHeader(kTRUE),
fFile(NULL),
fEvent(NULL),
fSubEvent(NULL),
AliRawReaderDateV3::AliRawReaderDateV3(const char* fileName,
Int_t eventNumber) :
- fRequireHeader(kTRUE),
fFile(NULL),
fEvent(NULL),
fSubEvent(NULL),
AliRawReaderDateV3::AliRawReaderDateV3(const AliRawReaderDateV3& rawReader) :
AliRawReader(rawReader),
- fRequireHeader(rawReader.fRequireHeader),
fFile(rawReader.fFile),
fEvent(rawReader.fEvent),
fSubEvent(rawReader.fSubEvent),
AliRawReaderDateV3(const char* fileName, Int_t eventNumber = -1);
virtual ~AliRawReaderDateV3();
- void RequireHeader(Bool_t required = kTRUE)
- {fRequireHeader = required;};
-
virtual UInt_t GetType() const;
virtual UInt_t GetRunNumber() const;
virtual const UInt_t* GetEventId() const;
protected :
virtual Bool_t ReadNext(UChar_t* data, Int_t size);
- Bool_t fRequireHeader; // if false, data without header is accepted
-
FILE* fFile; // DATE file
eventHeaderStruct* fEvent; // raw data super event
eventHeaderStruct* fSubEvent; // raw data sub event
// continue with the next equipment if no data left in the payload
if (fPosition >= fEnd) continue;
- // check that there are enough bytes left for the data header
- if (fPosition + sizeof(AliRawDataHeader) > fEnd) {
- Error("ReadHeader", "could not read data header!");
- Warning("ReadHeader", "skipping %d bytes", fEnd - fPosition);
- fEquipment->GetEquipmentHeader()->Dump();
- fCount = 0;
- fPosition = fEnd;
- fErrorCode = kErrNoDataHeader;
- continue;
+ if (fRequireHeader) {
+ // check that there are enough bytes left for the data header
+ if (fPosition + sizeof(AliRawDataHeader) > fEnd) {
+ Error("ReadHeader", "could not read data header!");
+ Warning("ReadHeader", "skipping %d bytes", fEnd - fPosition);
+ fEquipment->GetEquipmentHeader()->Dump();
+ fCount = 0;
+ fPosition = fEnd;
+ fErrorCode = kErrNoDataHeader;
+ continue;
+ }
+
+ // "read" the data header
+ fHeader = (AliRawDataHeader*) fPosition;
+ fPosition += sizeof(AliRawDataHeader);
}
- // "read" the data header
- fHeader = (AliRawDataHeader*) fPosition;
- fPosition += sizeof(AliRawDataHeader);
if (fHeader->fSize != 0xFFFFFFFF) {
fCount = fHeader->fSize - sizeof(AliRawDataHeader);
} else {
// continue with the next sub event if no data left in the payload
if (position >= end) continue;
+ if (fRequireHeader) {
// check that there are enough bytes left for the data header
- if (position + sizeof(AliRawDataHeader) > end) {
- result |= kErrNoDataHeader;
- continue;
- }
+ if (position + sizeof(AliRawDataHeader) > end) {
+ result |= kErrNoDataHeader;
+ continue;
+ }
- // check consistency of data size in the header and in the equipment
- AliRawDataHeader* header = (AliRawDataHeader*) position;
- if (header->fSize != 0xFFFFFFFF) {
- if (position + header->fSize > end) {
- result |= kErrSize;
+ // check consistency of data size in the header and in the equipment
+ AliRawDataHeader* header = (AliRawDataHeader*) position;
+ if (header->fSize != 0xFFFFFFFF) {
+ if (position + header->fSize > end) {
+ result |= kErrSize;
+ }
}
}
};