Added methods for finding a given module in the DDL map (F. Prino)
[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 // 
9 // This is the basic detector class from which
10 // all ALICE detector derive.
11 // This class is the base for the implementation of all detectors
12 // in ALICE
13 //
14
15 #include "AliModule.h"
16
17 class AliHit;
18 class TTree;
19 class TBranch;
20 class AliLoader;
21
22 class AliDetector : public AliModule {
23
24 public:
25
26   // Creators - distructors
27   AliDetector(const char* name, const char *title);
28   AliDetector();
29   virtual ~AliDetector();
30
31   // Inline functions
32   virtual int   GetNdigits() const {return fNdigits;}
33   virtual int   GetNhits()   const {return fNhits;}
34   TClonesArray *Digits() const {return fDigits;}
35   TClonesArray *Hits()   const {return fHits;}
36
37   TObjArray    *Points() const {return fPoints;}
38   Int_t         GetIshunt() const {return fIshunt;}
39   void          SetIshunt(Int_t ishunt) {fIshunt=ishunt;}
40   
41   // Other methods
42   virtual void        Publish(const char *dir, void *c, const char *name=0) const;
43   virtual void        Browse(TBrowser *b);
44   virtual void        FinishRun();
45   virtual void        LoadPoints(Int_t track);
46   virtual void        MakeBranch(Option_t *opt=" ");
47   virtual void        ResetDigits();
48   virtual void        ResetHits();
49   virtual void        AddAlignableVolumes() const;
50
51   virtual void        ResetPoints();
52   virtual void        SetTreeAddress();
53   virtual void        SetTimeGate(Float_t gate) {fTimeGate=gate;}
54   virtual Float_t     GetTimeGate() const {return fTimeGate;}
55   virtual void        StepManager() {}
56   virtual void        DrawModule() const {}
57   virtual AliHit*     FirstHit(Int_t track);
58   virtual AliHit*     NextHit();
59   virtual void        SetBufferSize(Int_t bufsize=8000) {fBufferSize = bufsize;}  
60   virtual TBranch*    MakeBranchInTree(TTree *tree, const char* cname, void* address, Int_t size=32000, const char *file=0);
61   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);
62   
63   void MakeTree(Option_t *option); //skowron
64   virtual void        RemapTrackHitIDs(Int_t *) {}
65   
66   virtual AliLoader* MakeLoader(const char* topfoldername); //builds standard getter (AliLoader type)
67   void    SetLoader(AliLoader* loader){fLoader = loader;}
68   AliLoader* GetLoader() const {return fLoader;} //skowron
69   TTree* TreeH() const;  //shorcut method for accessing treeH from folder
70     // Data members
71 protected:      
72   
73   Float_t       fTimeGate;    //Time gate in seconds
74
75   Int_t         fIshunt;      //1 if the hit is attached to the primary
76   Int_t         fNhits;       //!Number of hits
77   Int_t         fNdigits;     //!Number of digits
78   Int_t         fBufferSize;  //!buffer size for Tree detector branches
79   Int_t         fMaxIterHit;  //!Limit for the hit iterator
80   Int_t         fCurIterHit;  //!Counter for the hit iterator
81   TClonesArray *fHits;        //!List of hits for one track only
82   TClonesArray *fDigits;      //!List of digits for this detector
83   TObjArray    *fPoints;      //!Array of points for each track (all tracks in memory)
84
85   AliLoader*  fLoader;//! pointer to getter for this module skowron
86
87  private:
88   AliDetector(const AliDetector &det);
89   AliDetector &operator=(const AliDetector &det);
90
91   ClassDef(AliDetector,5)  //Base class for ALICE detectors
92 };
93 #endif