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
25 //____________________________________________________________________
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.
33 class AliFMDGeometryBuilder : public TTask
37 AliFMDGeometryBuilder();
39 @param detailed Whether to make a detailed geometry. */
40 AliFMDGeometryBuilder(Bool_t detailed);
41 virtual ~AliFMDGeometryBuilder() {}
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; }
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
64 @param mother Mother volume (detector volume)
65 @param zmother Z position of mother
66 @param inner Inner ring volume
67 @param outer Outer ring volume
68 @return Detector volume */
69 virtual TGeoVolume* DetectorGeometry(AliFMDDetector* d,
70 TGeoVolume* motherTop,
71 TGeoVolume* motherBot,
75 TGeoVolume* outerTop=0,
76 TGeoVolume* outerBot=0);
78 @param d Detector geometry
79 @param inner Inner ring volume
80 @return FMD1 volume */
81 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
83 TGeoVolume* innerBot);
85 @param d Detector geometry
86 @param inner Inner ring volume
87 @param outer Outer ring volume
88 @return FMD2 volume */
89 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
93 TGeoVolume* outerBot);
95 @param d Detector geometry
96 @param inner Inner ring volume
97 @param outer Outer ring volume
98 @return FMD3 volume */
99 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
100 TGeoVolume* innerTop,
101 TGeoVolume* innerBot,
102 TGeoVolume* outerTop,
103 TGeoVolume* outerBot);
106 TArrayI fActiveId; //! Active volume ID's
107 Bool_t fDetailed; // Whether to make a detailed simulation
108 Bool_t fUseAssembly; // Assembly volumes
109 Int_t fSectorOff; // Sector offset in volume tree
110 Int_t fModuleOff; // Module offset in volume tree
111 Int_t fRingOff; // Ring offset in the volume tree
112 Int_t fDetectorOff; // Detector offfset in the volume tree
114 TGeoMedium* fSi; //! Si Medium
115 TGeoMedium* fC; //! C Medium
116 TGeoMedium* fAl; //! Al Medium
117 TGeoMedium* fPCB; //! PCB Medium
118 TGeoMedium* fChip; //! Chip Medium
119 TGeoMedium* fAir; //! Air Medium
120 TGeoMedium* fPlastic; //! Plastic Medium
121 TGeoMedium* fCopper; //! Copper Medium
123 static const Char_t* fgkActiveName; // Name of Active volumes
124 static const Char_t* fgkSectorName; // Name of Sector volumes
125 static const Char_t* fgkStripName; // Name of Strip volumes
126 static const Char_t* fgkSensorName; // Name of Sensor volumes
127 static const Char_t* fgkPCBName; // Name of PCB volumes
128 static const Char_t* fgkCuName; // Name of copper volumes
129 static const Char_t* fgkChipName; // Name of chip volumes
130 static const Char_t* fgkLongLegName; // Name of LongLeg volumes
131 static const Char_t* fgkShortLegName; // Name of ShortLeg volumes
132 static const Char_t* fgkFrontVName; // Name of Front volumes
133 static const Char_t* fgkBackVName; // Name of Back volumes
134 static const Char_t* fgkRingTopName; // Name of Top ring volumes
135 static const Char_t* fgkRingBotName; // Name of Bottom ring volumes
136 static const Char_t* fgkHCName; // Name of Honeycomb volumes
137 static const Char_t* fgkIHCName; // Name of Inner honeycomb volumes
138 static const Char_t* fgkNoseName; // Name of Nose volumes
139 static const Char_t* fgkBackName; // Name of Back volumes
140 static const Char_t* fgkBeamName; // Name of Beam volumes
141 static const Char_t* fgkFlangeName; // Name of Flange volumes
142 static const Char_t* fgkFMDName; // Name of Half FMD volumes
144 ClassDef(AliFMDGeometryBuilder,1)
148 //____________________________________________________________________