Line data Source code
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 AliMUONTriggerGeometryBuilder
9 : /// \brief MUON Trigger stations geometry construction class
10 : ///
11 : /// \author Philippe Crochet (LPCCFd)
12 :
13 : #ifndef ALI_MUON_TRIGGER_GEOMETRY_BUILDER_H
14 : #define ALI_MUON_TRIGGER_GEOMETRY_BUILDER_H
15 :
16 : #include "AliMUONVGeometryBuilder.h"
17 :
18 : class AliMUON;
19 :
20 : class AliMUONTriggerGeometryBuilder : public AliMUONVGeometryBuilder
21 : {
22 : public:
23 : AliMUONTriggerGeometryBuilder(AliMUON* muon);
24 : AliMUONTriggerGeometryBuilder();
25 : virtual ~AliMUONTriggerGeometryBuilder();
26 :
27 : // methods
28 : virtual void CreateGeometry();
29 : virtual void SetVolumes();
30 : virtual void SetTransformations();
31 : virtual void SetSensitiveVolumes();
32 :
33 : /// Do not apply global transformation (geometry is defined in the new ALICE reference frame)
34 10 : virtual bool ApplyGlobalTransformation() { return false; }
35 :
36 : protected:
37 :
38 : private:
39 : /// Not implemented
40 : AliMUONTriggerGeometryBuilder(const AliMUONTriggerGeometryBuilder& rhs);
41 : /// Not implemented
42 : AliMUONTriggerGeometryBuilder& operator = (const AliMUONTriggerGeometryBuilder& rhs);
43 :
44 : // methods
45 : void BuildChamberPrototype(Int_t icount) const;
46 : void BuildRPCSupportsVertical(Int_t& iVolNum, Int_t icount) const;
47 : void BuildRPCSupportsHorizontal(Int_t icount) const;
48 : void BuildAngularSupportForChambers(Int_t icount) const;
49 : void BuildGasPipes(Int_t icount) const;
50 : void BuildChamberTypeA(Int_t& iVolNum, Int_t icount);
51 : void BuildChamberTypeB(Int_t& iVolNum, Int_t icount);
52 : void BuildChamberTypeD(Int_t& iVolNum, Int_t icount);
53 : void BuildChamberTypeE(Int_t& iVolNum, Int_t icount);
54 : void BuildChamberTypeF(Int_t& iVolNum, Int_t icount);
55 :
56 : // constants
57 :
58 : static const Float_t fgkDXZERO; ///< vertical gap between right and left chambers (kDXZERO*2=4cm)
59 :
60 : // main distances for chamber definition in first plane/first station
61 : static const Float_t fgkXMIN; ///< xmin distance in first plane/first station
62 : static const Float_t fgkXMED; ///< xmed distance in first plane/first station
63 : static const Float_t fgkXMAX; ///< xmax distance in first plane/first station
64 :
65 : // 090704 kXMAX changed from 272 to 255.
66 : // (see fig.2-4 & 2-5 of Local Trigger Board PRR)
67 : // segmentation updated accordingly
68 : static const Float_t fgkYMIN; ///< add
69 : static const Float_t fgkYMAX; ///< add
70 :
71 : // inner/outer radius of flange between beam shield. and chambers (1/station)
72 : // static const Float_t fgkRMIN[2]={50.,50.};
73 : // static const Float_t fgkRMAX[2]={64.,68.};
74 : // z position of the middle of the gas gap in mother vol
75 : static const Float_t fgkZm; ///< inner radius of flange between beam shield. and chambers (1/station)
76 : static const Float_t fgkZp; ///< outer radius of flange between beam shield. and chambers (1/station)
77 :
78 : static const Float_t fgkYVSup[4]; ///< y positions of vertical supports
79 :
80 : static const Float_t fgkSizeVSupExt[3]; ///< ext dimensions of vertical supports
81 : static const Float_t fgkSizeVSupInt[3]; ///< int dimensions of vertical supports
82 :
83 : static const Float_t fgkSizeSupport1V[3]; ///< transverse dimensions of 1V angular supports
84 : static const Float_t fgkSizeSupport1H[3]; ///< transverse dimensions of 1H angular supports
85 : // z should be 1.4 in the installed set-up
86 : static const Float_t fgkSizeSupport2V[3]; ///< transverse dimensions of 2V angular supports
87 : static const Float_t fgkSizeSupport2H[3]; ///< transverse dimensions of 2H angular supports
88 : static const Float_t fgkSizeSupportXV[3]; ///< transverse dimensions of XV angular supports
89 : static const Float_t fgkSizeSupportXH[3]; ///< transverse dimensions of XH angular supports
90 :
91 : static const Float_t fgkSizeSupportCable[3]; /// transverse dimensions of horizontal cable supports
92 : static const Float_t fgkSizeGasPipe[3]; ///< dimensions of gas pipes (inner and outer radius)
93 :
94 : static const Float_t fgkOffsetGasPipe; ///< Position of gas pipe with respect to angular support
95 : static const Float_t fgkAvoidExtrusion; ///< Small cut on some volumes to avoid extrusion from SC1x
96 :
97 : //
98 : TString GetVolumeName(const TString& volume, Int_t icount) const;
99 : TString GetVolEnvName(Int_t icount, Int_t ienv) const;
100 : TString GetVolAluAngSuppName(
101 : const TString& type1234X,
102 : const TString& typeHV,
103 : Int_t icount) const;
104 : TString GetVolEnvSuppAngName(
105 : const TString& type1234X,
106 : const TString& typeHV,
107 : const TString& typeABDEF,
108 : Int_t icount, Int_t ivol) const;
109 : TString GetVolEnvInoxGasPipeName(
110 : const TString& type12,
111 : const TString& typeABCDEF,
112 : Int_t icount, Int_t ivol) const;
113 :
114 :
115 : // data members
116 : AliMUON* fMUON; ///< the MUON detector class
117 : Int_t* fIdtmed; //!<! tracking media
118 : Int_t fIdAir; //!<! medium 1
119 : Int_t fIdAlu1; //!<! medium 4
120 : Int_t fIdInox; //!<! medium 29 Stainless Steel (18%Cr,9%Ni,Fe)
121 : Float_t fYEnvPsave; //!<! add
122 : Float_t fYEnvMsave; //!<! add
123 : Float_t fDYsave; //!<! add
124 : Float_t fDXsave; //!<! add
125 : TGeoRotation fRsupportpipe; ///< pipe support rotation
126 :
127 52 : ClassDef(AliMUONTriggerGeometryBuilder,2) // MUON Trigger stations geometry construction class
128 : };
129 :
130 : #endif //ALI_MUON_TRIGGER_GEOMETRY_BUILDER_H
|