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