]>
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 | ||
22 | static Int_t NStripA() { return fgkNStripA;}; | |
23 | static Int_t NStripB() { return fgkNStripB;}; | |
24 | static Int_t NStripC() { return fgkNStripC;}; | |
25 | static Int_t NpadX() { return fgkNpadX;}; | |
26 | static Int_t NpadZ() { return fgkNpadZ;}; | |
27 | static Int_t NSectors() { return fgkNSectors;}; | |
28 | static Int_t NPlates() { return fgkNPlates;}; | |
29 | static Int_t NPadXSector() { return (fgkNStripA + 2*fgkNStripB + | |
30 | 2*fgkNStripC)*fgkNpadX*fgkNpadZ;}; | |
31 | static Int_t TimeDiff() { return fgkTimeDiff;}; | |
32 | static Int_t MaxTOFTree() { return fgkMaxTOFTree;}; | |
33 | ||
34 | ||
35 | static Float_t Rmin() { return fgkRmin;}; | |
36 | static Float_t Rmax() { return fgkRmax;}; | |
37 | static Float_t ZlenA() { return fgkZlenA;}; | |
38 | static Float_t ZlenB() { return fgkZlenB;}; | |
39 | static Float_t ZlenC() { return fgkZlenC;}; | |
40 | static Float_t XPad() { return fgkXPad;}; | |
41 | static Float_t ZPad() { return fgkZPad;}; | |
42 | static Float_t MaxhZtof() { return fgkMaxhZtof;}; | |
43 | ||
44 | ||
45 | static Float_t SigmaForTail1() { return fgkSigmaForTail1;}; | |
46 | static Float_t SigmaForTail2() { return fgkSigmaForTail2;}; | |
47 | static Float_t SpeedOfLight() { return fgkSpeedOfLight;}; | |
48 | static Float_t PionMass() { return fgkPionMass;}; | |
49 | static Float_t KaonMass() { return fgkKaonMass;}; | |
50 | static Float_t ProtonMass() { return fgkProtonMass;}; | |
51 | static Float_t ElectronMass() { return fgkElectronMass;}; | |
52 | static Float_t MuonMass() { return fgkMuonMass;}; | |
53 | ||
54 | ||
55 | ||
56 | virtual void Init(); | |
57 | virtual void GetPos(Int_t *det,Float_t *pos); | |
58 | virtual void GetDetID(Float_t *pos,Int_t *det); | |
59 | virtual Int_t GetPlate(Float_t *pos); | |
60 | virtual Int_t GetStrip(Float_t *pos); | |
61 | virtual Int_t GetSector(Float_t *pos); | |
62 | virtual Int_t GetPadX(Float_t *pos); | |
63 | virtual Int_t GetPadZ(Float_t *pos); | |
64 | virtual Float_t GetX(Int_t *det); | |
65 | virtual Float_t GetY(Int_t *det); | |
66 | virtual Float_t GetZ(Int_t *det); | |
67 | virtual Float_t GetMinPlateTheta(Int_t iPlate); | |
68 | virtual Float_t GetMaxPlateTheta(Int_t iPlate); | |
69 | virtual Float_t GetMinStripTheta(Int_t iPlate, Int_t iStrip); | |
70 | virtual Float_t GetMaxStripTheta(Int_t iPlate, Int_t iStrip); | |
71 | virtual Float_t GetStripTheta(Int_t iPlate, Int_t iStrip); | |
72 | virtual Float_t GetAngles(Int_t iplate, Int_t istrip) const {return fAngles[iplate][istrip];}; | |
73 | virtual Float_t GetHeights(Int_t iplate, Int_t istrip) const {return fHeights[iplate][istrip];}; | |
74 | ||
75 | private: | |
76 | ||
58eb5b61 | 77 | enum { |
78 | fgkNStripA = 15, // number of strips in A type module | |
79 | fgkNStripB = 19, // number of strips in B type module | |
80 | fgkNStripC = 20, // number of strips in C type module | |
81 | fgkNpadX = 48, // Number of pads along X | |
82 | fgkNpadZ = 2, // Number of pads along Z | |
83 | fgkNSectors = 18, // Number of Sectors | |
84 | fgkNPlates = 5, // Number of Plates | |
85 | fgkMaxNstrip = 20, // Max. number of strips | |
86 | fgkMaxTOFTree = 5 // numer of geom. levels: | |
87 | }; | |
88 | ||
89 | static const Int_t fgkTimeDiff; // Min signal separation (ps) | |
90 | ||
91 | static const Float_t fgkRmin; // Inner radius of the TOF (cm) | |
92 | static const Float_t fgkRmax; // Outer radius of the TOF (cm) | |
93 | static const Float_t fgkZlenA; // length (cm) of the A module | |
94 | static const Float_t fgkZlenB; // length (cm) of the B module | |
95 | static const Float_t fgkZlenC; // length (cm) of the C module | |
96 | static const Float_t fgkXPad; // Pad size in the x direction (cm) | |
97 | static const Float_t fgkZPad; // Pad size in the z direction (cm) | |
98 | static const Float_t fgkMaxhZtof;// Max half z-size of TOF (cm) | |
99 | ||
100 | ||
101 | static const Float_t fgkSigmaForTail1;//Sig1 for simulation of TDC tails | |
102 | static const Float_t fgkSigmaForTail2;//Sig2 for simulation of TDC tails | |
103 | static const Float_t fgkSpeedOfLight;// c (10^9 m/s) | |
104 | static const Float_t fgkPionMass;// pion mass (Gev/c^2) | |
105 | static const Float_t fgkKaonMass;// kaon mass (Gev/c^2) | |
106 | static const Float_t fgkProtonMass;// proton mass (Gev/c^2) | |
107 | static const Float_t fgkElectronMass;// electron mass (Gev/c^2) | |
108 | static const Float_t fgkMuonMass;// muon mass (Gev/c^2) | |
109 | ||
110 | ||
111 | static const Float_t fgkDprecMin;//num.prec.tolerance on Thmin | |
112 | static const Float_t fgkDprecMax;//num.prec.tolerance on Thma | |
113 | static const Float_t fgkDprecCen;//num.prec.tolerance on <Theta> | |
0f4a7374 | 114 | |
115 | Float_t fAngles[fgkNPlates][fgkMaxNstrip]; //Strip Tilt Angles | |
116 | Float_t fHeights[fgkNPlates][fgkMaxNstrip];//Strip heights | |
117 | Float_t fPhiSec; //sector Phi width (deg) | |
118 | ||
119 | ClassDef(AliTOFGeometry,0) // TOF Geometry base class | |
120 | }; | |
121 | ||
122 | #endif |