#ifndef ALIADRAWSTREAM_H
#define ALIADRAWSTREAM_H
#include <TObject.h>
#include <TMath.h>
class AliRawReader;
class AliADRawStream: public TObject {
public :
AliADRawStream(AliRawReader* rawReader);
virtual ~AliADRawStream();
virtual void Reset();
virtual Bool_t Next();
ULong64_t GetBBScalers(Int_t channel) const
{ return fBBScalers[channel]; }
ULong64_t GetBGScalers(Int_t channel) const
{ return fBGScalers[channel]; }
UInt_t GetTriggerScalers(Int_t num_scaler) const
{ return fScalers[num_scaler]; }
UInt_t GetBunchNumbersMB(Int_t num_bunch) const
{ return fBunchNumbers[num_bunch]; }
UShort_t GetChargeMB(Int_t channel, Int_t num_bunch) const
{ return fChargeMB[channel][num_bunch]; }
Bool_t GetIntMBFlag(Int_t channel, Int_t num_bunch) const
{ return fIsIntMB[channel][num_bunch]; }
Bool_t GetBBMBFlag(Int_t channel, Int_t num_bunch) const
{ return fIsBBMB[channel][num_bunch]; }
Bool_t GetBGMBFlag(Int_t channel, Int_t num_bunch) const
{ return fIsBGMB[channel][num_bunch]; }
Short_t GetADC(Int_t channel) const
{ return TMath::MaxElement(kNEvOfInt, fADC[channel]); }
Short_t GetPedestal(Int_t channel, Int_t event) const
{ return fADC[channel][event]; }
Bool_t GetIntegratorFlag(Int_t channel, Int_t event) const
{ return fIsInt[channel][event]; }
Bool_t GetBBFlag(Int_t channel, Int_t event) const
{ return fIsBB[channel][event]; }
Bool_t GetBGFlag(Int_t channel, Int_t event) const
{ return fIsBG[channel][event]; }
Short_t GetTime(Int_t channel) const
{ return fTime[channel]; }
Short_t GetWidth(Int_t channel) const
{ return fWidth[channel]; }
UShort_t GetTriggerInputs() const
{ return fTrigger; }
UShort_t GetTriggerInputsMask() const
{ return fTriggerMask; }
Int_t GetOfflineChannel(Int_t channel) const
{ Int_t fOfflineChannel[16] = {0,1,2,3,4,5,6,7,
8,9,10,11,12,13,14,15};
return fOfflineChannel[channel]; }
enum EADRawDataParams {
kNChannels = 16,
kNEvOfInt = 21,
kNScalers = 16,
kNBunches = 10
};
enum EADRawStreamError {
kRawDataSizeErr = 1
};
private:
AliADRawStream(const AliADRawStream& stream);
AliADRawStream& operator = (const AliADRawStream& stream);
UInt_t GetNextWord();
UShort_t GetNextShort();
ULong64_t fBBScalers[kNChannels];
ULong64_t fBGScalers[kNChannels];
UInt_t fScalers[kNScalers];
UInt_t fBunchNumbers[kNBunches];
UShort_t fChargeMB[kNChannels][kNBunches];
Bool_t fIsIntMB[kNChannels][kNBunches];
Bool_t fIsBBMB[kNChannels][kNBunches];
Bool_t fIsBGMB[kNChannels][kNBunches];
Short_t fADC[kNChannels][kNEvOfInt];
Bool_t fIsInt[kNChannels][kNEvOfInt];
Bool_t fIsBB[kNChannels][kNEvOfInt];
Bool_t fIsBG[kNChannels][kNEvOfInt];
Short_t fTime[kNChannels];
Short_t fWidth[kNChannels];
UShort_t fTrigger;
UShort_t fTriggerMask;
Int_t fPosition;
AliRawReader* fRawReader;
UChar_t* fData;
ClassDef(AliADRawStream, 0)
};
#endif