1 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
5 // Revision of includes 07/05/2004
8 /// \class AliMUONSt1GeometryBuilderV2
9 /// \brief MUON Station1 detailed geometry construction class
11 /// \author David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
13 #ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
14 #define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
17 #include "AliMUONVGeometryBuilder.h"
19 #include "AliMpContainers.h"
29 // typedef Float_t GReal_t; // for AliGeant3
30 typedef Double_t GReal_t; // for VirtualMC
39 class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder
42 AliMUONSt1GeometryBuilderV2(AliMUON* muon);
43 AliMUONSt1GeometryBuilderV2();
44 virtual ~AliMUONSt1GeometryBuilderV2();
46 virtual void CreateMaterials();
47 virtual void CreateGeometry();
48 virtual void SetTransformations();
49 virtual void SetSensitiveVolumes();
55 AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON);
57 AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs);
61 static const GReal_t fgkHzPadPlane; ///< Pad plane
62 static const GReal_t fgkHzFoam; ///< Foam of mechanicalplane
63 static const GReal_t fgkHzFR4; ///< FR4 of mechanical plane
64 static const GReal_t fgkHzSnPb; ///< Pad/Kapton connection (66 pt)
65 static const GReal_t fgkHzKapton; ///< Kapton
66 static const GReal_t fgkHzBergPlastic; ///< Berg connector
67 static const GReal_t fgkHzBergCopper; ///< Berg connector (80 pt)
68 static const GReal_t fgkHzDaughter; ///< Daughter board
69 static const GReal_t fgkHzGas; ///< ArCO2 Gas
71 // Sensitive copper pads, foam layer, PCB and electronics model parameters
72 static const GReal_t fgkHxHole; ///< foam hole paremeter
73 static const GReal_t fgkHyHole; ///< foam hole paremeter
74 static const GReal_t fgkHxBergPlastic; ///< Berg connector parameter
75 static const GReal_t fgkHyBergPlastic; ///< Berg connector parameter
76 static const GReal_t fgkHxBergCopper; ///< Berg connector parameter
77 static const GReal_t fgkHyBergCopper; ///< Berg connector parameter
78 static const GReal_t fgkHxKapton; ///< Kapton parameter
79 static const GReal_t fgkHyKapton; ///< Kapton parameter
80 static const GReal_t fgkHxDaughter; ///< Electronics parameter
81 static const GReal_t fgkHyDaughter; ///< Electronics parameter
82 static const GReal_t fgkOffsetX; ///< Offset X
83 static const GReal_t fgkOffsetY; ///< Offset Y
84 static const GReal_t fgkDeltaFilleEtamX; ///< Electronics parameter
85 static const GReal_t fgkDeltaFilleEtamY; ///< Electronics parameter
87 static const GReal_t fgkDeltaQuadLHC; ///< LHC Origin wrt Quadrant Origin
88 static const GReal_t fgkFrameOffset; ///< Frame offset
91 static const GReal_t fgkPadXOffsetBP; ///< Horizontal offset in bending plane
92 static const GReal_t fgkPadYOffsetBP; ///< Vertical offset in bending plane
94 // Quadrant Mother volume - TUBS1
95 static const GReal_t fgkMotherIR1; ///< Middle Layer Rin
96 static const GReal_t fgkMotherOR1; ///< Middle Layer Rout
97 static const GReal_t fgkMotherThick1; ///< Middle Layer Hz
98 static const GReal_t fgkMotherPhiL1; ///< Middle Layer Sphi
99 static const GReal_t fgkMotherPhiU1; ///< Middle Layer Endphi
101 // Quadrant Mother volume - TUBS2 (2 copies at different Z's)
102 static const GReal_t fgkMotherIR2; ///< Near and Far Layer Rin
103 static const GReal_t fgkMotherOR2; ///< Near and Far Layer Rout
104 static const GReal_t fgkMotherThick2; ///< Near and Far Layer Hz
105 static const GReal_t fgkMotherPhiL2; ///< Near and Far Layer Sphi
106 static const GReal_t fgkMotherPhiU2; ///< Near and Far Layer Endphi
108 static const char* fgkHoleName; ///< prefix for automatic volume naming
109 static const char* fgkQuadrantEnvelopeName; ///< prefix for automatic volume naming
110 static const char* fgkQuadrantMLayerName;///< prefix for automatic volume naming
111 static const char* fgkQuadrantNLayerName;///< prefix for automatic volume naming
112 static const char* fgkQuadrantFLayerName;///< prefix for automatic volume naming
113 static const char* fgkQuadrantMFLayerName; ///< prefix for automatic volume naming
114 static const char* fgkDaughterName; ///< prefix for automatic volume naming
115 static const Int_t fgkFoamBoxNameOffset; ///< coefficient for automatic volume naming
116 static const Int_t fgkFR4BoxNameOffset; ///< coefficient for automatic volume naming
117 static const Int_t fgkDaughterCopyNoOffset; ///< \brief copy number offset for daughter
118 /// boards positions in non-bending plane
123 void CreateDaughterBoard();
124 void CreateInnerLayers();
125 void CreateSpacer0();
127 void CreateQuadrant(Int_t chamber);
128 void CreateFoamBox(Int_t segNumber, const TVector2& dimensions);
129 void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions,
131 void CreateQuadrantLayersAsVolumes(Int_t chamber);
132 void CreateQuadrantLayersAsAssemblies(Int_t chamber);
133 void CreateFrame(Int_t chamber);
135 void PlaceInnerLayers(Int_t chamber);
136 void PlaceSpacer0(Int_t chamber);
137 void PlaceSector(const AliMpSector* sector, TExMap specialMap,
138 const TVector3& where, Bool_t reflectZ, Int_t chamber);
140 TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const;
141 TString QuadrantMLayerName(Int_t chamber) const;
142 TString QuadrantNLayerName(Int_t chamber) const;
143 TString QuadrantFLayerName(Int_t chamber) const;
144 TString QuadrantMFLayerName(Int_t chamber) const;
145 TString PlaneSegmentName(Int_t segNumber) const;
146 TString FoamBoxName(Int_t segNumber) const;
147 TString FR4BoxName(Int_t segNumber) const;
148 TString GasVolumeName(const TString& name, Int_t chamber) const;
150 GReal_t TotalHzPlane() const ;
151 GReal_t TotalHzDaughter() const ;
152 GReal_t TotalHz() const ;
156 //Float_t fRadlCopper; //! copper computed radiation length
157 //Float_t fRadlFoam; //! foam computed radiation length
158 //Float_t fRadlFR4; //! FR4 computed radiation length
159 AliMUON* fMUON; ///< the MUON detector class
161 ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class
166 /// Return total mechanical plane half Size
167 inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const
168 //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
169 { return fgkHzFoam + fgkHzFR4; }
171 /// Return total daughter plane half Size
172 inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const
173 { return fgkHzBergPlastic + fgkHzDaughter; }
175 /// Return total plane half Size
176 inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const
177 { return TotalHzPlane() + TotalHzDaughter(); }
179 /// Return middle quadrant layer name for chamber \a chamber
180 inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const
181 { return Form("%s%d",fgkQuadrantMLayerName,chamber); }
183 /// Return middle quadrant frame layer name for chamber \a chamber
184 inline TString AliMUONSt1GeometryBuilderV2::QuadrantMFLayerName(Int_t chamber) const
185 { return Form("%s%d",fgkQuadrantMFLayerName,chamber); }
187 /// Return nearer quadrant layer name for chamber \a chamber
188 inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const
189 { return Form("%s%d",fgkQuadrantNLayerName,chamber); }
191 /// Return farther quadrant layer name for chamber \a chamber
192 inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const
193 { return Form("%s%d",fgkQuadrantFLayerName,chamber); }
195 /// Return plane segment name for segment \a segNumber
196 inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const
197 { return Form("S%.3d", segNumber); }
199 /// Return foam box name for segment \a segNumber
200 inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const
201 { return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); }
203 /// Return FR4 box name for segment \a segNumber
204 inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const
205 { return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); }
207 #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H