X-Git-Url: http://git.uio.no/git/?p=u%2Fmrichter%2FAliRoot.git;a=blobdiff_plain;f=RAW%2FAliRawReader.h;h=40051b95ea5a6a918120afb7339448c5cc3f96a8;hp=64b7534dc0e03ba38776485ee721894c867cf808;hb=e94ad92c90b8d94fc386e85f7ba4d5bc6abd752d;hpb=c946ab0278fade598d0a7aaacf255f7cdbb9af6c diff --git a/RAW/AliRawReader.h b/RAW/AliRawReader.h index 64b7534dc0e..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,6 +37,7 @@ 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; @@ -32,17 +47,34 @@ class AliRawReader: public TObject { virtual const UInt_t* GetEquipmentAttributes() const = 0; virtual Int_t GetEquipmentElementSize() const = 0; - Int_t GetDataSize() const - {if (fMiniHeader) return fMiniHeader->fSize; else return 0;}; Int_t GetDetectorID() const - {if (fMiniHeader) return fMiniHeader->fDetectorID; else return -1;}; + {if (GetEquipmentId() >= 0) return (GetEquipmentId() >> 8); else return -1;}; Int_t GetDDLID() const - {if (fMiniHeader) return fMiniHeader->fDDLID; else return -1;}; + {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 (fMiniHeader) return fMiniHeader->fVersion; else return -1;}; + {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 (fMiniHeader) return fMiniHeader->fCompressionFlag != 0; + {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; @@ -52,23 +84,30 @@ class AliRawReader: public TObject { virtual Bool_t Reset() = 0; - enum {kErrMagic=1, kErrNoMiniHeader=2, kErrMiniMagic=4, - kErrSize=8, kErrOutOfBounds=16}; + 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