1 #ifndef ALIMUONCONSTANTS_H
2 #define ALIMUONCONSTANTS_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4 * See cxx source for full Copyright notice */
7 // Revision of includes 07/05/2004
10 /// \class AliMUONConstants
11 /// \brief MUON global constants
15 class AliMUONConstants : public TObject {
17 /// Return number of chambers
18 static Int_t NCh() {return fgNCh;}
19 /// Return number of tracking chambers
20 static Int_t NTrackingCh() {return fgNTrackingCh;}
21 /// Return number of tracking stations
22 static Int_t NTrackingSt() {return fgNTrackingSt;}
23 /// Return number of trigger chambers
24 static Int_t NTriggerCh() {return fgNTriggerCh;}
25 /// Return number of trigger circuits
26 static Int_t NTriggerCircuit() {return fgNTriggerCircuit;}
27 /// Return number of detection element
28 static Int_t NDetElem() {return fgNDetElem;}
29 /// Return number of geometry modules
30 static Int_t NGeomModules() {return fgNGeomModules;}
31 /// Return position of chamber i
32 static Float_t DefaultChamberZ(Int_t i) {return fgDefaultChamberZ[i];}
33 /// Return ratio between trigger chambers
34 static Float_t DefaultRatioTriggerChamber(Int_t i) {return fgDefaultRatioTriggerChamber[i];}
35 /// Return Inclination with respect the vertical axis of stations 345
36 static Float_t St345Inclination() {return fgSt345inclination;}
37 /// Return pointer to array of positions
38 static Float_t* DefaultChamberZ() {return fgDefaultChamberZ;}
39 /// Return chamber i inner diameter
40 static Float_t Dmin(Int_t i) {return fgDmin[i];}
41 /// Return chamber i inner radius
42 static Float_t Rmin(Int_t i) {return Dmin(i)/2.0;}
43 /// Return chamber i outer diameter
44 static Float_t Dmax(Int_t i) {return fgDmax[i];}
45 /// Return chamber i outer radius
46 static Float_t Rmax(Int_t i) {return Dmax(i)/2.0;}
47 /// Return maximum zoom for event display
48 static Int_t MaxZoom() {return fgMaxZoom;}
49 /// Return half-distance between two half-chambers
50 static Float_t DzCh() {return fgDzCh;}
51 /// Return half-distance between two slats
52 static Float_t DzSlat() {return fgDzSlat;}
53 /// Return chamber number according z position of hit.
54 static Int_t ChamberNumber(Float_t z);
55 /// Return SqrtKx3 for Slat
56 static Float_t SqrtKx3() {return fgSqrtKx3;}
57 /// Return SqrtKy3 for Slat
58 static Float_t SqrtKy3() {return fgSqrtKy3;}
59 /// Return SqrtKx3 for Station 1 & 2
60 static Float_t SqrtKx3St1() {return fgSqrtKx3St1;}
61 /// Return SqrtKy3 for Station 1 & 2
62 static Float_t SqrtKy3St1() {return fgSqrtKy3St1;}
63 /// Return charge correlation (needed for response and for cluster finder !?)
64 static Float_t ChargeCorrel() {return fgChargeCorrel;}
65 /// Return charge correlation for Station 1 & 2 (needed for response and for cluster finder !?)
66 static Float_t ChargeCorrelSt1() {return fgChargeCorrelSt1;}
68 static Float_t Pitch() {return fgPitch;}
69 /// Return wire pitch for Station 1 & 2
70 static Float_t PitchSt1() {return fgPitchSt1;}
71 /// Return coil z-position
72 static Double_t CoilZ() {return fgCoilZ;}
73 /// Return coil lenght
74 static Double_t CoilL() {return fgCoilL;}
75 /// Return yoke z-position
76 static Double_t YokeZ() {return fgYokeZ;}
77 /// Return yoke lenght
78 static Double_t YokeL() {return fgYokeL;}
79 /// Return the z position of the end of the absorber
80 static Double_t ZAbsorberEnd() {return fgZAbsorberEnd;}
81 /// Return the number of elements making the absorber
82 static Int_t NAbsorberElements() {return fgNAbsorberElements;}
83 /// Return the z position of the element "iElement" making the absorber
84 static Double_t ZAbsorberElement(Int_t iElement) {return ((iElement >= 0) && (iElement < fgNAbsorberElements)) ? fgZAbsorberElement[iElement] : 0.;}
85 /// Return the radiation lenght of the element "iElement" making the inner part of the absorber
86 static Double_t X0AbsorberIn(Int_t iElement) {return ((iElement >= 0) && (iElement < fgNAbsorberElements)) ? fgX0AbsorberIn[iElement] : -1.;}
87 /// Return the radiation lenght of the element "iElement" making the outer part of the absorber
88 static Double_t X0AbsorberOut(Int_t iElement) {return ((iElement >= 0) && (iElement < fgNAbsorberElements)) ? fgX0AbsorberOut[iElement] : -1.;}
89 /// Return chamber thickness in X0
90 static Double_t ChamberThicknessInX0() {return fgChamberThicknessInX0;}
91 /// Return Trigger ToF Limit (75 ns)
92 static Float_t TriggerTofLimit() {return fgkTriggerTofLimit;}
95 /// Default constructor
96 AliMUONConstants() : TObject() {}
98 virtual ~AliMUONConstants(){}
101 static Int_t fgNCh; ///< Number of Chambers
102 static Int_t fgNTrackingCh; ///< Number of Tracking Chambers
103 static Int_t fgNTrackingSt; ///< Number of Tracking Stations
104 static Int_t fgNTriggerCh; ///< Number of Trigger Chambers
105 static Int_t fgNTriggerCircuit; ///< Number of Trigger Circuits
106 static Int_t fgNDetElem; ///< Number of Detection Elements.
107 static Int_t fgNGeomModules; ///< Number of Geometry modules
109 static Float_t fgDefaultChamberZ[14]; //!< Z-positions of chambers
110 static Float_t fgDefaultRatioTriggerChamber[4]; ///< Ratio between trigger chambers
111 static Float_t fgSt345inclination; //!< Inclination with respect the vertical axis of stations 345
112 static Float_t fgDmin[7]; //!< Inner diameter
113 static Float_t fgDmax[7]; //!< Outer diameter
115 static Float_t fgDzCh; ///< Half-distance between two half-chambers
116 static Float_t fgDzSlat; ///< Half-distance between two slat on the same chamber
117 static Float_t fgSqrtKx3; ///< SqrtKx3 for St2 & Slat
118 static Float_t fgSqrtKy3; ///< SqrtKy3 for St2 & Slat
119 static Float_t fgSqrtKx3St1; ///< SqrtKx3 for Station 1
120 static Float_t fgSqrtKy3St1; ///< SqrtKy3 for Station 1
122 static Float_t fgChargeCorrel; ///< Charge correlation for St2 & Slats
123 static Float_t fgChargeCorrelSt1; ///< Charge correlation for Station 1
125 static Float_t fgPitch; ///< Wire pitch for St2 & Slats
126 static Float_t fgPitchSt1; ///< Wire pitch for Station 1
128 static Double_t fgChamberThicknessInX0; ///< default chamber thickness in X0 for reconstruction
130 static Double_t fgCoilZ; ///< Coil z-position
131 static Double_t fgCoilL; ///< Coil lenght
132 static Double_t fgYokeZ; ///< Yoke z-position
133 static Double_t fgYokeL; ///< Yoke lenght
135 static Double_t fgZAbsorberEnd; ///< Z position of the end of the absorber
136 static Int_t fgNAbsorberElements; ///< Number of elements making the absorber
137 static Double_t fgZAbsorberElement[5]; ///< Z positions of elements making the absorber
138 static Double_t fgX0AbsorberIn[5]; ///< Radiation lenght of materials in the inner part of the absorber (theta > 3 degrees)
139 static Double_t fgX0AbsorberOut[5]; ///< Radiation lenght of materials in the outer part of the absorber (theta > 3 degrees)
141 static Int_t fgMaxZoom; ///< Maximum Zoom for event display
142 static Float_t fgkTriggerTofLimit; ///< Particle above this threshold are discarded in trigger algorithm
144 ClassDef(AliMUONConstants, 0) // MUON global constants