]> git.uio.no Git - u/mrichter/AliRoot.git/blob - FMD/AliFMD.h
Incrementing class versions
[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 //  AliFMDv1, AliFMDv0, and AliFMDAlla 
15 //  provides concrete implementations. 
16 //  This class is sooooo crowded
17 //
18 #ifndef ALIDETECTOR_H 
19 # include <AliDetector.h>
20 #endif
21 #ifndef ROOT_TBranch
22 # include <TBranch.h>
23 #endif
24 class TBranch;
25 class TClonesArray;
26 class TBrowser;
27 class AliDigitizer;
28 #ifdef USE_PRE_MOVE
29 class AliFMDSimulator;
30 #endif
31 class AliFMDHit;
32
33 //____________________________________________________________________
34 class AliFMD : public AliDetector 
35 {
36 public:
37   AliFMD();
38   AliFMD(const char *name, const char *title);
39   AliFMD(const AliFMD& other);
40   virtual ~AliFMD(); 
41   AliFMD& operator=(const AliFMD& other);
42   // Use old implementation
43   void UseOld(Bool_t use=kTRUE) { fUseOld = use;  }
44   void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
45   void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; }
46   
47   // GEometry ANd Tracking (GEANT :-)
48   virtual void   CreateGeometry();
49   virtual void   CreateMaterials(); 
50   virtual void   Init();
51   virtual void   StepManager() = 0;
52   virtual void   FinishEvent();
53   
54   // Graphics and event display 
55   virtual        void   BuildGeometry();
56   virtual        void   DrawDetector();
57   virtual        Int_t  DistanceToPrimitive(Int_t px, Int_t py);
58
59   // Hit and digit management 
60   virtual void          MakeBranch(Option_t *opt=" ");
61   virtual void          SetHitsAddressBranch(TBranch *b);
62   virtual void          SetTreeAddress();
63   virtual TClonesArray* SDigits() { return fSDigits; }        
64   virtual void          ResetSDigits();
65   virtual void          AddHit(Int_t track, Int_t *vol, Float_t *hits);
66   virtual AliFMDHit*    AddHitByFields(Int_t    track, 
67                                        UShort_t detector, 
68                                        Char_t   ring, 
69                                        UShort_t sector, 
70                                        UShort_t strip, 
71                                        Float_t  x=0,
72                                        Float_t  y=0, 
73                                        Float_t  z=0,
74                                        Float_t  px=0, 
75                                        Float_t  py=0, 
76                                        Float_t  pz=0,
77                                        Float_t  edep=0,
78                                        Int_t    pdg=0,
79                                        Float_t  t=0, 
80                                        Float_t  len=0, 
81                                        Bool_t   stopped=kFALSE);
82   virtual        void   AddDigit(Int_t *digits, Int_t* notused=0);
83   virtual        void   AddDigitByFields(UShort_t detector=0, 
84                                          Char_t   ring='\0', 
85                                          UShort_t sector=0, 
86                                          UShort_t strip=0, 
87                                          UShort_t count1=0, 
88                                          Short_t  count2=-1, 
89                                          Short_t  count3=-1);
90   virtual        void   AddSDigit(Int_t *digits);
91   virtual        void   AddSDigitByFields(UShort_t detector=0, 
92                                           Char_t   ring='\0', 
93                                           UShort_t sector=0, 
94                                           UShort_t strip=0, 
95                                           Float_t  edep=0,
96                                           UShort_t count1=0, 
97                                           Short_t  count2=-1, 
98                                           Short_t  count3=-1);
99
100   // Digitisation
101   virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const;
102   virtual        void   Hits2Digits();
103   virtual        void   Hits2SDigits();
104
105   // Raw data 
106   virtual        void   Digits2Raw();
107
108   // Utility
109   void   Browse(TBrowser* b);
110 protected:
111   TClonesArray*      HitsArray();
112   TClonesArray*      DigitsArray();
113   TClonesArray*      SDigitsArray();
114
115   TClonesArray*      fSDigits;              // Summable digits
116   Int_t              fNsdigits;             // Number of digits  
117   Bool_t             fDetailed;             // Use detailed geometry
118   Bool_t             fUseOld;               // Use old approx geometry
119   Bool_t             fUseAssembly;          // Use divided volumes
120   
121   enum {
122     kSiId,                 // ID index of Si medium
123     kAirId,                // ID index of Air medium
124     kPlasticId,            // ID index of Plastic medium
125     kPcbId,                // ID index of PCB medium
126     kSiChipId,             // ID index of Si Chip medium
127     kAlId,                 // ID index of Al medium
128     kCarbonId,             // ID index of Carbon medium
129     kCopperId,             // ID index of Copper Medium
130     kKaptonId              // ID index of Kapton Medium
131   };  
132
133 #ifdef USE_PRE_MOVE
134   AliFMDSimulator*   fSimulator;            // Simulator task
135 #endif
136   TObjArray*         fBad;                  //! debugging - bad hits 
137   
138   ClassDef(AliFMD,11)     // Base class FMD entry point
139 };
140
141 #endif
142 //____________________________________________________________________
143 //
144 // Local Variables:
145 //   mode: C++
146 // End:
147 //
148 // EOF
149 //