]>
Commit | Line | Data |
---|---|---|
d28dcc0d | 1 | #ifndef ALIFMD_H |
2 | #define ALIFMD_H | |
4347b38f | 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 | */ | |
3da30618 | 10 | |
37c4363a | 11 | //____________________________________________________________________ |
12 | // | |
13 | // Manager class for the FMD - Base class. | |
088f8e79 | 14 | // AliFMDv1, AliFMDv0, and AliFMDAlla |
15 | // provides concrete implementations. | |
16 | // This class is sooooo crowded | |
37c4363a | 17 | // |
4347b38f | 18 | #ifndef ALIDETECTOR_H |
19 | # include <AliDetector.h> | |
20 | #endif | |
4347b38f | 21 | #ifndef ROOT_TBranch |
22 | # include <TBranch.h> | |
23 | #endif | |
1a1fdef7 | 24 | class TBranch; |
25 | class TClonesArray; | |
26 | class TBrowser; | |
27 | class AliDigitizer; | |
54e415a8 | 28 | #ifdef USE_PRE_MOVE |
1a1fdef7 | 29 | class AliFMDSimulator; |
54e415a8 | 30 | #endif |
54240c8d | 31 | class AliFMDHit; |
4347b38f | 32 | |
33 | //____________________________________________________________________ | |
34 | class AliFMD : public AliDetector | |
35 | { | |
fe4da5cc | 36 | public: |
37 | AliFMD(); | |
1a1fdef7 | 38 | AliFMD(const char *name, const char *title); |
56b1929b | 39 | AliFMD(const AliFMD& other); |
4347b38f | 40 | virtual ~AliFMD(); |
56b1929b | 41 | AliFMD& operator=(const AliFMD& other); |
4ac75127 | 42 | // Use old implementation |
43 | void UseOld(Bool_t use=kTRUE) { fUseOld = use; } | |
4ac75127 | 44 | void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; } |
54240c8d | 45 | void UseDetailed(Bool_t use=kTRUE) { fDetailed = use; } |
4ac75127 | 46 | |
4347b38f | 47 | // GEometry ANd Tracking (GEANT :-) |
48 | virtual void CreateGeometry(); | |
49 | virtual void CreateMaterials(); | |
fe4da5cc | 50 | virtual void Init(); |
4347b38f | 51 | virtual void StepManager() = 0; |
54240c8d | 52 | virtual void FinishEvent(); |
53 | ||
4347b38f | 54 | // Graphics and event display |
55 | virtual void BuildGeometry(); | |
56 | virtual void DrawDetector(); | |
17323043 | 57 | virtual Int_t DistanceToPrimitive(Int_t px, Int_t py); |
3d44ce66 | 58 | |
4347b38f | 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); | |
54240c8d | 66 | virtual AliFMDHit* AddHitByFields(Int_t track, |
69b696b9 | 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, | |
088f8e79 | 79 | Float_t t=0, |
80 | Float_t len=0, | |
81 | Bool_t stopped=kFALSE); | |
69b696b9 | 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); | |
4347b38f | 90 | virtual void AddSDigit(Int_t *digits); |
69b696b9 | 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); | |
4347b38f | 99 | |
100 | // Digitisation | |
c92eb8ad | 101 | virtual AliDigitizer* CreateDigitizer(AliRunDigitizer* manager) const; |
4347b38f | 102 | virtual void Hits2Digits(); |
103 | virtual void Hits2SDigits(); | |
104 | ||
105 | // Raw data | |
106 | virtual void Digits2Raw(); | |
107 | ||
4347b38f | 108 | // Utility |
109 | void Browse(TBrowser* b); | |
4347b38f | 110 | protected: |
56b1929b | 111 | TClonesArray* HitsArray(); |
112 | TClonesArray* DigitsArray(); | |
113 | TClonesArray* SDigitsArray(); | |
114 | ||
56b1929b | 115 | TClonesArray* fSDigits; // Summable digits |
116 | Int_t fNsdigits; // Number of digits | |
1a1fdef7 | 117 | Bool_t fDetailed; // Use detailed geometry |
4ac75127 | 118 | Bool_t fUseOld; // Use old approx geometry |
4ac75127 | 119 | Bool_t fUseAssembly; // Use divided volumes |
1a1fdef7 | 120 | |
54e415a8 | 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 | |
1a1fdef7 | 134 | AliFMDSimulator* fSimulator; // Simulator task |
54e415a8 | 135 | #endif |
136 | TObjArray* fBad; //! debugging - bad hits | |
1a1fdef7 | 137 | |
394d8216 | 138 | ClassDef(AliFMD,11) // Base class FMD entry point |
fe4da5cc | 139 | }; |
dc8af42e | 140 | |
4347b38f | 141 | #endif |
142 | //____________________________________________________________________ | |
143 | // | |
0d0e6995 | 144 | // Local Variables: |
145 | // mode: C++ | |
146 | // End: | |
147 | // | |
4347b38f | 148 | // EOF |
149 | // |