]> git.uio.no Git - u/mrichter/AliRoot.git/blame_incremental - MUON/AliMUONSt1GeometryBuilderV2.h
Add Config/HighVoltage directory and entry
[u/mrichter/AliRoot.git] / MUON / AliMUONSt1GeometryBuilderV2.h
... / ...
CommitLineData
1/* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
2 * See cxx source for full Copyright notice */
3
4// $Id$
5// Revision of includes 07/05/2004
6//
7/// \ingroup sim
8/// \class AliMUONSt1GeometryBuilderV2
9/// \brief MUON Station1 detailed geometry construction class
10///
11/// \author David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
12
13#ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
14#define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
15
16
17#include "AliMUONVGeometryBuilder.h"
18
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
37// typedef Float_t GReal_t; // for AliGeant3
38typedef Double_t GReal_t; // for VirtualMC
39
40class AliMUON;
41class AliMpSector;
42
43class TTree;
44class TVector2;
45class TVector3;
46
47class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder
48{
49 public:
50 AliMUONSt1GeometryBuilderV2(AliMUON* muon);
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:
60
61 private:
62 /// Not implemented
63 AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON);
64 /// Not implemented
65 AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs);
66
67 // Constants
68 //
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
78
79 // Sensitive copper pads, foam layer, PCB and electronics model parameters
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
97
98 // Pad planes offsets
99 static const GReal_t fgkPadXOffsetBP; ///< Horizontal offset in bending plane
100 static const GReal_t fgkPadYOffsetBP; ///< Vertical offset in bending plane
101
102 // Quadrant Mother volume - TUBS1
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
108
109 // Quadrant Mother volume - TUBS2 (2 copies at different Z's)
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
126
127 // Methods
128 //
129 void CreateHole();
130 void CreateDaughterBoard();
131 void CreateInnerLayers();
132 void CreateSpacer0();
133 void CreateSpacer();
134 void CreateQuadrant(Int_t chamber);
135 void CreateFoamBox(Int_t segNumber, const TVector2& dimensions);
136 void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions,
137 Int_t nofHoles);
138 void CreateFrame(Int_t chamber);
139
140 void PlaceInnerLayers(Int_t chamber);
141 void PlaceSpacer0(Int_t chamber);
142 void PlaceSector(const AliMpSector* sector, SpecialMap specialMap,
143 const TVector3& where, Bool_t reflectZ, Int_t chamber);
144
145 TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const;
146 TString QuadrantMLayerName(Int_t chamber) const;
147 TString QuadrantNLayerName(Int_t chamber) const;
148 TString QuadrantFLayerName(Int_t chamber) const;
149 TString PlaneSegmentName(Int_t segNumber) const;
150 TString FoamBoxName(Int_t segNumber) const;
151 TString FR4BoxName(Int_t segNumber) const;
152 TString GasVolumeName(const TString& name, Int_t chamber) const;
153
154 GReal_t TotalHzPlane() const ;
155 GReal_t TotalHzDaughter() const ;
156 GReal_t TotalHz() const ;
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
163 AliMUON* fMUON; ///< the MUON detector class
164
165 ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class
166};
167
168// inline functions
169
170/// Return total mechanical plane half Size
171inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const
172//{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
173{ return fgkHzFoam + fgkHzFR4; }
174
175/// Return total daughter plane half Size
176inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const
177{ return fgkHzBergPlastic + fgkHzDaughter; }
178
179/// Return total plane half Size
180inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const
181{ return TotalHzPlane() + TotalHzDaughter(); }
182
183/// Return middle quadrant layer name for chamber \a chamber
184inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const
185{ return Form("%s%d",fgkQuadrantMLayerName,chamber); }
186
187/// Return nearer quadrant layer name for chamber \a chamber
188inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const
189{ return Form("%s%d",fgkQuadrantNLayerName,chamber); }
190
191/// Return farther quadrant layer name for chamber \a chamber
192inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const
193{ return Form("%s%d",fgkQuadrantFLayerName,chamber); }
194
195/// Return plane segment name for segment \a segNumber
196inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const
197{ return Form("S%.3d", segNumber); }
198
199/// Return foam box name for segment \a segNumber
200inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const
201{ return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); }
202
203/// Return FR4 box name for segment \a segNumber
204inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const
205{ return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); }
206
207#endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H