3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
8 // Authors: David Guez, Ivana Hrivnacova, Marion MacCormick; IPN Orsay
12 // Inherits from AliMUONv1 but with a more detailed
13 // geometrical description of station 1
18 #include "AliMUONv1.h"
19 #include "AliMUONSt1Types.h"
20 #include "AliMUONSt1SpecialMotif.h"
22 //typedef Float_t GReal_t; // for AliGeant3
23 typedef Double_t GReal_t; // for VirtualMC
29 class AliMUONv2 : public AliMUONv1
33 AliMUONv2(const char* name, const char* title);
34 AliMUONv2(const AliMUONv2& rMUON);
37 virtual Int_t IsVersion() const;
38 virtual void CreateMaterials();
39 virtual void CreateGeometry();
44 AliMUONv2& operator = (const AliMUONv2& rhs);
45 virtual Int_t GetChamberId(Int_t volId) const;
51 void CreateDaughterBoard();
52 void CreateInnerLayers();
53 void CreateQuadrant(Int_t chamber);
54 void CreateFoamBox(const char* name,const TVector2& dimensions);
55 void CreatePlaneSegment(const char* name,const TVector2& dimensions,
57 void CreateFrame(Int_t chamber);
59 void PlaceInnerLayers(Int_t chamber);
60 void PlaceSector(AliMpSector* sector, TSpecialMap specialMap,
61 const TVector3& where, Bool_t reflectZ, Int_t chamber);
63 TString QuadrantMLayerName(Int_t chamber) const;
64 TString QuadrantNLayerName(Int_t chamber) const;
65 TString QuadrantFLayerName(Int_t chamber) const;
66 TString GasVolumeName(const TString& name, Int_t chamber) const;
68 void AddChamberGid(Int_t id,Int_t volName,Int_t idx);
69 Bool_t IsInChamber(Int_t ich, Int_t volGid) const;
71 GReal_t TotalHzPlane() const ; // Total mechanical plane half Size
72 GReal_t TotalHzDaughter() const ; // Total daughter plane half Size
73 GReal_t TotalHz() const ; // Total plane half Size
77 static const GReal_t fgkHzPadPlane; // Pad plane
78 static const GReal_t fgkHzFoam; // Foam of mechanicalplane
79 static const GReal_t fgkHzFR4; // FR4 of mechanical plane
80 static const GReal_t fgkHzSnPb; // Pad/Kapton connection (66 pt)
81 static const GReal_t fgkHzKapton; // Kapton
82 static const GReal_t fgkHzBergPlastic; // Berg connector
83 static const GReal_t fgkHzBergCopper; // Berg connector (80 pt)
84 static const GReal_t fgkHzDaughter; // Daughter board
85 static const GReal_t fgkHzGas; // ArCO2 Gas
87 // Sensitive copper pads, foam layer, PCB and electronics model parameters
88 static const GReal_t fgkHxHole;
89 static const GReal_t fgkHyHole;
90 static const GReal_t fgkHxBergPlastic;
91 static const GReal_t fgkHyBergPlastic;
92 static const GReal_t fgkHxBergCopper;
93 static const GReal_t fgkHyBergCopper;
94 static const GReal_t fgkHxKapton;
95 static const GReal_t fgkHyKapton;
96 static const GReal_t fgkHxDaughter;
97 static const GReal_t fgkHyDaughter;
98 static const GReal_t fgkOffsetX;
99 static const GReal_t fgkOffsetY;
100 static const GReal_t fgkDeltaFilleEtamX;
101 static const GReal_t fgkDeltaFilleEtamY;
103 static const GReal_t fgkDeltaQuadLHC; //LHC Origin wrt Quadrant Origin
104 static const GReal_t fgkFrameOffset;
106 // Quadrant Mother volume - TUBS1
107 static const GReal_t fgkMotherIR1;
108 static const GReal_t fgkMotherOR1;
109 static const GReal_t fgkMotherThick1;
110 static const GReal_t fgkMotherPhiL1;
111 static const GReal_t fgkMotherPhiU1;
113 // Quadrant Mother volume - TUBS2 (2 copies at different Z's)
114 static const GReal_t fgkMotherIR2;
115 static const GReal_t fgkMotherOR2;
116 static const GReal_t fgkMotherThick2;
117 static const GReal_t fgkMotherPhiL2;
118 static const GReal_t fgkMotherPhiU2;
120 static const char* fgkHoleName; // prefix for automatic volume naming
121 static const char* fgkQuadrantMLayerName;// prefix for automatic volume naming
122 static const char* fgkQuadrantNLayerName;// prefix for automatic volume naming
123 static const char* fgkQuadrantFLayerName;// prefix for automatic volume naming
124 static const char* fgkDaughterName; // prefix for automatic volume naming
125 static const char fgkFoamLayerSuffix; // suffix for automatic volume naming
129 Float_t fRadlCopper; //! copper computed radiation length
130 Float_t fRadlFoam; //! foam computed radiation length
131 Float_t fRadlFR4; //! FR4 computed radiation length
132 TArrayI* fChamberV2[2];// Sensitive volumes IDs
134 ClassDef(AliMUONv2,1) // MUON Detector base class
139 inline Int_t AliMUONv2::IsVersion () const
142 inline GReal_t AliMUONv2::TotalHzPlane() const
143 //{ return fgkHzPadPlane + fgkHzFoam + fgkHzFR4; }
144 { return fgkHzFoam + fgkHzFR4; }
146 inline GReal_t AliMUONv2::TotalHzDaughter() const
147 { return fgkHzBergPlastic + fgkHzDaughter; }
149 inline GReal_t AliMUONv2::TotalHz() const
150 { return TotalHzPlane() + TotalHzDaughter(); }
152 inline TString AliMUONv2::QuadrantMLayerName(Int_t chamber) const
153 { return Form("%s%d",fgkQuadrantMLayerName,chamber); }
155 inline TString AliMUONv2::QuadrantNLayerName(Int_t chamber) const
156 { return Form("%s%d",fgkQuadrantNLayerName,chamber); }
158 inline TString AliMUONv2::QuadrantFLayerName(Int_t chamber) const
159 { return Form("%s%d",fgkQuadrantFLayerName,chamber); }
161 inline void AliMUONv2::AddChamberGid(Int_t id,Int_t volName,Int_t idx)
162 { fChamberV2[id]->AddAt(volName,idx); }
165 #endif //ALI_MUON_V2_H