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