AliRoot Core  a565103 (a565103)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliMUONSt1GeometryBuilderV2.h
Go to the documentation of this file.
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 //
12 
13 #ifndef ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
14 #define ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
15 
16 
18 
19 #include <TExMap.h>
20 
21 // typedef Float_t GReal_t; // for AliGeant3
22 typedef Double_t GReal_t; // for VirtualMC
23 
24 class AliMUON;
25 class AliMpSector;
26 
27 class TTree;
28 class TVector2;
29 class TVector3;
30 
32 {
33  public:
37 
38  virtual void CreateMaterials();
39  virtual void CreateGeometry();
40  virtual void SetVolumes();
41  virtual void SetTransformations();
42  virtual void SetSensitiveVolumes();
43 
44  protected:
45 
46  private:
51 
52  // Constants
53  //
54  static const GReal_t fgkHzPadPlane;
55  static const GReal_t fgkHzFoam;
56  static const GReal_t fgkHzFR4;
57  static const GReal_t fgkHzSnPb;
58  static const GReal_t fgkHzKapton;
59  static const GReal_t fgkHzBergPlastic;
60  static const GReal_t fgkHzBergCopper;
61  static const GReal_t fgkHzDaughter;
62  static const GReal_t fgkHzGas;
63 
64  // Sensitive copper pads, foam layer, PCB and electronics model parameters
65  static const GReal_t fgkHxHole;
66  static const GReal_t fgkHyHole;
67  static const GReal_t fgkHxBergPlastic;
68  static const GReal_t fgkHyBergPlastic;
69  static const GReal_t fgkHxBergCopper;
70  static const GReal_t fgkHyBergCopper;
71  static const GReal_t fgkHxKapton;
72  static const GReal_t fgkHyKapton;
73  static const GReal_t fgkHxDaughter;
74  static const GReal_t fgkHyDaughter;
75  static const GReal_t fgkOffsetX;
76  static const GReal_t fgkOffsetY;
77  static const GReal_t fgkDeltaFilleEtamX;
78  static const GReal_t fgkDeltaFilleEtamY;
79 
80  static const GReal_t fgkDeltaQuadLHC;
81  static const GReal_t fgkFrameOffset;
82 
83  // Pad planes offsets
84  static const GReal_t fgkPadXOffsetBP;
85  static const GReal_t fgkPadYOffsetBP;
86 
87  // Quadrant Mother volume - TUBS1
88  static const GReal_t fgkMotherIR1;
89  static const GReal_t fgkMotherOR1;
90  static const GReal_t fgkMotherThick1;
91  static const GReal_t fgkMotherPhiL1;
92  static const GReal_t fgkMotherPhiU1;
93 
94  // Quadrant Mother volume - TUBS2 (2 copies at different Z's)
95  static const GReal_t fgkMotherIR2;
96  static const GReal_t fgkMotherOR2;
97  static const GReal_t fgkMotherThick2;
98  static const GReal_t fgkMotherPhiL2;
99  static const GReal_t fgkMotherPhiU2;
100 
101  static const char* fgkHoleName;
102  static const char* fgkQuadrantEnvelopeName;
103  static const char* fgkQuadrantMLayerName;
104  static const char* fgkQuadrantNLayerName;
105  static const char* fgkQuadrantFLayerName;
106  static const char* fgkQuadrantMFLayerName;
107  static const char* fgkDaughterName;
108  static const Int_t fgkFoamBoxNameOffset;
109  static const Int_t fgkFR4BoxNameOffset;
110  static const Int_t fgkDaughterCopyNoOffset;
111 
113  // Methods
114  //
115  void CreateHole();
116  void CreateDaughterBoard();
117  void CreateInnerLayers();
118  void CreateSpacer0();
119  void CreateSpacer();
120  void CreateQuadrant(Int_t chamber);
121  void CreateFoamBox(Int_t segNumber, const TVector2& dimensions);
122  void CreatePlaneSegment(Int_t segNumber, const TVector2& dimensions,
123  Int_t nofHoles);
124  void CreateQuadrantLayersAsVolumes(Int_t chamber);
125  void CreateQuadrantLayersAsAssemblies(Int_t chamber);
126  void CreateFrame(Int_t chamber);
127 
128  void PlaceInnerLayers(Int_t chamber);
129  void PlaceSpacer0(Int_t chamber);
130  void PlaceSector(const AliMpSector* sector, TExMap specialMap,
131  const TVector3& where, Bool_t reflectZ, Int_t chamber);
132 
133  TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const;
134  TString QuadrantMLayerName(Int_t chamber) const;
135  TString QuadrantNLayerName(Int_t chamber) const;
136  TString QuadrantFLayerName(Int_t chamber) const;
137  TString QuadrantMFLayerName(Int_t chamber) const;
138  TString PlaneSegmentName(Int_t segNumber) const;
139  TString FoamBoxName(Int_t segNumber) const;
140  TString FR4BoxName(Int_t segNumber) const;
141  TString GasVolumeName(const TString& name, Int_t chamber) const;
142 
143  GReal_t TotalHzPlane() const ;
144  GReal_t TotalHzDaughter() const ;
145  GReal_t TotalHz() const ;
146 
147  // Data members
148  //
149  //Float_t fRadlCopper; //! copper computed radiation length
150  //Float_t fRadlFoam; //! foam computed radiation length
151  //Float_t fRadlFR4; //! FR4 computed radiation length
153 
154  ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class
155 };
156 
157 // inline functions
158 
161 //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
162 { return fgkHzFoam + fgkHzFR4; }
163 
166 { return fgkHzBergPlastic + fgkHzDaughter; }
167 
170 { return TotalHzPlane() + TotalHzDaughter(); }
171 
173 inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const
174 { return Form("%s%d",fgkQuadrantMLayerName,chamber); }
175 
177 inline TString AliMUONSt1GeometryBuilderV2::QuadrantMFLayerName(Int_t chamber) const
178 { return Form("%s%d",fgkQuadrantMFLayerName,chamber); }
179 
181 inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const
182 { return Form("%s%d",fgkQuadrantNLayerName,chamber); }
183 
185 inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const
186 { return Form("%s%d",fgkQuadrantFLayerName,chamber); }
187 
189 inline TString AliMUONSt1GeometryBuilderV2::PlaneSegmentName(Int_t segNumber) const
190 { return Form("S%.3d", segNumber); }
191 
193 inline TString AliMUONSt1GeometryBuilderV2::FoamBoxName(Int_t segNumber) const
194 { return Form("S%.3d", segNumber + fgkFoamBoxNameOffset); }
195 
197 inline TString AliMUONSt1GeometryBuilderV2::FR4BoxName(Int_t segNumber) const
198 { return Form("S%.3d", segNumber + fgkFR4BoxNameOffset); }
199 
200 #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H
TString QuadrantNLayerName(Int_t chamber) const
Return nearer quadrant layer name for chamber chamber.
static const char * fgkQuadrantMLayerName
prefix for automatic volume naming
void CreateQuadrantLayersAsAssemblies(Int_t chamber)
Abstract base class for geometry construction per module(s)
AliMUON * fMUON
the MUON detector class
TString QuadrantMFLayerName(Int_t chamber) const
Return middle quadrant frame layer name for chamber chamber.
static const GReal_t fgkHzGas
ArCO2 Gas.
static const GReal_t fgkMotherThick1
Middle Layer Hz.
static const GReal_t fgkHyBergCopper
Berg connector parameter.
static const GReal_t fgkMotherPhiL2
Near and Far Layer Sphi.
static const GReal_t fgkHzBergCopper
Berg connector (80 pt)
static const char * fgkQuadrantMFLayerName
prefix for automatic volume naming
AliMUONSt1GeometryBuilderV2 & operator=(const AliMUONSt1GeometryBuilderV2 &rhs)
Not implemented.
static const GReal_t fgkMotherIR1
Middle Layer Rin.
TString PlaneSegmentName(Int_t segNumber) const
Return plane segment name for segment segNumber.
static const char * fgkQuadrantNLayerName
prefix for automatic volume naming
static const GReal_t fgkMotherOR1
Middle Layer Rout.
static const GReal_t fgkDeltaFilleEtamY
Electronics parameter.
static const GReal_t fgkHyKapton
Kapton parameter.
AliDetector class for MUON subsystem providing simulation data management.
Definition: AliMUON.h:37
static const Int_t fgkDaughterCopyNoOffset
copy number offset for daughter boards positions in non-bending plane
static const GReal_t fgkHzDaughter
Daughter board.
static const char * fgkQuadrantFLayerName
prefix for automatic volume naming
TString QuadrantFLayerName(Int_t chamber) const
Return farther quadrant layer name for chamber chamber.
static const GReal_t fgkHxKapton
Kapton parameter.
static const GReal_t fgkHyHole
foam hole paremeter
void CreateFoamBox(Int_t segNumber, const TVector2 &dimensions)
Double_t GReal_t
static const GReal_t fgkDeltaFilleEtamX
Electronics parameter.
GReal_t TotalHzDaughter() const
Return total daughter plane half Size.
static const GReal_t fgkHzFR4
FR4 of mechanical plane.
TString QuadrantMLayerName(Int_t chamber) const
Return middle quadrant layer name for chamber chamber.
static const GReal_t fgkHxBergPlastic
Berg connector parameter.
TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const
static const GReal_t fgkMotherPhiU1
Middle Layer Endphi.
static const GReal_t fgkOffsetY
Offset Y.
MUON Station1 detailed geometry construction class.
static const GReal_t fgkPadXOffsetBP
Horizontal offset in bending plane.
A sector (quadrant) of the MUON chamber of stations 1 and 2.
Definition: AliMpSector.h:34
static const GReal_t fgkMotherPhiL1
Middle Layer Sphi.
static const GReal_t fgkHzBergPlastic
Berg connector.
static const GReal_t fgkHzSnPb
Pad/Kapton connection (66 pt)
static const GReal_t fgkMotherIR2
Near and Far Layer Rin.
static const GReal_t fgkOffsetX
Offset X.
static const GReal_t fgkHzFoam
Foam of mechanicalplane.
void PlaceSector(const AliMpSector *sector, TExMap specialMap, const TVector3 &where, Bool_t reflectZ, Int_t chamber)
static const GReal_t fgkFrameOffset
Frame offset.
static const GReal_t fgkDeltaQuadLHC
LHC Origin wrt Quadrant Origin.
GReal_t TotalHzPlane() const
Return total mechanical plane half Size.
AliMUON * muon()
static const GReal_t fgkPadYOffsetBP
Vertical offset in bending plane.
TString FoamBoxName(Int_t segNumber) const
Return foam box name for segment segNumber.
void CreatePlaneSegment(Int_t segNumber, const TVector2 &dimensions, Int_t nofHoles)
static const GReal_t fgkHyBergPlastic
Berg connector parameter.
static const GReal_t fgkHxBergCopper
Berg connector parameter.
GReal_t TotalHz() const
Return total plane half Size.
static const GReal_t fgkHxDaughter
Electronics parameter.
static const GReal_t fgkHzKapton
Kapton.
static const GReal_t fgkHxHole
foam hole paremeter
static const char * fgkQuadrantEnvelopeName
prefix for automatic volume naming
static const GReal_t fgkHyDaughter
Electronics parameter.
static const GReal_t fgkMotherPhiU2
Near and Far Layer Endphi.
TString FR4BoxName(Int_t segNumber) const
Return FR4 box name for segment segNumber.
virtual void SetVolumes()
and eventually the mother volume name should be defined
static const GReal_t fgkMotherThick2
Near and Far Layer Hz.
static const GReal_t fgkMotherOR2
Near and Far Layer Rout.
static const Int_t fgkFR4BoxNameOffset
coefficient for automatic volume naming
static const Int_t fgkFoamBoxNameOffset
coefficient for automatic volume naming
static const GReal_t fgkHzPadPlane
Pad plane.
static const char * fgkHoleName
prefix for automatic volume naming
TString GasVolumeName(const TString &name, Int_t chamber) const
static const char * fgkDaughterName
prefix for automatic volume naming