]> git.uio.no Git - u/mrichter/AliRoot.git/blob - HLT/MUON/src/AliRoot/Track.cxx
Replacing some non-standard operators (not,and,or) with the standard ones. Code clean-up
[u/mrichter/AliRoot.git] / HLT / MUON / src / AliRoot / Track.cxx
1 ////////////////////////////////////////////////////////////////////////////////
2 //
3 // Author: Artur Szostak
4 // Email:  artur@alice.phy.uct.ac.za | artursz@iafrica.com
5 //
6 ////////////////////////////////////////////////////////////////////////////////
7
8 #include "AliRoot/Track.hpp"
9 #include <TMath.h>
10 #include "Utils.hpp"
11
12 ClassImp(AliMUONHLT::Track)
13
14 namespace AliMUONHLT
15 {
16
17
18 Track::Track() : TObject()
19 {
20         Init();
21 }
22
23
24 Track::Track(
25                 Int_t triggerid, Int_t sign, Float_t momentum, Float_t pt,
26                 const Point hits[10], const Region regions[10]
27         ) : TObject()
28 {
29         if (sign < -1 || +1 < sign)
30         {
31                 Init();
32                 Error("Track", "The particle sign was not one of -1, 0 or +1. Got %d", sign);
33         }
34         else if (momentum < pt)
35         {
36                 Init();
37                 Error("Track", "The momentum (%f) must be larger or equal to the pt (%f).",
38                         momentum, pt
39                 );
40         }
41         else if (pt < 0.0)
42         {
43                 Init();
44                 Error("Track", "The pt must be a positive number. Got: %f", pt);
45         }
46         else
47         {
48                 fTriggerID = triggerid;
49                 fParticleSign = sign;
50                 fP = momentum;
51                 fPt = pt;
52                 for (Int_t i = 0; i < 10; i++)
53                 {
54                         fHit[i] = hits[i];
55                         fRegionOfInterest[i] = regions[i];
56                 }
57         }
58 }
59
60
61 void Track::Init()
62 {
63         fTriggerID = -1;
64         fParticleSign = 0;
65         fP = fPt = 0.0;
66 }
67
68
69 void Track::ParticleSign(Int_t value)
70 {
71         if (-1 <= value && value <= +1)
72                 fParticleSign = value;
73         else
74                 Error("ParticleSign",
75                         "The particle sign must be a value of -1, 0 or +1, but got %d",
76                         value
77                 );
78 }
79
80
81 void Track::P(Float_t value)
82 {
83         if (value >= fPt)
84                 fP = value;
85         else
86                 Error("P",
87                         "Trying to assing momentum (%f) which is smaller than the pt value (%f).",
88                         value, fPt
89                 );
90 }
91
92 void Track::Pt(Float_t value)
93 {
94         if (value >= 0.0)
95         {
96                 if (value <= fP)
97                         fPt = value;
98                 else
99                         Error("Pt",
100                                 "Trying to assign pt (%f) which is larger than the momentum value (%f).",
101                                 value, fP
102                         );
103         }
104         else
105                 Error("Pt", "Cannot have a negative value pt. Got: %f", value);
106 };
107
108
109 Point& Track::Hit(UInt_t chamber)
110 {
111         if (chamber < 10)
112                 return fHit[chamber];
113         else
114         {
115                 Error("Hit",
116                         "The chamber is out of range. Got: %d, but should be in [0..9].",
117                         chamber
118                 );
119                 return fHit[0];
120         }
121 }
122
123
124 const Point& Track::Hit(UInt_t chamber) const
125 {
126         if (chamber < 10)
127                 return fHit[chamber];
128         else
129         {
130                 Error("Hit",
131                         "The chamber is out of range. Got: %d, but should be in [0..9].",
132                         chamber
133                 );
134                 return fHit[0];
135         };
136 };
137
138
139 void Track::Hit(UInt_t chamber, const Point& value)
140 {
141         if (chamber < 10)
142                 fHit[chamber] = value;
143         else
144                 Error("Hit",
145                         "The chamber is out of range. Got: %d, but should be in [0..9].",
146                         chamber
147                 );
148 }
149
150
151 Region& Track::RegionOfInterest(UInt_t chamber)
152 {
153         if (chamber < 10)
154                 return fRegionOfInterest[chamber];
155         else
156         {
157                 Error("RegionOfInterest",
158                         "The chamber is out of range. Got: %d, but should be in [0..9].",
159                         chamber
160                 );
161                 return fRegionOfInterest[0];
162         }
163 }
164
165
166 const Region& Track::RegionOfInterest(UInt_t chamber) const
167 {
168         if (chamber < 10)
169                 return fRegionOfInterest[chamber];
170         else
171         {
172                 Error("RegionOfInterest",
173                         "The chamber is out of range. Got: %d, but should be in [0..9].",
174                         chamber
175                 );
176                 return fRegionOfInterest[0];
177         }
178 }
179
180
181 void Track::RegionOfInterest(UInt_t chamber, const Region& value)
182 {
183         if (chamber < 10)
184                 fRegionOfInterest[chamber] = value;
185         else
186                 Error("RegionOfInterest",
187                         "The chamber is out of range. Got: %d, but should be in [0..9].",
188                         chamber
189                 );
190 }
191
192
193 Bool_t Track::HitsInRegions() const
194 {
195         for (Int_t i = 0; i < 10; i++)
196         {
197                 if ( ! fRegionOfInterest[i].Contains(fHit[i]) )
198                         return kFALSE;
199         }
200         return kTRUE;
201 }
202
203
204 ostream& operator << (ostream& os, const Track& t)
205 {
206         os << "{trigid: " << t.fTriggerID << ", sign: " << t.fParticleSign
207            << ", p: " << t.fP << ", pt: " << t.fPt << "}";
208         return os;
209 }
210
211
212 } // AliMUONHLT