1 #ifndef ALIFMDGEOMETRYBUILDER_H
2 #define ALIFMDGEOMETRYBUILDER_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights
6 * Latest changes by Christian Holm Christensen <cholm@nbi.dk>
8 * See cxx source for full Copyright notice
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.
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
34 //____________________________________________________________________
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.
42 class AliFMDGeometryBuilder : public TTask
46 AliFMDGeometryBuilder();
48 @param detailed Whether to make a detailed geometry. */
49 AliFMDGeometryBuilder(Bool_t detailed);
50 virtual ~AliFMDGeometryBuilder() {}
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; }
68 AliFMDGeometryBuilder(const AliFMDGeometryBuilder& o) : TTask(o) {}
69 /** Assignment operator */
70 AliFMDGeometryBuilder& operator=(const AliFMDGeometryBuilder&){return *this;}
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
77 @param motherTop Mother volume (detector volume)
78 @param motherBot Mother volume (detector volume)
79 @param zmother Z position of mother
80 @param innerTop Inner ring volume
81 @param innerBot Inner ring volume
82 @param outerTop Outer ring volume
83 @param outerBot Outer ring volume
84 @return Detector volume */
85 virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d,
86 TGeoVolume* motherTop,
87 TGeoVolume* motherBot,
91 TGeoVolume* outerTop=0,
92 TGeoVolume* outerBot=0);
94 @param d Detector geometry
95 @param innerTop Inner ring volume
96 @param innerBot Inner ring volume
97 @return FMD1 volume */
98 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
100 TGeoVolume* innerBot);
102 @param d Detector geometry
103 @param innerTop Inner ring volume
104 @param innerBot Inner ring volume
105 @param outerTop Outer ring volume
106 @param outerBot Outer ring volume
107 @return FMD2 volume */
108 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
109 TGeoVolume* innerTop,
110 TGeoVolume* innerBot,
111 TGeoVolume* outerTop,
112 TGeoVolume* outerBot);
114 @param d Detector geometry
115 @param innerTop Inner ring volume
116 @param innerBot Inner ring volume
117 @param outerTop Outer ring volume
118 @param outerBot Outer ring volume
119 @return FMD3 volume */
120 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
121 TGeoVolume* innerTop,
122 TGeoVolume* innerBot,
123 TGeoVolume* outerTop,
124 TGeoVolume* outerBot);
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
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
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
147 static const Char_t* fgkSensorName; // Name of Sensor volumes
148 static const Char_t* fgkPCBName; // Name of PCB volumes
149 static const Char_t* fgkCuName; // Name of copper volumes
150 static const Char_t* fgkChipName; // Name of chip volumes
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
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
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
163 static const Char_t* fgkFMDName; // Name of Half FMD volumes
165 ClassDef(AliFMDGeometryBuilder,1)
169 //____________________________________________________________________