X-Git-Url: http://git.uio.no/git/?a=blobdiff_plain;f=RAW%2FAliRawReader.h;h=f6cdce8525e2f145df191992fac5d29d3254ba67;hb=87d7ce5c31b72a29c1c855a81c7f4ce29f65255c;hp=d754e714c4e15cda1dd3319018a7fd0fd8001322;hpb=969d3431ad50b30b360ea8023fb13e2fe23b7805;p=u%2Fmrichter%2FAliRoot.git diff --git a/RAW/AliRawReader.h b/RAW/AliRawReader.h index d754e714c4e..f6cdce8525e 100644 --- a/RAW/AliRawReader.h +++ b/RAW/AliRawReader.h @@ -17,7 +17,9 @@ #include "AliRawDataErrorLog.h" #include "AliRawDataHeader.h" +#include "AliRawDataHeaderV3.h" +class THashList; class TChain; class AliRawEventHeaderBase; class AliRawVEvent; @@ -62,11 +64,20 @@ class AliRawReader: public TObject { const UInt_t *id = GetEventId(); return id ? ((id)[1]&0x00000fff) : 0; } + ULong64_t GetEventIdAsLong() const { + return (((ULong64_t)GetPeriod() << 36) | + ((ULong64_t)GetOrbitID() << 12) | + (ULong64_t)GetBCID()); + } 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; } + ULong64_t GetClassMaskNext50() const { + const UInt_t *pattern = GetTriggerPattern(); + return pattern ? ((ULong64_t)(pattern[1]>>18) & 0x3fff)|((ULong64_t)(pattern[2]&0xffffffff)<<14)|((ULong64_t)(pattern[3]&0xf)<<46): 0; + } virtual const UInt_t* GetDetectorPattern() const = 0; virtual const UInt_t* GetAttributes() const = 0; virtual const UInt_t* GetSubEventAttributes() const = 0; @@ -88,29 +99,42 @@ class AliRawReader: public TObject { Int_t GetDataSize() const {if (fHeader) { - if (fHeader->fSize != 0xFFFFFFFF) return fHeader->fSize - sizeof(AliRawDataHeader); - else return GetEquipmentSize() - GetEquipmentHeaderSize() - sizeof(AliRawDataHeader); - } else return GetEquipmentSize() - GetEquipmentHeaderSize();}; + if (fHeader->fSize != 0xFFFFFFFF) return fHeader->fSize - sizeof(AliRawDataHeader); + else return GetEquipmentSize() - GetEquipmentHeaderSize() - sizeof(AliRawDataHeader); + } else if(fHeaderV3){ + if (fHeaderV3->fSize != 0xFFFFFFFF) return fHeaderV3->fSize - sizeof(AliRawDataHeaderV3); + else return GetEquipmentSize() - GetEquipmentHeaderSize() - sizeof(AliRawDataHeaderV3); + } + else return GetEquipmentSize() - GetEquipmentHeaderSize();}; Int_t GetVersion() const - {if (fHeader) return fHeader->GetVersion(); else return -1;}; + {if (fHeader) return fHeader->GetVersion(); + else if (fHeaderV3) return fHeaderV3->GetVersion(); + else return -1;}; Bool_t IsValid() const - {if (fHeader) return fHeader->TestAttribute(0); - else return kFALSE;}; + {if (fHeader) return fHeader->TestAttribute(0); + else if (fHeaderV3) return fHeaderV3->TestAttribute(0); + else return kFALSE;}; Bool_t IsCompressed() const {if (fHeader) return fHeader->TestAttribute(1); + else if (fHeaderV3) return fHeaderV3->TestAttribute(1); else return kFALSE;}; Bool_t TestBlockAttribute(Int_t index) const - {if (fHeader) return fHeader->TestAttribute(index); + {if (fHeader) return fHeader->TestAttribute(index); + else if (fHeaderV3) return fHeaderV3->TestAttribute(index); else return kFALSE;}; UChar_t GetBlockAttributes() const {if (fHeader) return fHeader->GetAttributes(); + else if (fHeaderV3) return fHeaderV3->GetAttributes(); else return 0;}; UInt_t GetStatusBits() const {if (fHeader) return fHeader->GetStatus(); + else if (fHeaderV3) return fHeaderV3->GetStatus(); else return 0;}; const AliRawDataHeader* GetDataHeader() const {return fHeader;} + const AliRawDataHeaderV3* GetDataHeaderV3() const + {return fHeaderV3;} virtual Bool_t ReadHeader() = 0; virtual Bool_t ReadNextData(UChar_t*& data) = 0; @@ -168,6 +192,7 @@ class AliRawReader: public TObject { Bool_t IsRawReaderValid() const { return fIsValid; } void LoadTriggerClass(const char* name, Int_t index); + void LoadTriggerAlias(const THashList *lst); virtual AliRawReader* CloneSingleEvent() const { return NULL; } @@ -182,6 +207,7 @@ class AliRawReader: public TObject { Bool_t fRequireHeader; // if false, data without header is accepted AliRawDataHeader* fHeader; // current data header + AliRawDataHeaderV3* fHeaderV3; // current data header Int_t fCount; // counter of bytes to be read for current DDL Int_t fSelectEquipmentType; // type of selected equipment (<0 = no selection) @@ -198,11 +224,13 @@ class AliRawReader: public TObject { TClonesArray fErrorLogs; // raw data decoding errors AliRawDataHeader* fHeaderSwapped; // temporary buffer for swapping header on PowerPC + AliRawDataHeaderV3* fHeaderSwappedV3; // 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 + Bool_t fIsTriggerClassLoaded; // flags the call to LoadTriggerClass ClassDef(AliRawReader, 0) // base class for reading raw digits };