#ifndef ALIDETECTOR_H
#define ALIDETECTOR_H
#include "AliModule.h"
class AliHit;
class TTree;
class TBranch;
class AliLoader;
class AliDetector : public AliModule {
public:
AliDetector(const char* name, const char *title);
AliDetector();
virtual ~AliDetector();
virtual int GetNdigits() const {return fNdigits;}
virtual int GetNhits() const {return fNhits;}
TClonesArray *Digits() const {return fDigits;}
TClonesArray *Hits() const {return fHits;}
virtual Bool_t IsModule() const {return kFALSE;}
virtual Bool_t IsDetector() const {return kTRUE;}
Int_t GetIshunt() const {return fIshunt;}
void SetIshunt(Int_t ishunt) {fIshunt=ishunt;}
virtual void Publish(const char *dir, void *c, const char *name=0) const;
virtual void Browse(TBrowser *b);
virtual void FinishRun();
virtual void MakeBranch(Option_t *opt=" ");
virtual void ResetDigits();
virtual void ResetHits();
virtual void AddAlignableVolumes() const;
virtual void SetTreeAddress();
virtual void SetTimeGate(Float_t gate) {fTimeGate=gate;}
virtual Float_t GetTimeGate() const {return fTimeGate;}
virtual void StepManager() {}
virtual void DrawModule() const {}
virtual AliHit* FirstHit(Int_t track);
virtual AliHit* NextHit();
virtual void SetBufferSize(Int_t bufsize=8000) {fBufferSize = bufsize;}
virtual TBranch* MakeBranchInTree(TTree *tree, const char* cname, void* address, Int_t size=32000, const char *file=0);
virtual TBranch* MakeBranchInTree(TTree *tree, const char* cname, const char* name, void* address, Int_t size=32000, Int_t splitlevel=99, const char *file=0);
void MakeTree(Option_t *option);
virtual void RemapTrackHitIDs(Int_t *) {}
virtual AliLoader* MakeLoader(const char* topfoldername);
void SetLoader(AliLoader* loader){fLoader = loader;}
AliLoader* GetLoader() const {return fLoader;}
protected:
Float_t fTimeGate;
Int_t fIshunt;
Int_t fNhits;
Int_t fNdigits;
Int_t fBufferSize;
Int_t fMaxIterHit;
Int_t fCurIterHit;
TClonesArray *fHits;
TClonesArray *fDigits;
AliLoader* fLoader;
private:
AliDetector(const AliDetector &det);
AliDetector &operator=(const AliDetector &det);
ClassDef(AliDetector,5)
};
#endif