]> git.uio.no Git - u/mrichter/AliRoot.git/blame - FMD/AliFMDGeometryBuilder.h
Added a lot of Doxygen documentation
[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
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,
bf000c32 70 TGeoVolume* motherTop,
71 TGeoVolume* motherBot,
72 Double_t zmother,
73 TGeoVolume* innerTop,
74 TGeoVolume* innerBot,
75 TGeoVolume* outerTop=0,
76 TGeoVolume* outerBot=0);
54e415a8 77 /** Make FMD1 volume
78 @param d Detector geometry
79 @param inner Inner ring volume
80 @return FMD1 volume */
bf000c32 81 virtual TGeoVolume* FMD1Geometry(AliFMD1* d,
82 TGeoVolume* innerTop,
83 TGeoVolume* innerBot);
54e415a8 84 /** Make FMD2 volume
85 @param d Detector geometry
86 @param inner Inner ring volume
87 @param outer Outer ring volume
88 @return FMD2 volume */
bf000c32 89 virtual TGeoVolume* FMD2Geometry(AliFMD2* d,
90 TGeoVolume* innerTop,
91 TGeoVolume* innerBot,
92 TGeoVolume* outerTop,
93 TGeoVolume* outerBot);
54e415a8 94 /** Make FMD3 volume
95 @param d Detector geometry
96 @param inner Inner ring volume
97 @param outer Outer ring volume
98 @return FMD3 volume */
bf000c32 99 virtual TGeoVolume* FMD3Geometry(AliFMD3* d,
100 TGeoVolume* innerTop,
101 TGeoVolume* innerBot,
102 TGeoVolume* outerTop,
103 TGeoVolume* outerBot);
54e415a8 104
105
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
113
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
122
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
bf000c32 126 static const Char_t* fgkSensorName; // Name of Sensor volumes
54e415a8 127 static const Char_t* fgkPCBName; // Name of PCB volumes
bf000c32 128 static const Char_t* fgkCuName; // Name of copper volumes
129 static const Char_t* fgkChipName; // Name of chip volumes
54e415a8 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
bf000c32 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
54e415a8 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
bf000c32 142 static const Char_t* fgkFMDName; // Name of Half FMD volumes
54e415a8 143
144 ClassDef(AliFMDGeometryBuilder,1)
145};
146
147#endif
148//____________________________________________________________________
149//
150// Local Variables:
151// mode: C++
152// End:
153//
154// EOF
155//
156