]>
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 | // |
7 | // Class AliMUONSt1GeometryBuilderV2 | |
8 | // --------------------------------- | |
9 | // MUON Station1 detailed geometry construction class. | |
10 | // | |
11 | // Authors: 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 | ||
d1cd2474 | 16 | #include "AliMUONSt1Types.h" |
d1cd2474 | 17 | #include "AliMUONVGeometryBuilder.h" |
18 | ||
19 | //typedef Float_t GReal_t; // for AliGeant3 | |
20 | typedef Double_t GReal_t; // for VirtualMC | |
21 | ||
22 | class TTree; | |
23 | class TVector2; | |
24 | class TVector3; | |
25 | ||
26 | class AliMpSector; | |
27 | class AliMUON; | |
28 | ||
29 | class AliMUONSt1GeometryBuilderV2 : public AliMUONVGeometryBuilder | |
30 | { | |
31 | public: | |
32 | AliMUONSt1GeometryBuilderV2(AliMUON* muon); | |
33 | AliMUONSt1GeometryBuilderV2(const AliMUONSt1GeometryBuilderV2& rMUON); | |
34 | AliMUONSt1GeometryBuilderV2(); | |
35 | virtual ~AliMUONSt1GeometryBuilderV2(); | |
36 | ||
37 | virtual void CreateMaterials(); | |
38 | virtual void CreateGeometry(); | |
39 | virtual void SetTransformations(); | |
40 | virtual void SetSensitiveVolumes(); | |
41 | ||
42 | protected: | |
43 | AliMUONSt1GeometryBuilderV2& operator = (const AliMUONSt1GeometryBuilderV2& rhs); | |
44 | ||
45 | private: | |
d1cd2474 | 46 | // Constants |
47 | // | |
48 | static const GReal_t fgkHzPadPlane; // Pad plane | |
49 | static const GReal_t fgkHzFoam; // Foam of mechanicalplane | |
50 | static const GReal_t fgkHzFR4; // FR4 of mechanical plane | |
51 | static const GReal_t fgkHzSnPb; // Pad/Kapton connection (66 pt) | |
52 | static const GReal_t fgkHzKapton; // Kapton | |
53 | static const GReal_t fgkHzBergPlastic; // Berg connector | |
54 | static const GReal_t fgkHzBergCopper; // Berg connector (80 pt) | |
55 | static const GReal_t fgkHzDaughter; // Daughter board | |
56 | static const GReal_t fgkHzGas; // ArCO2 Gas | |
57 | ||
58 | // Sensitive copper pads, foam layer, PCB and electronics model parameters | |
59 | static const GReal_t fgkHxHole; // foam hole paremeter | |
60 | static const GReal_t fgkHyHole; // foam hole paremeter | |
61 | static const GReal_t fgkHxBergPlastic; // Berg connector parameter | |
62 | static const GReal_t fgkHyBergPlastic; // Berg connector parameter | |
63 | static const GReal_t fgkHxBergCopper; // Berg connector parameter | |
64 | static const GReal_t fgkHyBergCopper; // Berg connector parameter | |
65 | static const GReal_t fgkHxKapton; // Kapton parameter | |
66 | static const GReal_t fgkHyKapton; // Kapton parameter | |
67 | static const GReal_t fgkHxDaughter; // Electronics parameter | |
68 | static const GReal_t fgkHyDaughter; // Electronics parameter | |
69 | static const GReal_t fgkOffsetX; // Offset X | |
70 | static const GReal_t fgkOffsetY; // Offset Y | |
71 | static const GReal_t fgkDeltaFilleEtamX; // Electronics parameter | |
72 | static const GReal_t fgkDeltaFilleEtamY; // Electronics parameter | |
73 | ||
74 | static const GReal_t fgkDeltaQuadLHC; // LHC Origin wrt Quadrant Origin | |
75 | static const GReal_t fgkFrameOffset; // Frame offset | |
76 | ||
b367fd8f | 77 | // Pad planes offsets |
78 | static const GReal_t fgkPadXOffsetBP; // Horizontal offset in bending plane | |
79 | static const GReal_t fgkPadYOffsetBP; // Vertical offset in bending plane | |
80 | ||
d1cd2474 | 81 | // Quadrant Mother volume - TUBS1 |
82 | static const GReal_t fgkMotherIR1; // Middle Layer Rin | |
83 | static const GReal_t fgkMotherOR1; // Middle Layer Rout | |
84 | static const GReal_t fgkMotherThick1; // Middle Layer Hz | |
85 | static const GReal_t fgkMotherPhiL1; // Middle Layer Sphi | |
86 | static const GReal_t fgkMotherPhiU1; // Middle Layer Endphi | |
87 | ||
88 | // Quadrant Mother volume - TUBS2 (2 copies at different Z's) | |
89 | static const GReal_t fgkMotherIR2; // Near and Far Layer Rin | |
90 | static const GReal_t fgkMotherOR2; // Near and Far Layer Rout | |
91 | static const GReal_t fgkMotherThick2; // Near and Far Layer Hz | |
92 | static const GReal_t fgkMotherPhiL2; // Near and Far Layer Sphi | |
93 | static const GReal_t fgkMotherPhiU2; // Near and Far Layer Endphi | |
94 | ||
95 | static const char* fgkHoleName; // prefix for automatic volume naming | |
b367fd8f | 96 | static const char* fgkQuadrantEnvelopeName; // prefix for automatic volume naming |
d1cd2474 | 97 | static const char* fgkQuadrantMLayerName;// prefix for automatic volume naming |
98 | static const char* fgkQuadrantNLayerName;// prefix for automatic volume naming | |
99 | static const char* fgkQuadrantFLayerName;// prefix for automatic volume naming | |
100 | static const char* fgkDaughterName; // prefix for automatic volume naming | |
101 | static const char fgkFoamLayerSuffix; // suffix for automatic volume naming | |
e8c253a0 | 102 | static const Int_t fgkDaughterCopyNoOffset; // copy number offset for daugher |
103 | // boards positions in non-bending plane | |
d1cd2474 | 104 | |
105 | // Methods | |
106 | // | |
107 | void CreateHole(); | |
108 | void CreateDaughterBoard(); | |
109 | void CreateInnerLayers(); | |
110 | void CreateQuadrant(Int_t chamber); | |
111 | void CreateFoamBox(const char* name,const TVector2& dimensions); | |
112 | void CreatePlaneSegment(const char* name,const TVector2& dimensions, | |
113 | Int_t nofHoles); | |
114 | void CreateFrame(Int_t chamber); | |
115 | ||
116 | void PlaceInnerLayers(Int_t chamber); | |
117 | void PlaceSector(AliMpSector* sector, SpecialMap specialMap, | |
118 | const TVector3& where, Bool_t reflectZ, Int_t chamber); | |
119 | ||
b367fd8f | 120 | TString QuadrantEnvelopeName(Int_t chamber, Int_t quadrant) const; |
d1cd2474 | 121 | TString QuadrantMLayerName(Int_t chamber) const; |
122 | TString QuadrantNLayerName(Int_t chamber) const; | |
123 | TString QuadrantFLayerName(Int_t chamber) const; | |
124 | TString GasVolumeName(const TString& name, Int_t chamber) const; | |
125 | ||
126 | void AddChamberGid(Int_t id,Int_t volName,Int_t idx); | |
127 | //Bool_t IsInChamber(Int_t ich, Int_t volGid) const; | |
128 | ||
129 | GReal_t TotalHzPlane() const ; // Total mechanical plane half Size | |
130 | GReal_t TotalHzDaughter() const ; // Total daughter plane half Size | |
131 | GReal_t TotalHz() const ; // Total plane half Size | |
132 | ||
133 | // Data members | |
134 | // | |
135 | //Float_t fRadlCopper; //! copper computed radiation length | |
136 | //Float_t fRadlFoam; //! foam computed radiation length | |
137 | //Float_t fRadlFR4; //! FR4 computed radiation length | |
138 | AliMUON* fMUON; // the MUON detector class | |
139 | ||
140 | ClassDef(AliMUONSt1GeometryBuilderV2,1) // MUON Detector base class | |
141 | }; | |
142 | ||
143 | // inline functions | |
144 | ||
145 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzPlane() const | |
146 | //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; } | |
147 | { return fgkHzFoam + fgkHzFR4; } | |
148 | ||
149 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHzDaughter() const | |
150 | { return fgkHzBergPlastic + fgkHzDaughter; } | |
151 | ||
152 | inline GReal_t AliMUONSt1GeometryBuilderV2::TotalHz() const | |
153 | { return TotalHzPlane() + TotalHzDaughter(); } | |
154 | ||
155 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantMLayerName(Int_t chamber) const | |
156 | { return Form("%s%d",fgkQuadrantMLayerName,chamber); } | |
157 | ||
158 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantNLayerName(Int_t chamber) const | |
159 | { return Form("%s%d",fgkQuadrantNLayerName,chamber); } | |
160 | ||
161 | inline TString AliMUONSt1GeometryBuilderV2::QuadrantFLayerName(Int_t chamber) const | |
162 | { return Form("%s%d",fgkQuadrantFLayerName,chamber); } | |
163 | ||
164 | #endif //ALI_MUON_ST1_GEOMETRY_BUILDER_V2_H |