Minor changes, mostly for debugging
[u/mrichter/AliRoot.git] / FMD / AliFMD.h
1 #ifndef ALIFMD_H
2 #define ALIFMD_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
4  * reserved. 
5  *
6  * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
7  *
8  * See cxx source for full Copyright notice                               
9  */
10
11 //____________________________________________________________________
12 //
13 //  Manager class for the FMD - Base class.
14 //
15 #ifndef ALIDETECTOR_H 
16 # include <AliDetector.h>
17 #endif
18 #ifndef ROOT_TBranch
19 # include <TBranch.h>
20 #endif
21 class TBranch;
22 class TClonesArray;
23 class TBrowser;
24 class AliDigitizer;
25 class AliFMDSimulator;
26 class AliFMDHit;
27
28 //____________________________________________________________________
29 class AliFMD : public AliDetector 
30 {
31 public:
32   AliFMD();
33   AliFMD(const char *name, const char *title);
34   AliFMD(const AliFMD& other);
35   virtual ~AliFMD(); 
36   AliFMD& operator=(const AliFMD& other);
37   // Use old implementation
38   void UseOld(Bool_t use=kTRUE) { fUseOld = use;  }
39   void UseDivided(Bool_t use=kTRUE) { fUseDivided = use; }
40   void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
41   void UseGeo(Bool_t use=kTRUE) { fUseGeo = use; }
42   void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
43   
44   // GEometry ANd Tracking (GEANT :-)
45   virtual void   CreateGeometry();
46   virtual void   CreateMaterials(); 
47   virtual void   Init();
48   virtual void   StepManager() = 0;
49   virtual void   FinishEvent();
50   
51   // Graphics and event display 
52   virtual        void   BuildGeometry();
53   virtual        void   DrawDetector();
54   virtual        Int_t  DistanceToPrimitive(Int_t px, Int_t py);
55
56   // Hit and digit management 
57   virtual void          MakeBranch(Option_t *opt=" ");
58   virtual void          SetHitsAddressBranch(TBranch *b);
59   virtual void          SetTreeAddress();
60   virtual TClonesArray* SDigits() { return fSDigits; }        
61   virtual void          ResetSDigits();
62   virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
63   virtual AliFMDHit*    AddHitByFields(Int_t    track, 
64                                        UShort_t detector, 
65                                        Char_t   ring, 
66                                        UShort_t sector, 
67                                        UShort_t strip, 
68                                        Float_t  x=0,
69                                        Float_t  y=0, 
70                                        Float_t  z=0,
71                                        Float_t  px=0, 
72                                        Float_t  py=0, 
73                                        Float_t  pz=0,
74                                        Float_t  edep=0,
75                                        Int_t    pdg=0,
76                                        Float_t  t=0);
77   virtual        void   AddDigit(Int_t *digits, Int_t* notused=0);
78   virtual        void   AddDigitByFields(UShort_t detector=0, 
79                                          Char_t   ring='\0', 
80                                          UShort_t sector=0, 
81                                          UShort_t strip=0, 
82                                          UShort_t count1=0, 
83                                          Short_t  count2=-1, 
84                                          Short_t  count3=-1);
85   virtual        void   AddSDigit(Int_t *digits);
86   virtual        void   AddSDigitByFields(UShort_t detector=0, 
87                                           Char_t   ring='\0', 
88                                           UShort_t sector=0, 
89                                           UShort_t strip=0, 
90                                           Float_t  edep=0,
91                                           UShort_t count1=0, 
92                                           Short_t  count2=-1, 
93                                           Short_t  count3=-1);
94
95   // Digitisation
96   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
97   virtual        void   Hits2Digits();
98   virtual        void   Hits2SDigits();
99
100   // Raw data 
101   virtual        void   Digits2Raw();
102
103   // Utility
104   void   Browse(TBrowser* b);
105 protected:
106   TClonesArray*      HitsArray();
107   TClonesArray*      DigitsArray();
108   TClonesArray*      SDigitsArray();
109
110   TClonesArray*      fSDigits;              // Summable digits
111   Int_t              fNsdigits;             // Number of digits  
112   Bool_t             fDetailed;             // Use detailed geometry
113   Bool_t             fUseOld;               // Use old approx geometry
114   Bool_t             fUseDivided;           // Use divided volumes
115   Bool_t             fUseAssembly;          // Use divided volumes
116   Bool_t             fUseGeo;               // Allow use of TGeo impl.
117   
118   AliFMDSimulator*   fSimulator;            // Simulator task
119   
120   ClassDef(AliFMD,10)     // Base class FMD entry point
121 };
122
123 #endif
124 //____________________________________________________________________
125 //
126 // Local Variables:
127 //   mode: C++
128 // End:
129 //
130 // EOF
131 //