]>
Commit | Line | Data |
---|---|---|
753896cd | 1 | #ifndef ALIHLTMUONMANSOTRACK_H |
2 | #define ALIHLTMUONMANSOTRACK_H | |
3 | /* This file is property of and copyright by the ALICE HLT Project * | |
4 | * ALICE Experiment at CERN, All rights reserved. * | |
5 | * See cxx source for full Copyright notice */ | |
6 | ||
1d8ae082 | 7 | // $Id$ |
753896cd | 8 | |
450e0b36 | 9 | /// |
10 | /// @file AliHLTMUONMansoTrack.h | |
11 | /// @author Artur Szostak <artursz@iafrica.com> | |
12 | /// @date 29 Sep 2007 | |
13 | /// @brief Declaration of the Manso track class used to store converted track data. | |
14 | /// | |
15 | ||
16 | #include "TObject.h" | |
17 | #include "TVector3.h" | |
753896cd | 18 | |
450e0b36 | 19 | class AliHLTMUONTriggerRecord; |
20 | class AliHLTMUONRecHit; | |
753896cd | 21 | |
22 | /** | |
23 | * AliHLTMUONMansoTrack stores converted dHLT raw track data as a ROOT object. | |
450e0b36 | 24 | * This class is mainly for testing or as a helper object for dHLT specific analysis, |
25 | * since it is sometimes easier to store and handle ROOT objects. | |
753896cd | 26 | */ |
27 | class AliHLTMUONMansoTrack : public TObject | |
28 | { | |
29 | /** | |
30 | * Stream operator for usage with std::ostream classes. | |
31 | * Allows usage such as: | |
32 | * AliHLTMUONMansoTrack t; std::cout << t; | |
33 | */ | |
34 | friend std::ostream& operator << ( | |
35 | std::ostream& stream, | |
36 | const AliHLTMUONMansoTrack& track | |
37 | ); | |
38 | ||
39 | public: | |
40 | ||
41 | /** | |
42 | * Constructor for creating a track object with none, some or all 4 hits | |
43 | * specified. Note: this class does not take ownership of the hit or trigger | |
44 | * record objects and will not attempt to delete them. | |
45 | * @param id The track ID number which must be unique for any event. | |
46 | * @param sign The particle's sign: -1, 1 or 0 if unknown. | |
47 | * @param px X component of the particle's momentum (GeV/c). | |
48 | * @param py Y component of the particle's momentum (GeV/c). | |
49 | * @param pz Z component of the particle's momentum (GeV/c). | |
50 | * @param chi2 The chi squared of the track fit. | |
51 | * @param trigrec Corresponding trigger record used as a seed to find | |
52 | * this track. | |
53 | * @param hit7 Hit on chamber 7, tracking station 4. | |
54 | * @param hit8 Hit on chamber 8, tracking station 4. | |
55 | * @param hit9 Hit on chamber 9, tracking station 5. | |
56 | * @param hit10 Hit on chamber 10, tracking station 5. | |
57 | * @param zf The Z coordinate of the middle of the magnetic field assumed | |
58 | * during momentum calculation. | |
59 | * @param qbl The integrated magnetic field strength assumed during momentum | |
60 | * calculation. | |
61 | */ | |
62 | AliHLTMUONMansoTrack( | |
63 | Int_t id = -1, Int_t sign = 0, | |
64 | Float_t px = 0, Float_t py = 0, Float_t pz = 0, | |
65 | Float_t chi2 = -1, | |
66 | const AliHLTMUONTriggerRecord* trigrec = NULL, | |
67 | const AliHLTMUONRecHit* hit7 = NULL, | |
68 | const AliHLTMUONRecHit* hit8 = NULL, | |
69 | const AliHLTMUONRecHit* hit9 = NULL, | |
70 | const AliHLTMUONRecHit* hit10 = NULL, | |
71 | Float_t zf = 0, Float_t qbl = 0 | |
72 | ); | |
73 | ||
450e0b36 | 74 | /** |
75 | * Default destructor. | |
76 | */ | |
753896cd | 77 | virtual ~AliHLTMUONMansoTrack() {} |
78 | ||
79 | /** | |
80 | * Returns the track ID number, which is unique for an event. | |
81 | */ | |
82 | Int_t Id() const { return fId; } | |
83 | ||
84 | /** | |
85 | * Returns the sign of the particle: -1, 1 or 0 if the sign is unknown. | |
86 | */ | |
87 | Int_t Sign() const { return fSign; } | |
88 | ||
89 | /** | |
90 | * Returns the momentum vector with components in GeV/c. | |
91 | */ | |
92 | const TVector3& Momentum() const { return fMomentum; } | |
93 | ||
94 | /** | |
95 | * Returns the X component of the particle's momentum in GeV/c. | |
96 | */ | |
97 | Double_t Px() const { return fMomentum.Px(); } | |
98 | ||
99 | /** | |
100 | * Returns the Y component of the particle's momentum in GeV/c. | |
101 | */ | |
102 | Double_t Py() const { return fMomentum.Py(); } | |
103 | ||
104 | /** | |
105 | * Returns the Z component of the particle's momentum in GeV/c. | |
106 | */ | |
107 | Double_t Pz() const { return fMomentum.Pz(); } | |
108 | ||
109 | /** | |
110 | * Returns the momentum magnitude of the particle in GeV/c. | |
111 | */ | |
112 | Double_t P() const { return fMomentum.Mag(); } | |
113 | ||
114 | /** | |
115 | * Returns the transverse momentum of the particle in GeV/c. | |
116 | */ | |
117 | Double_t Pt() const { return fMomentum.Pt(); } | |
118 | ||
119 | /** | |
120 | * Returns the polar angle of the momentum vector in radians. | |
121 | */ | |
122 | Double_t Polar() const { return fMomentum.Theta(); } | |
123 | ||
124 | /** | |
125 | * Returns the azimuthal angle of the transverse momentum in radians. | |
126 | */ | |
127 | Double_t Phi() const { return fMomentum.Phi(); } | |
128 | ||
129 | /** | |
130 | * Returns the chi squared of the track fit, indicating the quality of | |
131 | * the fit. | |
132 | */ | |
133 | Float_t Chi2() const { return fChi2; } | |
134 | ||
135 | /** | |
136 | * Returns the trigger record corresponding to this track. | |
137 | * If NULL is returned then no trigger record was found. | |
138 | */ | |
139 | const AliHLTMUONTriggerRecord* TriggerRecord() const { return fTrigRec; } | |
140 | ||
141 | /** | |
1ca600e9 | 142 | * Returns the hit found on the specified tracking chamber. |
753896cd | 143 | * If NULL is returned then no hit was found or set. |
144 | * @param chamber Specifies the chamber for which to return the hit. | |
145 | * Valid values are in the range [7..10]. | |
146 | */ | |
147 | const AliHLTMUONRecHit* Hit(Int_t chamber) const; | |
148 | ||
149 | /** | |
150 | * Prints the details of the track. | |
151 | * @param option A case sensitive string that can contain one of the | |
152 | * following strings: | |
153 | * "compact" - Prints just the momentum, sign and ID of the track | |
154 | * in a terse format. | |
155 | * "detail" - Prints also the hit information. | |
156 | * "all" - Prints all known information about this track. | |
157 | * If the string contains an empty option or NULL then the default is | |
158 | * to print compactly. | |
159 | */ | |
160 | virtual void Print(Option_t* option = NULL) const; | |
161 | ||
162 | // Methods inherited from TObject | |
163 | virtual Bool_t IsSortable() const { return kTRUE; } | |
164 | Int_t Compare(const TObject* obj) const; | |
165 | ||
166 | // Implement comparison operators. | |
167 | bool operator == (const AliHLTMUONMansoTrack& track) const; | |
168 | ||
169 | bool operator != (const AliHLTMUONMansoTrack& track) const | |
170 | { | |
171 | return not this->operator == (track); | |
172 | } | |
462e3880 | 173 | |
174 | /** | |
175 | * Returns the Z coordinate in the middle of the magnetic field used to | |
176 | * calculate the momentum. | |
177 | */ | |
178 | Float_t Zmiddle() const { return fZmiddle; } | |
179 | ||
180 | /** | |
181 | * Returns the integrated magnetic field strength times polarity used in | |
182 | * the calculation of the momentum. Value returned in (T.m) tesla metres. | |
183 | */ | |
184 | Float_t QBL() const { return fQBL; } | |
bc5cb6d6 | 185 | |
186 | /** | |
187 | * Sets the extra debugging information. | |
188 | * @param zmiddle The Z coordinate of the middle of the magnetic field | |
189 | * assumed during momentum calculation. | |
190 | * @param bfieldintegral The integrated magnetic field strength assumed | |
191 | * during momentum calculation. | |
192 | */ | |
193 | void SetDebugData(Float_t zmiddle, Float_t bfieldintegral); | |
194 | ||
195 | /** | |
196 | * Returns the Region of Interest (RoI) centre point for the given chamber. | |
197 | * \param chamber Specifies the chamber for which to return the centre point. | |
198 | * Valid values are in the range [7..10]. | |
199 | * \return The RoI centre or a zero vector if the RoI is not set or the | |
200 | * chamber is an incorrect value. | |
201 | */ | |
202 | const TVector3& RoICentre(Int_t chamber) const; | |
203 | ||
204 | /** | |
205 | * Returns the Region of Interest (RoI) radius for the given chamber. | |
206 | * \param chamber Specifies the chamber for which to return the radius. | |
207 | * Valid values are in the range [7..10]. | |
208 | * \return The RoI radius or -1 if the RoI is not set or the chamber is | |
209 | * an incorrect value. | |
210 | */ | |
211 | Float_t RoIRadius(Int_t chamber) const; | |
212 | ||
213 | /** | |
214 | * Sets the Region of Interest (RoI) on the given chamber. | |
215 | * \param chamber Specifies the chamber for which to return the radius. | |
216 | * Valid values are in the range [7..10]. | |
217 | * \param x X coordinate of the RoI centre point. | |
218 | * \param y Y coordinate of the RoI centre point. | |
219 | * \param z Z coordinate of the RoI centre point. | |
220 | * \param r radius of the RoI. | |
221 | */ | |
222 | void SetRoI(Int_t chamber, Float_t x, Float_t y, Float_t z, Float_t r); | |
753896cd | 223 | |
224 | private: | |
225 | ||
226 | // Do not allow copying of this class. | |
227 | AliHLTMUONMansoTrack(const AliHLTMUONMansoTrack& track); | |
228 | AliHLTMUONMansoTrack& operator = (const AliHLTMUONMansoTrack& track); | |
229 | ||
450e0b36 | 230 | Int_t fId; ///< Track ID number which is unique for a particular event. |
231 | Int_t fSign; ///< The sign of the particle. | |
232 | TVector3 fMomentum; ///< Momentum vector of the particle in GeV/c. | |
233 | Float_t fChi2; ///< Chi squared of fit. | |
234 | const AliHLTMUONTriggerRecord* fTrigRec; ///< Corresponding trigger record. | |
235 | const AliHLTMUONRecHit* fHit[4]; ///< Particle hits on tracking chambers 7 to 10. | |
753896cd | 236 | |
237 | // The following is debugging information and may not be filled if the | |
238 | // dHLT components were not set to produce this information. | |
42d1b43c | 239 | TVector3 fRoICentre[4]; ///< Region of Interest centre points. |
240 | Float_t fRoIRadius[4]; ///< Region of Interest radii. | |
753896cd | 241 | |
242 | // Parameters used in momentum estimation: | |
450e0b36 | 243 | Float_t fZmiddle; ///< Particle momentum X component in GeV/c. |
462e3880 | 244 | Float_t fQBL; ///< The integrated magnetic field times the field polarity in (T.m) tesla metres. |
753896cd | 245 | |
462e3880 | 246 | ClassDef(AliHLTMUONMansoTrack, 4); // Manso track object containing data converted from a dHLT internal track structure. |
753896cd | 247 | }; |
248 | ||
249 | #endif // ALIHLTMUONMANSOTRACK_H |