]> git.uio.no Git - u/mrichter/AliRoot.git/blame - TOF/AliTOFGeometry.h
Implementation of reconstructors (T.Kuhr)
[u/mrichter/AliRoot.git] / TOF / AliTOFGeometry.h
CommitLineData
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
16class 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