]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDGeometryBuilder.h
changes in the MagF constructor
[u/mrichter/AliRoot.git] / FMD / AliFMDGeometryBuilder.h
CommitLineData
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
25class TGeoVolume;
26class TGeoMedium;
ed82d35e 27class TGeoShape;
54e415a8 28class AliFMD;
29class AliFMDRing;
30class AliFMDDetector;
31class AliFMD1;
32class AliFMD2;
33class AliFMD3;
34
35//____________________________________________________________________
9f662337 36/** @class AliFMDGeometryBuilder
37 @brief Builder of FMD geometry.
38 This class takes care of actually building the geometry using the
39 @b TGeo classes. Various parameters are fecthed from the
40 AliFMDGeometry manager.
41 @ingroup FMD_sim
42 */
54e415a8 43class AliFMDGeometryBuilder : public TTask
44{
45public:
54e415a8 46 /** CTOR */
9f662337 47 AliFMDGeometryBuilder();
48 /** CTOR
49 @param detailed Whether to make a detailed geometry. */
54e415a8 50 AliFMDGeometryBuilder(Bool_t detailed);
51 virtual ~AliFMDGeometryBuilder() {}
52 /** Register */
53 virtual void Exec(Option_t* option="");
54 /** @param use Wheher to assemblies in the geometry definition */
55 virtual void UseAssembly(Bool_t use=kTRUE) { fUseAssembly = use; }
56 /** Whether to make a detailed geometry or not.
57 @param use If true, make a detailed geometry */
58 virtual void SetDetailed(Bool_t use) { fDetailed = use; }
59 /** @return Sector offset in volume tree */
60 Int_t GetSectorOff() const { return fSectorOff; }
61 /** @return Module offset in volume tree */
62 Int_t GetModuleOff() const { return fModuleOff; }
63 /** @return Ring offset in the volume tree */
64 Int_t GetRingOff() const { return fRingOff; }
65 /** @return Detector offfset in the volume tree */
66 Int_t GetDetectorOff() const { return fDetectorOff; }
67protected:
02a27b50 68 /** Copy CTOR */
b5ee4425 69 AliFMDGeometryBuilder(const AliFMDGeometryBuilder& o)
70 : TTask(o),
71 fActiveId(o.fActiveId),
72 fDetailed(o.fDetailed),
73 fUseAssembly(o.fUseAssembly),
74 fSectorOff(o.fSectorOff),
75 fModuleOff(o.fModuleOff),
76 fRingOff(o.fRingOff),
77 fDetectorOff(o.fDetectorOff),
78 fSi(o.fSi),
79 fC(o.fC),
80 fAl(o.fAl),
81 fPCB(o.fPCB),
82 fChip(o.fChip),
83 fAir(o.fAir),
84 fPlastic(o.fPlastic),
d98fbfa5 85 fCopper(o.fCopper),
86 fSteel(o.fSteel)
b5ee4425 87 {}
f70f588a 88 /**
89 * Assignment operator
90 *
91 * @return Reference to this object
92 */
02a27b50 93 AliFMDGeometryBuilder& operator=(const AliFMDGeometryBuilder&){return *this;}
f70f588a 94
95 /**
96 * Make a polygonic extrusion shape based on verticies passed in @a
97 * verticies
98 *
99 * @param verticies List of verticies
100 * @param thick Thickness
101 *
102 * @return newly allocated polygonic extrusion shape
103 */
104 virtual TGeoShape* MakeXTRU(const TObjArray& verticies, Double_t thick) const;
105
106 /**
107 * Make a ring volume
108 *
109 * @param r Ring geometry
110 *
111 * @return Ring volume
112 */
54e415a8 113 virtual TGeoVolume* RingGeometry(AliFMDRing* r);
ed82d35e 114
f70f588a 115 /**
116 * Make a honey comb shape from passed parameters.
117 *
118 * @param id Detector identifier (1,2, or 3)
119 * @param ring Ring identifier ('I' or 'O')
120 * @param r1 Inner radius
121 * @param r2 Outer radius
122 * @param w width
123 * @param t Thickness of material
124 * @param c Clearing from horizontal.
125 *
126 * @return Pointer to newly allocated composite shape.
127 */
ed82d35e 128 virtual TGeoShape* HoneycombShape(Int_t id, Char_t ring,
129 double r1, double r2,
130 double w, double t, double c=0.3);
2e0139df 131 /**
132 * Get the tension box volume
133 *
134 *
135 * @return
136 */
137 virtual TGeoVolume* TensionBox();
54e415a8 138 /** Make a detector volume
139 @param d Detector geometry
f8616692 140 @param motherTop Mother volume (detector volume)
141 @param motherBot Mother volume (detector volume)
54e415a8 142 @param zmother Z position of mother
f8616692 143 @param innerTop Inner ring volume
144 @param innerBot Inner ring volume
145 @param outerTop Outer ring volume
146 @param outerBot Outer ring volume
54e415a8 147 @return Detector volume */
148 virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d,
bf000c32 149 TGeoVolume* motherTop,
150 TGeoVolume* motherBot,
151 Double_t zmother,
152 TGeoVolume* innerTop,
153 TGeoVolume* innerBot,
154 TGeoVolume* outerTop=0,
155 TGeoVolume* outerBot=0);
54e415a8 156 /** Make FMD1 volume
157 @param d Detector geometry
f8616692 158 @param innerTop Inner ring volume
159 @param innerBot Inner ring volume
54e415a8 160 @return FMD1 volume */
bf000c32 161 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
162 TGeoVolume* innerTop,
163 TGeoVolume* innerBot);
f70f588a 164 /**
165 * Make FMD2 volume
166 *
167 * @param d Detector geometry
168 * @param innerTop Inner ring volume
169 * @param innerBot Inner ring volume
170 * @param outerTop Outer ring volume
171 * @param outerBot Outer ring volume
172 *
173 * @return FMD2 volume
174 */
bf000c32 175 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
176 TGeoVolume* innerTop,
177 TGeoVolume* innerBot,
178 TGeoVolume* outerTop,
179 TGeoVolume* outerBot);
f70f588a 180 /**
181 * Make FMD3 volume
182 *
183 * @param d Detector geometry
184 * @param innerTop Inner ring volume
185 * @param innerBot Inner ring volume
186 * @param outerTop Outer ring volume
187 * @param outerBot Outer ring volume
188 *
189 * @return FMD3 volume
190 */
bf000c32 191 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
192 TGeoVolume* innerTop,
193 TGeoVolume* innerBot,
194 TGeoVolume* outerTop,
195 TGeoVolume* outerBot);
54e415a8 196
197
198 TArrayI fActiveId; //! Active volume ID's
199 Bool_t fDetailed; // Whether to make a detailed simulation
200 Bool_t fUseAssembly; // Assembly volumes
201 Int_t fSectorOff; // Sector offset in volume tree
202 Int_t fModuleOff; // Module offset in volume tree
203 Int_t fRingOff; // Ring offset in the volume tree
204 Int_t fDetectorOff; // Detector offfset in the volume tree
205
206 TGeoMedium* fSi; //! Si Medium
207 TGeoMedium* fC; //! C Medium
208 TGeoMedium* fAl; //! Al Medium
209 TGeoMedium* fPCB; //! PCB Medium
210 TGeoMedium* fChip; //! Chip Medium
211 TGeoMedium* fAir; //! Air Medium
212 TGeoMedium* fPlastic; //! Plastic Medium
213 TGeoMedium* fCopper; //! Copper Medium
d98fbfa5 214 TGeoMedium* fSteel; //! Steel Medium
54e415a8 215
216 static const Char_t* fgkActiveName; // Name of Active volumes
217 static const Char_t* fgkSectorName; // Name of Sector volumes
218 static const Char_t* fgkStripName; // Name of Strip volumes
bf000c32 219 static const Char_t* fgkSensorName; // Name of Sensor volumes
54e415a8 220 static const Char_t* fgkPCBName; // Name of PCB volumes
bf000c32 221 static const Char_t* fgkCuName; // Name of copper volumes
222 static const Char_t* fgkChipName; // Name of chip volumes
54e415a8 223 static const Char_t* fgkLongLegName; // Name of LongLeg volumes
224 static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
225 static const Char_t* fgkFrontVName; // Name of Front volumes
226 static const Char_t* fgkBackVName; // Name of Back volumes
bf000c32 227 static const Char_t* fgkRingTopName; // Name of Top ring volumes
228 static const Char_t* fgkRingBotName; // Name of Bottom ring volumes
229 static const Char_t* fgkHCName; // Name of Honeycomb volumes
230 static const Char_t* fgkIHCName; // Name of Inner honeycomb volumes
54e415a8 231 static const Char_t* fgkNoseName; // Name of Nose volumes
232 static const Char_t* fgkBackName; // Name of Back volumes
d98fbfa5 233 static const Char_t* fgkTopName; // Name of Back volumes
54e415a8 234 static const Char_t* fgkBeamName; // Name of Beam volumes
235 static const Char_t* fgkFlangeName; // Name of Flange volumes
d98fbfa5 236 static const Char_t* fgkFMDDCuName; // Name of FMDD copper volumes
237 static const Char_t* fgkFMDDPCBName; // Name of FMDD PCB volumes
238 static const Char_t* fgkFMDDChipName; // Name of FMDD chip volumes
239 static const Char_t* fgkFMDDName; // Name of FMDD volumes
bf000c32 240 static const Char_t* fgkFMDName; // Name of Half FMD volumes
54e415a8 241
242 ClassDef(AliFMDGeometryBuilder,1)
243};
244
245#endif
246//____________________________________________________________________
247//
248// Local Variables:
249// mode: C++
250// End:
251//
252// EOF
253//
254