#ifndef ALITOFDDLRAWDATA_H
#define ALITOFDDLRAWDATA_H
#include "TObject.h"
class TBranch;
class TClonesArray;
class AliTOFDigitMap;
class AliTOFDDLRawData:public TObject {
public:
AliTOFDDLRawData();
virtual ~AliTOFDDLRawData();
AliTOFDDLRawData(const AliTOFDDLRawData &source);
AliTOFDDLRawData& operator=(const AliTOFDDLRawData &source);
void SetVerbose(Int_t Verbose){fVerbose=Verbose;}
Int_t RawDataTOF(TBranch* branch);
void SetPackedAcquisitionMode(Bool_t mode) {fPackedAcquisition=mode;};
void SetFakeOrphaneProduction(Bool_t flag) {fFakeOrphaneProduction=flag;};
void SetMatchingWindow(Int_t matWin) {fMatchingWindow=matWin;};
Bool_t GetPackedAcquisitionMode() const {return fPackedAcquisition;};
Bool_t GetFakeOrphaneProduction() const {return fFakeOrphaneProduction;};
Int_t GetMatchingWindow() const {return fMatchingWindow;};
private:
void GetDigits();
void ReverseArray(UInt_t a[], Int_t n) const;
void MakeDRMheader(Int_t nDDL, UInt_t *buf);
void MakeDRMtrailer(UInt_t *buf);
void MakeLTMheader(UInt_t *buf);
void MakeLTMdata(UInt_t *buf);
void MakeLTMtrailer(UInt_t *buf);
void MakeTRMheader(Int_t nTRM, UInt_t *buf);
void MakeTRMtrailer(UInt_t *buf);
void MakeTRMfiller(UInt_t *buf);
void MakeTRMchainHeader(Int_t iChain, Int_t nTRM, UInt_t *buf);
void MakeTRMchainTrailer(Int_t iChain, UInt_t *buf);
void MakeTDCdigits(Int_t nDDL, Int_t nTRM, Int_t iChain, UInt_t *buf);
UInt_t MakeFiller() const;
Bool_t HeadOrTail() const;
Int_t fVerbose;
Int_t fIndex;
Bool_t fPackedAcquisition;
Bool_t fFakeOrphaneProduction;
Int_t fMatchingWindow;
AliTOFDigitMap *fTOFdigitMap;
TClonesArray *fTOFdigitArray;
Int_t fWordsPerDRM;
Int_t fWordsPerTRM;
Int_t fWordsPerChain;
ClassDef(AliTOFDDLRawData,4)
};
#endif // ALITOFDDLRAWDATA_H