#include "AliRawDataErrorLog.h"
#include "AliRawDataHeader.h"
+#include "AliRawDataHeaderV3.h"
+class THashList;
class TChain;
class AliRawEventHeaderBase;
class AliRawVEvent;
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;
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;
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; }
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)
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
};