X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=RAW%2FAliRawReader.h;h=40051b95ea5a6a918120afb7339448c5cc3f96a8;hp=26667813bf1386db12b251d1d26932e9e6fd5560;hb=e94ad92c90b8d94fc386e85f7ba4d5bc6abd752d;hpb=b4857df721823f695b77b2c8b3a992c6cb87c3d7 diff --git a/RAW/AliRawReader.h b/RAW/AliRawReader.h index 26667813bf1..40051b95ea5 100644 --- a/RAW/AliRawReader.h +++ b/RAW/AliRawReader.h @@ -3,8 +3,16 @@ /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * * See cxx source for full Copyright notice */ +/* $Id$ */ + +/////////////////////////////////////////////////////////////////////////////// +/// +/// This is the base class for reading raw data. +/// +/////////////////////////////////////////////////////////////////////////////// + #include -#include "AliMiniHeader.h" +#include "AliRawDataHeader.h" class AliRawReader: public TObject { @@ -16,6 +24,12 @@ class AliRawReader: public TObject { void Select(Int_t detectorID, Int_t minDDLID = -1, Int_t maxDDLID = -1); + void SelectEquipment(Int_t equipmentType, + Int_t minEquipmentId = -1, + Int_t maxEquipmentId = -1); + void SkipInvalid(Bool_t skip = kTRUE) + {fSkipInvalid = skip;}; + void SelectEvents(Int_t type); virtual UInt_t GetType() const = 0; virtual UInt_t GetRunNumber() const = 0; @@ -23,15 +37,46 @@ class AliRawReader: public TObject { virtual const UInt_t* GetTriggerPattern() const = 0; virtual const UInt_t* GetDetectorPattern() const = 0; virtual const UInt_t* GetAttributes() const = 0; + virtual const UInt_t* GetSubEventAttributes() const = 0; + virtual UInt_t GetLDCId() const = 0; virtual UInt_t GetGDCId() const = 0; - Int_t GetDataSize() const {return fMiniHeader->fSize;}; - Int_t GetDetectorID() const {return fMiniHeader->fDetectorID;}; - Int_t GetDDLID() const {return fMiniHeader->fDDLID;}; - Int_t GetVersion() const {return fMiniHeader->fVersion;}; - Bool_t IsCompressed() const {return fMiniHeader->fCompressionFlag != 0;}; - - virtual Bool_t ReadMiniHeader() = 0; + virtual Int_t GetEquipmentSize() const = 0; + virtual Int_t GetEquipmentType() const = 0; + virtual Int_t GetEquipmentId() const = 0; + virtual const UInt_t* GetEquipmentAttributes() const = 0; + virtual Int_t GetEquipmentElementSize() const = 0; + + Int_t GetDetectorID() const + {if (GetEquipmentId() >= 0) return (GetEquipmentId() >> 8); else return -1;}; + Int_t GetDDLID() const + {if (GetEquipmentId() >= 0) return (GetEquipmentId() & 0xFF); else return -1;}; + + Int_t GetDataSize() const + {if (fHeader) return fHeader->fSize - sizeof(AliRawDataHeader); + else return GetEquipmentSize();}; + + Int_t GetVersion() const + {if (fHeader) return fHeader->fVersion; else return -1;}; + Bool_t IsValid() const + {if (fHeader) return fHeader->TestAttribute(0); + else return kFALSE;}; + Bool_t IsCompressed() const + {if (fHeader) return fHeader->TestAttribute(1); + else return kFALSE;}; + Bool_t TestBlockAttribute(Int_t index) const + {if (fHeader) return fHeader->TestAttribute(index); + else return kFALSE;}; + UChar_t GetBlockAttributes() const + {if (fHeader) return fHeader->GetAttributes(); + else return 0;}; + UInt_t GetStatusBits() const + {if (fHeader) return fHeader->GetStatus(); + else return 0;}; + const AliRawDataHeader* GetDataHeader() const + {return fHeader;} + + virtual Bool_t ReadHeader() = 0; virtual Bool_t ReadNextData(UChar_t*& data) = 0; virtual Bool_t ReadNextInt(UInt_t& data); virtual Bool_t ReadNextShort(UShort_t& data); @@ -39,23 +84,30 @@ class AliRawReader: public TObject { virtual Bool_t Reset() = 0; - enum {kErrMagic=1, kErrNoMiniHeader=2, kErrMiniMagic=3, - kErrSize=4, kErrOutOfBounds=5}; + virtual Bool_t NextEvent() = 0; + virtual Bool_t RewindEvents() = 0; + + enum {kErrMagic=1, kErrNoDataHeader=2, + kErrSize=4, kErrOutOfBounds=8}; virtual Int_t CheckData() const; - Int_t GetErrorCode() {return fErrorCode;}; + Int_t GetErrorCode() const {return fErrorCode;}; + + void DumpData(Int_t limit = -1); protected : Bool_t IsSelected() const; + Bool_t IsEventSelected() const; - Bool_t CheckMiniHeader(AliMiniHeader* miniHeader = NULL) const; virtual Bool_t ReadNext(UChar_t* data, Int_t size) = 0; - AliMiniHeader* fMiniHeader; // current mini header + AliRawDataHeader* fHeader; // current data header Int_t fCount; // counter of bytes to be read for current DDL - Int_t fSelectDetectorID; // id of selected detector (<0 = no selection) - Int_t fSelectMinDDLID; // minimal index of selected DDLs (<0 = no selection) - Int_t fSelectMaxDDLID; // maximal index of selected DDLs (<0 = no selection) + Int_t fSelectEquipmentType; // type of selected equipment (<0 = no selection) + Int_t fSelectMinEquipmentId; // minimal index of selected equipment (<0 = no selection) + Int_t fSelectMaxEquipmentId; // maximal index of selected equipment (<0 = no selection) + Bool_t fSkipInvalid; // skip invalid data + Int_t fSelectEventType; // type of selected events (<0 = no selection) Int_t fErrorCode; // code of last error