Pandora
Pandora source code navigator
Loading...
Searching...
No Matches
Helix.h
Go to the documentation of this file.
1
8#ifndef PANDORA_HELIX_H
9#define PANDORA_HELIX_H 1
10
12
13#include "Pandora/StatusCodes.h"
14
15namespace pandora
16{
17
21class Helix
22{
23public:
34 Helix(const float phi0, const float d0, const float z0, const float omega, const float tanlambda, const float bField);
35
44 Helix(const CartesianVector &position, const CartesianVector &momentum, const float charge, const float bField);
45
57 StatusCode GetPointInXY(const float x0, const float y0, const float ax, const float ay, const CartesianVector &referencePoint,
58 CartesianVector &intersectionPoint) const;
59
72 StatusCode GetPointInXY(const float x0, const float y0, const float ax, const float ay, const CartesianVector &referencePoint,
73 CartesianVector &intersectionPoint, float &genericTime) const;
74
82 StatusCode GetPointInZ(const float zPlane, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const;
83
92 StatusCode GetPointInZ(const float zPlane, const CartesianVector &referencePoint, CartesianVector &intersectionPoint,
93 float &genericTime) const;
94
102 StatusCode GetPointOnCircle(const float radius, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const;
103
112 StatusCode GetPointOnCircle(const float radius, const CartesianVector &referencePoint, CartesianVector &intersectionPoint,
113 float &genericTime) const;
114
124 StatusCode GetDistanceToPoint(const CartesianVector &point, CartesianVector &distance) const;
125
136 StatusCode GetDistanceToPoint(const CartesianVector &point, CartesianVector &distance, float &genericTime) const;
137
146 StatusCode GetDistanceToHelix(const Helix *const pHelix, CartesianVector &positionOfClosestApproach, CartesianVector &v0momentum,
147 float &helixDistance) const;
148
157
163 const CartesianVector &GetMomentum() const;
164
170 const CartesianVector &GetReferencePoint() const;
171
177 float GetPhi0() const;
178
184 float GetD0() const;
185
191 float GetZ0() const;
192
198 float GetOmega() const;
199
205 float GetTanLambda() const;
206
212 float GetPxy() const;
213
219 float GetCharge() const;
220
226 float GetXCentre() const;
227
233 float GetYCentre() const;
234
240 float GetRadius() const;
241
242private:
243 static const float FCT;
244 static const float TWO_PI;
245 static const float HALF_PI;
246
249
250 float m_phi0;
251 float m_d0;
252 float m_z0;
253 float m_omega;
255 float m_pxy;
256 float m_charge;
257 float m_xCentre;
258 float m_yCentre;
259 float m_radius;
262 float m_xAtPCA;
263 float m_yAtPCA;
264 float m_pxAtPCA;
265 float m_pyAtPCA;
267};
268
269//------------------------------------------------------------------------------------------------------------------------------------------
270
271inline StatusCode Helix::GetPointInXY(const float x0, const float y0, const float ax, const float ay, const CartesianVector &referencePoint,
272 CartesianVector &intersectionPoint) const
273{
274 float genericTime;
275 return this->GetPointInXY(x0, y0, ax, ay, referencePoint, intersectionPoint, genericTime);
276}
277
278//------------------------------------------------------------------------------------------------------------------------------------------
279
280inline StatusCode Helix::GetPointInZ(const float zPlane, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const
281{
282 float genericTime;
283 return this->GetPointInZ(zPlane, referencePoint, intersectionPoint, genericTime);
284}
285
286//------------------------------------------------------------------------------------------------------------------------------------------
287
288inline StatusCode Helix::GetPointOnCircle(const float radius, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const
289{
290 float genericTime;
291 return this->GetPointOnCircle(radius, referencePoint, intersectionPoint, genericTime);
292}
293
294//------------------------------------------------------------------------------------------------------------------------------------------
295
297{
298 float genericTime;
299 return this->GetDistanceToPoint(point, distance, genericTime);
300}
301
302//------------------------------------------------------------------------------------------------------------------------------------------
303
305{
306 return m_momentum;
307}
308
309//------------------------------------------------------------------------------------------------------------------------------------------
310
312{
313 return m_referencePoint;
314}
315
316//------------------------------------------------------------------------------------------------------------------------------------------
317
318inline float Helix::GetPhi0() const
319{
320 if (m_phi0 < 0.)
321 return m_phi0 + TWO_PI;
322
323 return m_phi0;
324}
325
326//------------------------------------------------------------------------------------------------------------------------------------------
327
328inline float Helix::GetD0() const
329{
330 return m_d0;
331}
332
333//------------------------------------------------------------------------------------------------------------------------------------------
334
335inline float Helix::GetZ0() const
336{
337 return m_z0;
338}
339
340//------------------------------------------------------------------------------------------------------------------------------------------
341
342inline float Helix::GetOmega() const
343{
344 return m_omega;
345}
346
347//------------------------------------------------------------------------------------------------------------------------------------------
348
349inline float Helix::GetTanLambda() const
350{
351 return m_tanLambda;
352}
353
354//------------------------------------------------------------------------------------------------------------------------------------------
355
356inline float Helix::GetPxy() const
357{
358 return m_pxy;
359}
360
361//------------------------------------------------------------------------------------------------------------------------------------------
362
363inline float Helix::GetCharge() const
364{
365 return m_charge;
366}
367
368//------------------------------------------------------------------------------------------------------------------------------------------
369
370inline float Helix::GetXCentre() const
371{
372 return m_xCentre;
373}
374
375//------------------------------------------------------------------------------------------------------------------------------------------
376
377inline float Helix::GetYCentre() const
378{
379 return m_yCentre;
380}
381
382//------------------------------------------------------------------------------------------------------------------------------------------
383
384inline float Helix::GetRadius() const
385{
386 return m_radius;
387}
388
389} // namespace pandora
390
391#endif // #ifndef PANDORA_HELIX_H
Header file for the cartesian vector class.
Header file defining status codes and relevant preprocessor macros.
CartesianVector class.
Helix class.
Definition Helix.h:22
float GetCharge() const
Get charge.
Definition Helix.h:363
float GetZ0() const
Get z coordinate of the point of closest approach to IP in the R-Phi plane.
Definition Helix.h:335
float m_phiRefPoint
Phi w.r.t. (X0, Y0) of circle at reference point.
Definition Helix.h:260
float m_charge
The particle charge.
Definition Helix.h:256
float GetOmega() const
Get signed curvature of the track.
Definition Helix.h:342
float m_pxy
The transverse momentum.
Definition Helix.h:255
StatusCode GetPointInZ(const float zPlane, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const
Get helix intersection point with a plane perpendicular to z axis.
Definition Helix.h:280
CartesianVector m_referencePoint
The coordinates of the reference point.
Definition Helix.h:247
float GetXCentre() const
Get x coordinate of circumference.
Definition Helix.h:370
float GetRadius() const
Get radius of circumference.
Definition Helix.h:384
float m_yAtPCA
y coordinate at point of closest approach
Definition Helix.h:263
float m_phiMomRefPoint
Phi of Momentum vector at reference point.
Definition Helix.h:266
StatusCode GetDistanceToPoint(const CartesianVector &point, CartesianVector &distance) const
Get distance of the closest approach of helix to an arbitrary point in space.
Definition Helix.h:296
CartesianVector m_momentum
The momentum vector at reference point.
Definition Helix.h:248
float m_d0
d0 in canonical parameterisation
Definition Helix.h:251
static const float TWO_PI
Definition Helix.h:244
float GetYCentre() const
Get y coordinate of circumference.
Definition Helix.h:377
float m_pxAtPCA
Momentum x component at point of closest approach.
Definition Helix.h:264
float m_pyAtPCA
Momentum y component at point of closest approach.
Definition Helix.h:265
float GetPhi0() const
Get phi angle of the momentum vector at the point of closest approach to IP.
Definition Helix.h:318
float GetTanLambda() const
Get tangent of dip angle of the track.
Definition Helix.h:349
float m_tanLambda
tanLambda
Definition Helix.h:254
const CartesianVector & GetMomentum() const
Get momentum of particle at the point of closest approach to IP.
Definition Helix.h:304
float m_xCentre
The circle centre x coordinate.
Definition Helix.h:257
CartesianVector GetExtrapolatedMomentum(const CartesianVector &position) const
Definition Helix.cc:522
static const float HALF_PI
Definition Helix.h:245
float m_phi0
phi0 in canonical parameterization
Definition Helix.h:250
float m_xAtPCA
x coordinate at point of closest approach
Definition Helix.h:262
float GetPxy() const
Get transverse momentum of the track.
Definition Helix.h:356
float m_omega
signed curvature in canonical parameterisation
Definition Helix.h:253
float m_radius
The radius of circle in XY plane.
Definition Helix.h:259
float m_phiAtPCA
Phi w.r.t. (X0, Y0) of circle at point of closest approach.
Definition Helix.h:261
StatusCode GetPointOnCircle(const float radius, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const
Get coordinates of helix intersection with cylinder, aligned along z-axis.
Definition Helix.h:288
float m_yCentre
The circle centre y coordinate.
Definition Helix.h:258
float GetD0() const
Get z signed distance of closest approach to IP in the R-Phi plane.
Definition Helix.h:328
static const float FCT
Definition Helix.h:243
float m_z0
z0 in canonical parameterisation
Definition Helix.h:252
const CartesianVector & GetReferencePoint() const
Get reference point of track.
Definition Helix.h:311
StatusCode GetPointInXY(const float x0, const float y0, const float ax, const float ay, const CartesianVector &referencePoint, CartesianVector &intersectionPoint) const
Get helix intersection point with a plane parallel to z axis. The plane is defined by two coordinates...
Definition Helix.h:271
StatusCode GetDistanceToHelix(const Helix *const pHelix, CartesianVector &positionOfClosestApproach, CartesianVector &v0momentum, float &helixDistance) const
Get distance between two helices.
Definition Helix.cc:349
StatusCode
The StatusCode enum.