X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RAW%2FAliRawReader.h;h=6ed347e401569dc30ad68952d99461b3070810cb;hb=7da191b6aa68a389b870f5b3371ec8f7e62c42b4;hp=d1d0cb9810799dd947a7479629b4c97034c01b5a;hpb=edd061923e6c4def79c676db148a7220f2e7172f;p=u%2Fmrichter%2FAliRoot.git diff --git a/RAW/AliRawReader.h b/RAW/AliRawReader.h index d1d0cb98107..6ed347e4015 100644 --- a/RAW/AliRawReader.h +++ b/RAW/AliRawReader.h @@ -18,7 +18,9 @@ #include "AliRawDataErrorLog.h" #include "AliRawDataHeader.h" +class TChain; class AliRawEventHeaderBase; +class AliRawVEvent; class AliRawReader: public TObject { public : @@ -27,25 +29,43 @@ class AliRawReader: public TObject { AliRawReader& operator = (const AliRawReader& rawReader); virtual ~AliRawReader(); - void Select(Int_t detectorID, + static AliRawReader* Create(const char *uri); + + virtual void Select(Int_t detectorID, Int_t minDDLID = -1, Int_t maxDDLID = -1); - void Select(const char *detectorName, + virtual void Select(const char *detectorName, Int_t minDDLID = -1, Int_t maxDDLID = -1); - void SelectEquipment(Int_t equipmentType, + virtual void SelectEquipment(Int_t equipmentType, Int_t minEquipmentId = -1, Int_t maxEquipmentId = -1); - void SkipInvalid(Bool_t skip = kTRUE) + virtual void SkipInvalid(Bool_t skip = kTRUE) {fSkipInvalid = skip;}; - void SelectEvents(Int_t type); virtual void RequireHeader(Bool_t required) {fRequireHeader = required;}; virtual const AliRawEventHeaderBase* GetEventHeader() const {return NULL;}; + virtual const AliRawVEvent* GetEvent() const {return NULL;} virtual UInt_t GetType() const = 0; virtual UInt_t GetRunNumber() const = 0; virtual const UInt_t* GetEventId() const = 0; + UInt_t GetPeriod() const { + const UInt_t *id = GetEventId(); + return id ? (((id)[0]>>4)&0x0fffffff): 0; + } + UInt_t GetOrbitID() const { + const UInt_t *id = GetEventId(); + return id ? ((((id)[0]<<20)&0xf00000)|(((id)[1]>>12)&0xfffff)) : 0; + } + UShort_t GetBCID() const { + const UInt_t *id = GetEventId(); + return id ? ((id)[1]&0x00000fff) : 0; + } virtual const UInt_t* GetTriggerPattern() const = 0; + ULong64_t GetClassMask() const { + const UInt_t *pattern = GetTriggerPattern(); + return pattern ? (((ULong64_t)pattern[1] & 0x3ffff) << 32)|(pattern[0]) : 0; + } virtual const UInt_t* GetDetectorPattern() const = 0; virtual const UInt_t* GetAttributes() const = 0; virtual const UInt_t* GetSubEventAttributes() const = 0; @@ -102,6 +122,9 @@ class AliRawReader: public TObject { virtual Bool_t NextEvent() = 0; virtual Bool_t RewindEvents() = 0; + virtual Bool_t GotoEvent(Int_t event); + virtual Int_t GetEventIndex() const { return -1; } + virtual Int_t GetNumberOfEvents() const { return -1; } enum {kErrMagic=1, kErrNoDataHeader=2, kErrSize=4, kErrOutOfBounds=8}; @@ -131,7 +154,18 @@ class AliRawReader: public TObject { return (AliRawDataErrorLog *)fErrorLogs.UncheckedAt(i); } + // Method which can be used in order to force the auto-save on + // ESD tree inside AliReconstruction. For the moment it will be + // activated only for AliRawReaderDateOnline. + virtual Bool_t UseAutoSaveESD() const { return kFALSE; } + virtual TChain* GetChain() const { return NULL; } + + Bool_t IsRawReaderValid() const { return fIsValid; } + + void LoadTriggerClass(const char* name, Int_t index); + protected : + virtual void SelectEvents(Int_t type, ULong64_t triggerMask = 0, const char *triggerExpr = NULL); Bool_t IsSelected() const; Bool_t IsEventSelected() const; @@ -148,6 +182,8 @@ class AliRawReader: public TObject { 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) + ULong64_t fSelectTriggerMask; // trigger mask for selecting events (0 = no selection) + TString fSelectTriggerExpr; // trigger expression for selecting events (empty = no selection) Int_t fErrorCode; // code of last error @@ -156,6 +192,11 @@ class AliRawReader: public TObject { AliRawDataHeader* fHeaderSwapped; // temporary buffer for swapping header on PowerPC + UInt_t SwapWord(UInt_t x) const; + UShort_t SwapShort(UShort_t x) const; + + Bool_t fIsValid; // is raw-reader created successfully + ClassDef(AliRawReader, 0) // base class for reading raw digits };