8100fc11128411c916625e133793659a8614b3c5
[u/mrichter/AliRoot.git] / STEER / AliDetector.h
1 #ifndef ALIDETECTOR_H
2 #define ALIDETECTOR_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice                               */
5
6 /* $Id$ */
7
8 #include <AliModule.h>
9 class AliHit;
10 class AliTrackReference;
11 class TTree;
12 class TBranch;
13
14 class AliDetector : public AliModule {
15
16 public:
17
18   // Creators - distructors
19   AliDetector(const char* name, const char *title);
20   AliDetector();
21   AliDetector(const AliDetector &det);
22   virtual ~AliDetector();
23
24   // Inline functions
25   void  Copy(AliDetector &det) const;
26   virtual int   GetNdigits() const {return fNdigits;}
27   virtual int   GetNhits()   const {return fNhits;}
28   TClonesArray *Digits() const {return fDigits;}
29   TClonesArray *Hits()   const {return fHits;}
30   TClonesArray *TrackReferences()   const {return fTrackReferences;}
31   virtual void        RemapTrackReferencesIDs(Int_t *map); //remaping track references MI
32
33   TObjArray    *Points() const {return fPoints;}
34   Int_t         GetIshunt() const {return fIshunt;}
35   void          SetIshunt(Int_t ishunt) {fIshunt=ishunt;}
36   AliDetector &operator=(const AliDetector &det) 
37   {det.Copy(*this); return (*this);}
38   
39   // Other methods
40   virtual void        Publish(const char *dir, void *c, const char *name=0);
41   virtual void        Browse(TBrowser *b);
42   virtual void        FinishRun();
43   virtual void        LoadPoints(Int_t track);
44   virtual void        MakeBranch(Option_t *opt=" ", const char *file=0 );
45   virtual void        MakeBranchTR(Option_t *opt=" ", const char *file=0 );
46   virtual void        ResetDigits();
47   virtual void        ResetHits();
48   virtual void        ResetTrackReferences();
49
50   virtual void        ResetPoints();
51   virtual void        SetTreeAddress();
52   virtual void        SetTimeGate(Float_t gate) {fTimeGate=gate;}
53   virtual Float_t     GetTimeGate() const {return fTimeGate;}
54   virtual void        StepManager() {}
55   virtual void        DrawModule() {}
56   virtual AliHit*     FirstHit(Int_t track);
57   virtual AliHit*     NextHit();
58   virtual AliTrackReference * FirstTrackReference(Int_t track);
59   virtual AliTrackReference * NextTrackReference();
60   virtual void        SetBufferSize(Int_t bufsize=8000) {fBufferSize = bufsize;}  
61   virtual TBranch*    MakeBranchInTree(TTree *tree, const char* cname, void* address, Int_t size=32000, const char *file=0);
62   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);
63    
64   // Data members
65 protected:      
66   
67   Float_t       fTimeGate;    //Time gate in seconds
68
69   Int_t         fIshunt;      //1 if the hit is attached to the primary
70   Int_t         fNhits;       //!Number of hits
71   Int_t         fNdigits;     //!Number of digits
72   Int_t         fBufferSize;  //!buffer size for Tree detector branches
73   TClonesArray *fHits;        //List of hits for one track only
74   TClonesArray *fDigits;      //List of digits for this detector
75   char         *fDigitsFile;  //!File to store branches of digits tree for detector 
76   TObjArray    *fPoints;      //!Array of points for each track (all tracks in memory)
77   TClonesArray *fTrackReferences; //list of track references - for one primary track only -MI
78   Int_t         fMaxIterTrackRef; //!for track refernce iterator routines
79   Int_t         fCurrentIterTrackRef; //!for track refernce iterator routines
80   ClassDef(AliDetector,2)  //Base class for ALICE detectors
81 };
82 #endif