]>
Commit | Line | Data |
---|---|---|
0f4a7374 | 1 | #ifndef ALITOFGEOMETRY_H |
2 | #define ALITOFGEOMETRY_H | |
3 | /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. * | |
4 | * See cxx source for full Copyright notice */ | |
5 | ||
6 | /* $Id$ */ | |
7 | ||
8 | /////////////////////////////////////////////////////////////////////////////// | |
9 | // // | |
10 | // TOF geometry class // | |
11 | // // | |
12 | /////////////////////////////////////////////////////////////////////////////// | |
13 | ||
14 | ||
15 | ||
16 | class AliTOFGeometry{ | |
17 | ||
18 | public: | |
19 | AliTOFGeometry(); | |
20 | virtual ~AliTOFGeometry(); | |
21 | ||
74ea065c | 22 | static Int_t NStripA() { return kNStripA;}; |
23 | static Int_t NStripB() { return kNStripB;}; | |
24 | static Int_t NStripC() { return kNStripC;}; | |
25 | static Int_t NpadX() { return kNpadX;}; | |
26 | static Int_t NpadZ() { return kNpadZ;}; | |
27 | static Int_t NSectors() { return kNSectors;}; | |
28 | static Int_t NPlates() { return kNPlates;}; | |
29 | static Int_t NPadXSector() { return (kNStripA + 2*kNStripB + | |
30 | 2*kNStripC)*kNpadX*kNpadZ;}; | |
0f4a7374 | 31 | static Int_t TimeDiff() { return fgkTimeDiff;}; |
74ea065c | 32 | static Int_t MaxTOFTree() { return kMaxTOFTree;}; |
0f4a7374 | 33 | |
34 | ||
74ea065c | 35 | static Float_t RinTOF() { return fgkxTOF;}; |
0f4a7374 | 36 | static Float_t Rmin() { return fgkRmin;}; |
37 | static Float_t Rmax() { return fgkRmax;}; | |
38 | static Float_t ZlenA() { return fgkZlenA;}; | |
39 | static Float_t ZlenB() { return fgkZlenB;}; | |
40 | static Float_t ZlenC() { return fgkZlenC;}; | |
41 | static Float_t XPad() { return fgkXPad;}; | |
42 | static Float_t ZPad() { return fgkZPad;}; | |
43 | static Float_t MaxhZtof() { return fgkMaxhZtof;}; | |
44 | ||
45 | ||
46 | static Float_t SigmaForTail1() { return fgkSigmaForTail1;}; | |
47 | static Float_t SigmaForTail2() { return fgkSigmaForTail2;}; | |
48 | static Float_t SpeedOfLight() { return fgkSpeedOfLight;}; | |
49 | static Float_t PionMass() { return fgkPionMass;}; | |
50 | static Float_t KaonMass() { return fgkKaonMass;}; | |
51 | static Float_t ProtonMass() { return fgkProtonMass;}; | |
52 | static Float_t ElectronMass() { return fgkElectronMass;}; | |
53 | static Float_t MuonMass() { return fgkMuonMass;}; | |
54 | ||
74ea065c | 55 | static Double_t GetAlpha() { return 2 * 3.14159265358979323846 / kNSectors; }; |
0f4a7374 | 56 | |
57 | ||
58 | virtual void Init(); | |
74ea065c | 59 | virtual void SetHoles(Bool_t holes) {fHoles = holes;}; |
60 | virtual Bool_t GetHoles() const {return fHoles;}; | |
61 | virtual Bool_t IsInsideThePad(Int_t *det, Float_t *pos); | |
62 | virtual Float_t DistanceToPad(Int_t *det, Float_t *pos); | |
0f4a7374 | 63 | virtual void GetPos(Int_t *det,Float_t *pos); |
64 | virtual void GetDetID(Float_t *pos,Int_t *det); | |
65 | virtual Int_t GetPlate(Float_t *pos); | |
66 | virtual Int_t GetStrip(Float_t *pos); | |
67 | virtual Int_t GetSector(Float_t *pos); | |
68 | virtual Int_t GetPadX(Float_t *pos); | |
69 | virtual Int_t GetPadZ(Float_t *pos); | |
70 | virtual Float_t GetX(Int_t *det); | |
71 | virtual Float_t GetY(Int_t *det); | |
72 | virtual Float_t GetZ(Int_t *det); | |
73 | virtual Float_t GetMinPlateTheta(Int_t iPlate); | |
74 | virtual Float_t GetMaxPlateTheta(Int_t iPlate); | |
75 | virtual Float_t GetMinStripTheta(Int_t iPlate, Int_t iStrip); | |
76 | virtual Float_t GetMaxStripTheta(Int_t iPlate, Int_t iStrip); | |
77 | virtual Float_t GetStripTheta(Int_t iPlate, Int_t iStrip); | |
78 | virtual Float_t GetAngles(Int_t iplate, Int_t istrip) const {return fAngles[iplate][istrip];}; | |
79 | virtual Float_t GetHeights(Int_t iplate, Int_t istrip) const {return fHeights[iplate][istrip];}; | |
80 | ||
81 | private: | |
82 | ||
58eb5b61 | 83 | enum { |
74ea065c | 84 | kNStripA = 15, // number of strips in A type module |
85 | kNStripB = 19, // number of strips in B type module | |
86 | kNStripC = 20, // number of strips in C type module | |
87 | kNpadX = 48, // Number of pads along X | |
88 | kNpadZ = 2, // Number of pads along Z | |
89 | kNSectors = 18, // Number of Sectors | |
90 | kNPlates = 5, // Number of Plates | |
91 | kMaxNstrip = 20, // Max. number of strips | |
92 | kMaxTOFTree = 5 // numer of geom. levels: | |
58eb5b61 | 93 | }; |
94 | ||
95 | static const Int_t fgkTimeDiff; // Min signal separation (ps) | |
96 | ||
97 | static const Float_t fgkRmin; // Inner radius of the TOF (cm) | |
98 | static const Float_t fgkRmax; // Outer radius of the TOF (cm) | |
99 | static const Float_t fgkZlenA; // length (cm) of the A module | |
100 | static const Float_t fgkZlenB; // length (cm) of the B module | |
101 | static const Float_t fgkZlenC; // length (cm) of the C module | |
102 | static const Float_t fgkXPad; // Pad size in the x direction (cm) | |
103 | static const Float_t fgkZPad; // Pad size in the z direction (cm) | |
104 | static const Float_t fgkMaxhZtof;// Max half z-size of TOF (cm) | |
105 | ||
74ea065c | 106 | static const Float_t fgkxTOF;// Inner TOF Radius used in Reconstruction (cm) |
58eb5b61 | 107 | |
108 | static const Float_t fgkSigmaForTail1;//Sig1 for simulation of TDC tails | |
109 | static const Float_t fgkSigmaForTail2;//Sig2 for simulation of TDC tails | |
110 | static const Float_t fgkSpeedOfLight;// c (10^9 m/s) | |
111 | static const Float_t fgkPionMass;// pion mass (Gev/c^2) | |
112 | static const Float_t fgkKaonMass;// kaon mass (Gev/c^2) | |
113 | static const Float_t fgkProtonMass;// proton mass (Gev/c^2) | |
114 | static const Float_t fgkElectronMass;// electron mass (Gev/c^2) | |
115 | static const Float_t fgkMuonMass;// muon mass (Gev/c^2) | |
116 | ||
117 | ||
118 | static const Float_t fgkDprecMin;//num.prec.tolerance on Thmin | |
119 | static const Float_t fgkDprecMax;//num.prec.tolerance on Thma | |
120 | static const Float_t fgkDprecCen;//num.prec.tolerance on <Theta> | |
74ea065c | 121 | Bool_t fHoles; //logical for geometry version (w/wo holes) |
122 | Float_t fAngles[kNPlates][kMaxNstrip]; //Strip Tilt Angles | |
123 | Float_t fHeights[kNPlates][kMaxNstrip];//Strip heights | |
0f4a7374 | 124 | Float_t fPhiSec; //sector Phi width (deg) |
125 | ||
74ea065c | 126 | ClassDef(AliTOFGeometry,1) // TOF Geometry base class |
0f4a7374 | 127 | }; |
128 | ||
129 | #endif |