#ifndef ALITRDRAWDATA_H
#define ALITRDRAWDATA_H
#include "TObject.h"
#include "AliLog.h"
#include "AliTRDgeometry.h"
class TTree;
class TClonesArray;
class AliRunLoader;
class AliRawReader;
class AliTRDdigitsManager;
class AliTRDfeeParam;
class AliTRDarrayADC;
class AliTRDdigitsParam;
class AliTRDmcmSim;
class AliTRDrawData : public TObject {
public:
AliTRDrawData();
AliTRDrawData(const AliTRDrawData &r);
virtual ~AliTRDrawData();
AliTRDrawData &operator=(const AliTRDrawData &) { return *this; }
virtual Bool_t Digits2Raw(TTree *digits, const TTree *tracks = NULL);
virtual AliTRDdigitsManager *Raw2Digits(AliRawReader *rawReader);
void SetTracklets(TClonesArray*) { AliError("Deprecated, not doing anything."); }
void SetTracks(TClonesArray*) { AliError("Deprecated, not doing anything"); }
UInt_t GetTriggerFlags(const Int_t sector) const { return fTrgFlags[sector]; }
protected:
virtual Bool_t Digits2Raw(AliTRDdigitsManager* digitsManager);
virtual Int_t ProduceHcData(AliTRDarrayADC *digits, Int_t side, Int_t det, UInt_t *buf, Int_t maxSize, Bool_t newEvent, Bool_t newSM);
void ProduceSMIndexData(UInt_t *buf, Int_t& nw);
void WriteIntermediateWords(UInt_t *buf, Int_t& nw, Int_t& of, const Int_t& maxSize, const Int_t& det, const Int_t& side);
void AssignStackMask(UInt_t *buf, Int_t nStack);
void AssignLinkMask(UInt_t *buf, Int_t nLayer);
Int_t AddStackIndexWords(UInt_t *buf, Int_t nStack, Int_t nMax);
Bool_t ShiftWords(UInt_t *buf, Int_t nStart, Int_t nWords, Int_t nMax);
AliRunLoader *fRunLoader;
AliTRDgeometry *fGeo;
AliTRDfeeParam *fFee;
Int_t fNumberOfDDLs;
TTree *fTrackletTree;
TClonesArray *fTracklets;
TClonesArray *fTracks;
private:
static Int_t fgDataSuppressionLevel;
static const UInt_t fgkEndOfTrackletMarker = 0x10001000;
static const UInt_t fgkEndOfDataMarker = 0x00000000;
Int_t fSMindexPos;
Int_t fStackindexPos;
UInt_t fEventCounter;
UInt_t fTrgFlags[AliTRDgeometry::kNsector];
AliTRDmcmSim *fMcmSim;
AliTRDdigitsParam *fDigitsParam;
ClassDef(AliTRDrawData,8)
};
#endif