#ifndef AliITSDDLRAWDATA_H
#define AliITSDDLRAWDATA_H
class TTree;
class TBranch;
class AliITSDDLModuleMapSDD;
class AliITSFOSignalsSPD;
class AliITSDDLRawData:public TObject{
public:
AliITSDDLRawData();
virtual ~AliITSDDLRawData(){;}
AliITSDDLRawData(const AliITSDDLRawData &source);
AliITSDDLRawData& operator=(const AliITSDDLRawData &source);
Int_t RawDataSPD(TBranch* branch, AliITSFOSignalsSPD* foSignals = NULL);
Int_t RawDataSDD(TBranch* branch, const AliITSDDLModuleMapSDD* ddlsdd);
Int_t RawDataSSD(TBranch* branch);
void SetVerbose(Int_t Verbose){fVerbose=Verbose;}
void SetSDDRawFormat(Char_t val=7){
fSDDRawFormat=val;
}
private:
void GetDigitsSPD(TClonesArray *ITSdigits, Int_t mod,Int_t ddl,UInt_t *buf, AliITSFOSignalsSPD* foSignals = NULL);
void GetDigitsSDDCompressed(TClonesArray *ITSdigits, Int_t mod,UInt_t *buf);
void GetDigitsSDD(TClonesArray *ITSdigits, Int_t mod,Int_t modR,Int_t ddl,UInt_t *buf);
void GetDigitsSSD(TClonesArray *ITSdigits, Int_t mod,Int_t modR,Int_t ddl,UInt_t *buf);
void WriteChipHeader(Int_t ChipAddr,Int_t halfStave,UInt_t &BaseWord);
void WriteChipTrailer(UInt_t *buf, Int_t ChipHitCount, Bool_t foBit, UInt_t &BaseWord);
void WriteHit(UInt_t *buf,Int_t RowAddr,Int_t HitAddr,UInt_t &BaseWord);
Int_t fVerbose;
Int_t fIndex;
Int_t fHalfStaveModule;
Char_t fSDDRawFormat;
ClassDef(AliITSDDLRawData,3)
};
#endif