]>
Commit | Line | Data |
---|---|---|
638f6e9b | 1 | //-----------------------------------------------------// |
2 | // // | |
3 | // // | |
4 | // Date : August 05 2003 // | |
5 | // // | |
6 | // Utility code for ALICE-PMD // | |
7 | // // | |
8 | //-----------------------------------------------------// | |
9 | ||
10 | #include "AliPMDUtility.h" | |
11 | #include "TMath.h" | |
12 | #include <stdio.h> | |
13 | ||
14 | ClassImp(AliPMDUtility) | |
15 | ||
16 | AliPMDUtility::AliPMDUtility() | |
17 | { | |
18 | fPx = 0.; | |
19 | fPy = 0.; | |
20 | fPz = 0.; | |
21 | fTheta = 0.; | |
22 | fEta = 0.; | |
23 | fPhi = 0.; | |
24 | } | |
25 | ||
26 | AliPMDUtility::AliPMDUtility(Float_t Px, Float_t Py, Float_t Pz) | |
27 | { | |
28 | fPx = Px; | |
29 | fPy = Py; | |
30 | fPz = Pz; | |
31 | fTheta = 0.; | |
32 | fEta = 0.; | |
33 | fPhi = 0.; | |
34 | } | |
35 | ||
36 | AliPMDUtility::~AliPMDUtility() | |
37 | { | |
38 | ||
39 | } | |
40 | ||
41 | void AliPMDUtility::SetPxPyPz(Float_t Px, Float_t Py, Float_t Pz) | |
42 | { | |
43 | fPx = Px; | |
44 | fPy = Py; | |
45 | fPz = Pz; | |
46 | } | |
47 | ||
48 | void AliPMDUtility::SetXYZ(Float_t xPos, Float_t yPos, Float_t zPos) | |
49 | { | |
50 | fPx = xPos; | |
51 | fPy = yPos; | |
52 | fPz = zPos; | |
53 | } | |
54 | void AliPMDUtility::CalculateEta() | |
55 | { | |
56 | Float_t rpxpy, theta, eta; | |
57 | ||
58 | rpxpy = TMath::Sqrt(fPx*fPx + fPy*fPy); | |
59 | theta = TMath::ATan2(rpxpy,fPz); | |
60 | eta = -TMath::Log(TMath::Tan(0.5*theta)); | |
61 | fTheta = theta; | |
62 | fEta = eta; | |
63 | } | |
64 | void AliPMDUtility::CalculatePhi() | |
65 | { | |
66 | Float_t pybypx, phi = 0., phi1; | |
67 | ||
68 | if(fPx==0) | |
69 | { | |
70 | if(fPy>0) phi = 90.; | |
71 | if(fPy<0) phi = 270.; | |
72 | } | |
73 | if(fPx != 0) | |
74 | { | |
75 | pybypx = fPy/fPx; | |
76 | if(pybypx < 0) pybypx = - pybypx; | |
77 | phi1 = TMath::ATan(pybypx)*180./3.14159; | |
78 | if(fPx < 0 && fPy > 0) phi = 180 - phi1; | |
79 | if(fPx < 0 && fPy < 0) phi = 180 + phi1; | |
80 | if(fPx > 0 && fPy < 0) phi = 360 - phi1; | |
81 | if(fPx > 0 && fPy > 0) phi = phi1; | |
82 | } | |
83 | phi = phi*3.14159/180.; | |
84 | ||
85 | fPhi = phi; | |
86 | ||
87 | } | |
88 | void AliPMDUtility::CalculateEtaPhi() | |
89 | { | |
90 | Float_t rpxpy, theta, eta; | |
91 | Float_t pybypx, phi = 0., phi1; | |
92 | ||
93 | rpxpy = TMath::Sqrt(fPx*fPx + fPy*fPy); | |
94 | theta = TMath::ATan2(rpxpy,fPz); | |
95 | eta = -TMath::Log(TMath::Tan(0.5*theta)); | |
96 | ||
97 | if(fPx==0) | |
98 | { | |
99 | if(fPy>0) phi = 90.; | |
100 | if(fPy<0) phi = 270.; | |
101 | } | |
102 | if(fPx != 0) | |
103 | { | |
104 | pybypx = fPy/fPx; | |
105 | if(pybypx < 0) pybypx = - pybypx; | |
106 | phi1 = TMath::ATan(pybypx)*180./3.14159; | |
107 | if(fPx < 0 && fPy > 0) phi = 180 - phi1; | |
108 | if(fPx < 0 && fPy < 0) phi = 180 + phi1; | |
109 | if(fPx > 0 && fPy < 0) phi = 360 - phi1; | |
110 | if(fPx > 0 && fPy > 0) phi = phi1; | |
111 | } | |
112 | phi = phi*3.14159/180.; | |
113 | ||
114 | fTheta = theta; | |
115 | fEta = eta; | |
116 | fPhi = phi; | |
117 | } | |
118 | Float_t AliPMDUtility::GetTheta() const | |
119 | { | |
120 | return fTheta; | |
121 | } | |
122 | Float_t AliPMDUtility::GetEta() const | |
123 | { | |
124 | return fEta; | |
125 | } | |
126 | Float_t AliPMDUtility::GetPhi() const | |
127 | { | |
128 | return fPhi; | |
129 | } | |
130 |