]>
Commit | Line | Data |
---|---|---|
d1cd2474 | 1 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * |
2 | * See cxx source for full Copyright notice */ | |
3 | ||
4 | // $Id$ | |
30178c30 | 5 | // Revision of includes 07/05/2004 |
d1cd2474 | 6 | // |
5398f946 | 7 | /// \ingroup sim |
090443dd | 8 | /// \class AliMUONSt1GeometryBuilderV2 |
9 | /// \brief MUON Station1 detailed geometry construction class | |
10 | /// | |
11 | /// \author David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay | |
d1cd2474 | 12 | |
13 | #ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H | |
14 | #define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H | |
15 | ||
86488ea7 | 16 | |
d1cd2474 | 17 | #include "AliMUONVGeometryBuilder.h" |
18 | ||
86488ea7 | 19 | #include "AliMpContainers.h" |
20 | ||
21 | #ifdef WITH_ROOT | |
22 | #include "TExMap.h" | |
23 | #endif | |
24 | ||
25 | #ifdef WITH_STL | |
26 | #include <map> | |
27 | #endif | |
28 | ||
29 | #ifdef WITH_ROOT | |
30 | typedef TExMap SpecialMap; | |
31 | #endif | |
32 | ||
33 | #ifdef WITH_STL | |
34 | typedef map<Int_t , AliMUONSt1SpecialMotif> SpecialMap; | |
35 | #endif | |
36 | ||
71a2d3aa | 37 | // typedef Float_t GReal_t; // for AliGeant3 |
d1cd2474 | 38 | typedef Double_t GReal_t; // for VirtualMC |
39 | ||
adbabf6d | 40 | class AliMUON; |
41 | class AliMpSector; | |
42 | ||
d1cd2474 | 43 | class TTree; |
44 | class TVector2; | |
45 | class TVector3; | |
46 | ||
d1cd2474 | 47 | class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder |
48 | { | |
49 | public: | |
50 | AliMUONSt1GeometryBuilderV2(AliMUON* muon); | |
d1cd2474 | 51 | AliMUONSt1GeometryBuilderV2(); |
52 | virtual ~AliMUONSt1GeometryBuilderV2(); | |
53 | ||
54 | virtual void CreateMaterials(); | |
55 | virtual void CreateGeometry(); | |
56 | virtual void SetTransformations(); | |
57 | virtual void SetSensitiveVolumes(); | |
58 | ||
59 | protected: | |
d1cd2474 | 60 | |
61 | private: | |
71a2d3aa | 62 | /// Not implemented |
161d3338 | 63 | AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON); |
71a2d3aa | 64 | /// Not implemented |
161d3338 | 65 | AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs); |
71a2d3aa | 66 | |
d1cd2474 | 67 | // Constants |
68 | // | |
18b6b8c7 | 69 | static const GReal_t fgkHzPadPlane; ///< Pad plane |
70 | static const GReal_t fgkHzFoam; ///< Foam of mechanicalplane | |
71 | static const GReal_t fgkHzFR4; ///< FR4 of mechanical plane | |
72 | static const GReal_t fgkHzSnPb; ///< Pad/Kapton connection (66 pt) | |
73 | static const GReal_t fgkHzKapton; ///< Kapton | |
74 | static const GReal_t fgkHzBergPlastic; ///< Berg connector | |
75 | static const GReal_t fgkHzBergCopper; ///< Berg connector (80 pt) | |
76 | static const GReal_t fgkHzDaughter; ///< Daughter board | |
77 | static const GReal_t fgkHzGas; ///< ArCO2 Gas | |
d1cd2474 | 78 | |
79 | // Sensitive copper pads, foam layer, PCB and electronics model parameters | |
18b6b8c7 | 80 | static const GReal_t fgkHxHole; ///< foam hole paremeter |
81 | static const GReal_t fgkHyHole; ///< foam hole paremeter | |
82 | static const GReal_t fgkHxBergPlastic; ///< Berg connector parameter | |
83 | static const GReal_t fgkHyBergPlastic; ///< Berg connector parameter | |
84 | static const GReal_t fgkHxBergCopper; ///< Berg connector parameter | |
85 | static const GReal_t fgkHyBergCopper; ///< Berg connector parameter | |
86 | static const GReal_t fgkHxKapton; ///< Kapton parameter | |
87 | static const GReal_t fgkHyKapton; ///< Kapton parameter | |
88 | static const GReal_t fgkHxDaughter; ///< Electronics parameter | |
89 | static const GReal_t fgkHyDaughter; ///< Electronics parameter | |
90 | static const GReal_t fgkOffsetX; ///< Offset X | |
91 | static const GReal_t fgkOffsetY; ///< Offset Y | |
92 | static const GReal_t fgkDeltaFilleEtamX; ///< Electronics parameter | |
93 | static const GReal_t fgkDeltaFilleEtamY; ///< Electronics parameter | |
94 | ||
95 | static const GReal_t fgkDeltaQuadLHC; ///< LHC Origin wrt Quadrant Origin | |
96 | static const GReal_t fgkFrameOffset; ///< Frame offset | |
d1cd2474 | 97 | |
b367fd8f | 98 | // Pad planes offsets |
18b6b8c7 | 99 | static const GReal_t fgkPadXOffsetBP; ///< Horizontal offset in bending plane |
100 | static const GReal_t fgkPadYOffsetBP; ///< Vertical offset in bending plane | |
b367fd8f | 101 | |
d1cd2474 | 102 | // Quadrant Mother volume - TUBS1 |
18b6b8c7 | 103 | static const GReal_t fgkMotherIR1; ///< Middle Layer Rin |
104 | static const GReal_t fgkMotherOR1; ///< Middle Layer Rout | |
105 | static const GReal_t fgkMotherThick1; ///< Middle Layer Hz | |
106 | static const GReal_t fgkMotherPhiL1; ///< Middle Layer Sphi | |
107 | static const GReal_t fgkMotherPhiU1; ///< Middle Layer Endphi | |
d1cd2474 | 108 | |
109 | // Quadrant Mother volume - TUBS2 (2 copies at different Z's) | |
18b6b8c7 | 110 | static const GReal_t fgkMotherIR2; ///< Near and Far Layer Rin |
111 | static const GReal_t fgkMotherOR2; ///< Near and Far Layer Rout | |
112 | static const GReal_t fgkMotherThick2; ///< Near and Far Layer Hz | |
113 | static const GReal_t fgkMotherPhiL2; ///< Near and Far Layer Sphi | |
114 | static const GReal_t fgkMotherPhiU2; ///< Near and Far Layer Endphi | |
115 | ||
116 | static const char* fgkHoleName; ///< prefix for automatic volume naming | |
117 | static const char* fgkQuadrantEnvelopeName; ///< prefix for automatic volume naming | |
118 | static const char* fgkQuadrantMLayerName;///< prefix for automatic volume naming | |
119 | static const char* fgkQuadrantNLayerName;///< prefix for automatic volume naming | |
120 | static const char* fgkQuadrantFLayerName;///< prefix for automatic volume naming | |
121 | static const char* fgkDaughterName; ///< prefix for automatic volume naming | |
122 | static const Int_t fgkFoamBoxNameOffset; ///< coefficient for automatic volume naming | |
123 | static const Int_t fgkFR4BoxNameOffset; ///< coefficient for automatic volume naming | |
124 | static const Int_t fgkDaughterCopyNoOffset; ///< \brief copy number offset for daughter | |
125 | /// boards positions in non-bending plane | |
d1cd2474 | 126 | |
127 | // Methods | |
128 | // | |
129 | void CreateHole(); | |
130 | void CreateDaughterBoard(); | |
131 | void CreateInnerLayers(); | |
fdbaed6e | 132 | void CreateSpacer0(); |
133 | void CreateSpacer(); | |
d1cd2474 | 134 | void CreateQuadrant(Int_t chamber); |
62c708bf | 135 | void CreateFoamBox(Int_t segNumber, const TVector2& dimensions); |
136 | void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions, | |
d1cd2474 | 137 | Int_t nofHoles); |
138 | void CreateFrame(Int_t chamber); | |
139 | ||
140 | void PlaceInnerLayers(Int_t chamber); | |
fdbaed6e | 141 | void PlaceSpacer0(Int_t chamber); |
331a617a | 142 | void PlaceSector(const AliMpSector* sector, SpecialMap specialMap, |
d1cd2474 | 143 | const TVector3& where, Bool_t reflectZ, Int_t chamber); |
144 | ||
b367fd8f | 145 | TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const; |
d1cd2474 | 146 | TString QuadrantMLayerName(Int_t chamber) const; |
147 | TString QuadrantNLayerName(Int_t chamber) const; | |
148 | TString QuadrantFLayerName(Int_t chamber) const; | |
62c708bf | 149 | TString PlaneSegmentName(Int_t segNumber) const; |
150 | TString FoamBoxName(Int_t segNumber) const; | |
151 | TString FR4BoxName(Int_t segNumber) const; | |
d1cd2474 | 152 | TString GasVolumeName(const TString& name, Int_t chamber) const; |
153 | ||
5398f946 | 154 | GReal_t TotalHzPlane() const ; |
155 | GReal_t TotalHzDaughter() const ; | |
156 | GReal_t TotalHz() const ; | |
d1cd2474 | 157 | |
158 | // Data members | |
159 | // | |
160 | //Float_t fRadlCopper; //! copper computed radiation length | |
161 | //Float_t fRadlFoam; //! foam computed radiation length | |
162 | //Float_t fRadlFR4; //! FR4 computed radiation length | |
18b6b8c7 | 163 | AliMUON* fMUON; ///< the MUON detector class |
d1cd2474 | 164 | |
165 | ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class | |
166 | }; | |
167 | ||
168 | // inline functions | |
169 | ||
5398f946 | 170 | /// Return total mechanical plane half Size |
d1cd2474 | 171 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const |
172 | //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; } | |
173 | { return fgkHzFoam + fgkHzFR4; } | |
174 | ||
5398f946 | 175 | /// Return total daughter plane half Size |
d1cd2474 | 176 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const |
177 | { return fgkHzBergPlastic + fgkHzDaughter; } | |
178 | ||
5398f946 | 179 | /// Return total plane half Size |
d1cd2474 | 180 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const |
181 | { return TotalHzPlane() + TotalHzDaughter(); } | |
182 | ||
5398f946 | 183 | /// Return middle quadrant layer name for chamber \a chamber |
d1cd2474 | 184 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const |
185 | { return Form("%s%d",fgkQuadrantMLayerName,chamber); } | |
186 | ||
5398f946 | 187 | /// Return nearer quadrant layer name for chamber \a chamber |
d1cd2474 | 188 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const |
189 | { return Form("%s%d",fgkQuadrantNLayerName,chamber); } | |
190 | ||
5398f946 | 191 | /// Return farther quadrant layer name for chamber \a chamber |
d1cd2474 | 192 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const |
193 | { return Form("%s%d",fgkQuadrantFLayerName,chamber); } | |
194 | ||
5398f946 | 195 | /// Return plane segment name for segment \a segNumber |
62c708bf | 196 | inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const |
197 | { return Form("S%.3d", segNumber); } | |
198 | ||
5398f946 | 199 | /// Return foam box name for segment \a segNumber |
62c708bf | 200 | inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const |
201 | { return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); } | |
202 | ||
5398f946 | 203 | /// Return FR4 box name for segment \a segNumber |
62c708bf | 204 | inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const |
205 | { return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); } | |
206 | ||
d1cd2474 | 207 | #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H |