]>
Commit | Line | Data |
---|---|---|
54e415a8 | 1 | #ifndef ALIFMDGEOMETRYBUILDER_H |
2 | #define ALIFMDGEOMETRYBUILDER_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 | */ | |
02a27b50 | 10 | // Builder of FMD geometry. |
11 | // This class takes care of actually building the geometry using the | |
12 | // TGeo classes. Various parameters are fecthed from the | |
13 | // AliFMDGeometry manager. | |
c2fc1258 | 14 | /** @file AliFMDGeometryBuilder.h |
15 | @author Christian Holm Christensen <cholm@nbi.dk> | |
16 | @date Mon Mar 27 12:41:17 2006 | |
17 | @brief Class to build the FMD geometry | |
18 | */ | |
54e415a8 | 19 | #ifndef ROOT_TTask |
20 | # include <TTask.h> | |
21 | #endif | |
22 | #ifndef ROOT_TArrayI | |
23 | # include <TArrayI.h> | |
24 | #endif | |
25 | class TGeoVolume; | |
26 | class TGeoMedium; | |
27 | class AliFMD; | |
28 | class AliFMDRing; | |
29 | class AliFMDDetector; | |
30 | class AliFMD1; | |
31 | class AliFMD2; | |
32 | class AliFMD3; | |
33 | ||
34 | //____________________________________________________________________ | |
9f662337 | 35 | /** @class AliFMDGeometryBuilder |
36 | @brief Builder of FMD geometry. | |
37 | This class takes care of actually building the geometry using the | |
38 | @b TGeo classes. Various parameters are fecthed from the | |
39 | AliFMDGeometry manager. | |
40 | @ingroup FMD_sim | |
41 | */ | |
54e415a8 | 42 | class AliFMDGeometryBuilder : public TTask |
43 | { | |
44 | public: | |
54e415a8 | 45 | /** CTOR */ |
9f662337 | 46 | AliFMDGeometryBuilder(); |
47 | /** CTOR | |
48 | @param detailed Whether to make a detailed geometry. */ | |
54e415a8 | 49 | AliFMDGeometryBuilder(Bool_t detailed); |
50 | virtual ~AliFMDGeometryBuilder() {} | |
51 | /** Register */ | |
52 | virtual void Exec(Option_t* option=""); | |
53 | /** @param use Wheher to assemblies in the geometry definition */ | |
54 | virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; } | |
55 | /** Whether to make a detailed geometry or not. | |
56 | @param use If true, make a detailed geometry */ | |
57 | virtual void SetDetailed(Bool_t use) { fDetailed = use; } | |
58 | /** @return Sector offset in volume tree */ | |
59 | Int_t GetSectorOff() const { return fSectorOff; } | |
60 | /** @return Module offset in volume tree */ | |
61 | Int_t GetModuleOff() const { return fModuleOff; } | |
62 | /** @return Ring offset in the volume tree */ | |
63 | Int_t GetRingOff() const { return fRingOff; } | |
64 | /** @return Detector offfset in the volume tree */ | |
65 | Int_t GetDetectorOff() const { return fDetectorOff; } | |
66 | protected: | |
02a27b50 | 67 | /** Copy CTOR */ |
68 | AliFMDGeometryBuilder(const AliFMDGeometryBuilder& o) : TTask(o) {} | |
69 | /** Assignment operator */ | |
70 | AliFMDGeometryBuilder& operator=(const AliFMDGeometryBuilder&){return *this;} | |
54e415a8 | 71 | /** Make a ring volume |
72 | @param r Ring geometry | |
73 | @return Ring volume */ | |
74 | virtual TGeoVolume* RingGeometry(AliFMDRing* r); | |
75 | /** Make a detector volume | |
76 | @param d Detector geometry | |
f8616692 | 77 | @param motherTop Mother volume (detector volume) |
78 | @param motherBot Mother volume (detector volume) | |
54e415a8 | 79 | @param zmother Z position of mother |
f8616692 | 80 | @param innerTop Inner ring volume |
81 | @param innerBot Inner ring volume | |
82 | @param outerTop Outer ring volume | |
83 | @param outerBot Outer ring volume | |
54e415a8 | 84 | @return Detector volume */ |
85 | virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d, | |
bf000c32 | 86 | TGeoVolume* motherTop, |
87 | TGeoVolume* motherBot, | |
88 | Double_t zmother, | |
89 | TGeoVolume* innerTop, | |
90 | TGeoVolume* innerBot, | |
91 | TGeoVolume* outerTop=0, | |
92 | TGeoVolume* outerBot=0); | |
54e415a8 | 93 | /** Make FMD1 volume |
94 | @param d Detector geometry | |
f8616692 | 95 | @param innerTop Inner ring volume |
96 | @param innerBot Inner ring volume | |
54e415a8 | 97 | @return FMD1 volume */ |
bf000c32 | 98 | virtual TGeoVolume* FMD1Geometry(AliFMD1* d, |
99 | TGeoVolume* innerTop, | |
100 | TGeoVolume* innerBot); | |
54e415a8 | 101 | /** Make FMD2 volume |
102 | @param d Detector geometry | |
f8616692 | 103 | @param innerTop Inner ring volume |
104 | @param innerBot Inner ring volume | |
105 | @param outerTop Outer ring volume | |
106 | @param outerBot Outer ring volume | |
54e415a8 | 107 | @return FMD2 volume */ |
bf000c32 | 108 | virtual TGeoVolume* FMD2Geometry(AliFMD2* d, |
109 | TGeoVolume* innerTop, | |
110 | TGeoVolume* innerBot, | |
111 | TGeoVolume* outerTop, | |
112 | TGeoVolume* outerBot); | |
54e415a8 | 113 | /** Make FMD3 volume |
114 | @param d Detector geometry | |
f8616692 | 115 | @param innerTop Inner ring volume |
116 | @param innerBot Inner ring volume | |
117 | @param outerTop Outer ring volume | |
118 | @param outerBot Outer ring volume | |
54e415a8 | 119 | @return FMD3 volume */ |
bf000c32 | 120 | virtual TGeoVolume* FMD3Geometry(AliFMD3* d, |
121 | TGeoVolume* innerTop, | |
122 | TGeoVolume* innerBot, | |
123 | TGeoVolume* outerTop, | |
124 | TGeoVolume* outerBot); | |
54e415a8 | 125 | |
126 | ||
127 | TArrayI fActiveId; //! Active volume ID's | |
128 | Bool_t fDetailed; // Whether to make a detailed simulation | |
129 | Bool_t fUseAssembly; // Assembly volumes | |
130 | Int_t fSectorOff; // Sector offset in volume tree | |
131 | Int_t fModuleOff; // Module offset in volume tree | |
132 | Int_t fRingOff; // Ring offset in the volume tree | |
133 | Int_t fDetectorOff; // Detector offfset in the volume tree | |
134 | ||
135 | TGeoMedium* fSi; //! Si Medium | |
136 | TGeoMedium* fC; //! C Medium | |
137 | TGeoMedium* fAl; //! Al Medium | |
138 | TGeoMedium* fPCB; //! PCB Medium | |
139 | TGeoMedium* fChip; //! Chip Medium | |
140 | TGeoMedium* fAir; //! Air Medium | |
141 | TGeoMedium* fPlastic; //! Plastic Medium | |
142 | TGeoMedium* fCopper; //! Copper Medium | |
143 | ||
144 | static const Char_t* fgkActiveName; // Name of Active volumes | |
145 | static const Char_t* fgkSectorName; // Name of Sector volumes | |
146 | static const Char_t* fgkStripName; // Name of Strip volumes | |
bf000c32 | 147 | static const Char_t* fgkSensorName; // Name of Sensor volumes |
54e415a8 | 148 | static const Char_t* fgkPCBName; // Name of PCB volumes |
bf000c32 | 149 | static const Char_t* fgkCuName; // Name of copper volumes |
150 | static const Char_t* fgkChipName; // Name of chip volumes | |
54e415a8 | 151 | static const Char_t* fgkLongLegName; // Name of LongLeg volumes |
152 | static const Char_t* fgkShortLegName; // Name of ShortLeg volumes | |
153 | static const Char_t* fgkFrontVName; // Name of Front volumes | |
154 | static const Char_t* fgkBackVName; // Name of Back volumes | |
bf000c32 | 155 | static const Char_t* fgkRingTopName; // Name of Top ring volumes |
156 | static const Char_t* fgkRingBotName; // Name of Bottom ring volumes | |
157 | static const Char_t* fgkHCName; // Name of Honeycomb volumes | |
158 | static const Char_t* fgkIHCName; // Name of Inner honeycomb volumes | |
54e415a8 | 159 | static const Char_t* fgkNoseName; // Name of Nose volumes |
160 | static const Char_t* fgkBackName; // Name of Back volumes | |
161 | static const Char_t* fgkBeamName; // Name of Beam volumes | |
162 | static const Char_t* fgkFlangeName; // Name of Flange volumes | |
bf000c32 | 163 | static const Char_t* fgkFMDName; // Name of Half FMD volumes |
54e415a8 | 164 | |
165 | ClassDef(AliFMDGeometryBuilder,1) | |
166 | }; | |
167 | ||
168 | #endif | |
169 | //____________________________________________________________________ | |
170 | // | |
171 | // Local Variables: | |
172 | // mode: C++ | |
173 | // End: | |
174 | // | |
175 | // EOF | |
176 | // | |
177 |