10 #include <framework/datastore/RelationsObject.h>
13 #include <TMatrixDfwd.h>
23 namespace HelixParameterIndex {
25 enum HelixParameterIndex {
75 Helix(
const TVector3& position,
77 const short int charge,
90 Helix(
const double& d0,
94 const double& tanLambda);
97 friend std::ostream&
operator<<(std::ostream& output,
const Helix& helix);
153 double getKappa(
const double bZ)
const;
156 static double getAlpha(
const double bZ);
207 const double& nX,
const double& nY)
const;
256 double passiveMoveBy(
const double& byX,
298 const double expandBelowChi = M_PI / 8)
const;
408 void setCartesian(
const TVector3& position,
410 const short int charge,
Helix(const HepPoint3D &pivot, const HepVector &a, const HepSymMatrix &Ea)
Constructor with pivot, helix parameter a, and its error matrix.
double phi0(void) const
Return helix parameter phi0.
double dr(void) const
Return helix parameter dr.
Hep3Vector momentum(double dPhi=0.) const
returns momentum vector after rotating angle dPhi in phi direction.
HepPoint3D x(double dPhi=0.) const
returns position after rotating angle dPhi in phi direction.
TMatrixD calcPassiveMoveByJacobian(const TVector3 &by, const double expandBelowChi=M_PI/8) const
Calculate the 5x5 jacobian matrix for the transport of the helix parameters, when moving the origin o...
Double32_t m_tanLambda
Memory for the slope of the track in the z coordinate over the two dimensional arc length (dz/ds)
double getPerigeeX() const
Calculates the x coordinate of the perigee point.
double getSinPhi0() const
Getter for the cosine of the azimuth angle of travel direction at the perigee.
double getMomentumZ(const double bZ) const
Calculates the z momentum of the particle at the perigee point.
Double32_t m_omega
Memory for the curvature of the signed curvature.
double getMomentumY(const double bZ) const
Calculates the y momentum of the particle at the perigee point.
void reverse()
Reverses the direction of travel of the helix in place.
double getCosPhi0() const
Getter for the cosine of the azimuth angle of travel direction at the perigee.
double getArcLength2DAtCylindricalR(const double &cylindricalR) const
Calculates the transverse travel distance at the point the helix first reaches the given cylindrical ...
static double calcASinXDividedByX(const double &x)
Implementation of the function asin(x) / x which handles small x values smoothly.
static double reversePhi(const double &phi)
Reverses an azimuthal angle to the opposite direction.
short getChargeSign() const
Return track charge sign (1, 0 or -1).
TVector3 getTangentialAtArcLength2D(const double &arcLength2D) const
Calculates the tangential vector to the helix curve at the given two dimensional arc length.
double getArcLength2DAtXY(const double &x, const double &y) const
Calculates the two dimensional arc length at which the circle in the xy projection is closest to the ...
TVector3 getMomentumAtArcLength2D(const double &arcLength2D, const double &bz) const
Calculates the momentum vector at the given two dimensional arc length.
Double32_t m_z0
Memory for the z coordinate of the perigee.
static double getAlpha(const double bZ)
Calculates the alpha value for a given magnetic field in Tesla.
double getCotTheta() const
Getter for cot theta, which is the z over two dimensional arc length slope of the track.
TVector3 getPerigee() const
Getter for the perigee position.
double getOmega() const
Getter for omega, which is a signed curvature measure of the track.
Double32_t m_d0
Memory for the signed distance to the perigee.
double getPerigeeZ() const
Calculates the z coordinate of the perigee point.
double getD0() const
Getter for d0, which is the signed distance to the perigee in the r-phi plane.
void calcPassiveMoveByJacobian(const double &byX, const double &byY, TMatrixD &jacobian, const double expandBelowChi=M_PI/8) const
Calculate the jacobian matrix for the transport of the helix parameters, when moving the origin of th...
void calcArcLength2DAndDrAtXY(const double &x, const double &y, double &arcLength2D, double &dr) const
Helper method to calculate the signed two dimensional arc length and the signed distance to the circl...
double getArcLength2DAtNormalPlane(const double &x, const double &y, const double &nX, const double &nY) const
Calculates the arc length to reach a plane parallel to the z axes.
double getMomentumX(const double bZ) const
Calculates the x momentum of the particle at the perigee point.
double getTanLambda() const
Getter for tan lambda, which is the z over two dimensional arc length slope of the track.
TVector3 getPositionAtArcLength2D(const double &arcLength2D) const
Calculates the position on the helix at the given two dimensional arc length.
double getPerigeeY() const
Calculates the y coordinate of the perigee point.
double calcSecantLengthToArcLength2DFactor(const double &secantLength2D) const
Helper function to calculate the factor between the dimensional secant length and the two dimensional...
Double32_t m_phi0
Memory for the azimuth angle between the transverse momentum and the x axis, which is in [-pi,...
TVector3 getUnitTangentialAtArcLength2D(const double &arcLength2D) const
Calculates the unit tangential vector to the helix curve at the given two dimensional arc length.
double calcArcLength2DAtDeltaCylindricalRAndDr(const double &deltaCylindricalR, const double &dr) const
Helper method to calculate the two dimensional arc length from the perigee to a point at cylindrical ...
double calcArcLength2DFromSecantLength(const double &secantLength2D) const
Helper function to calculate the two dimensional arc length from the length of a secant.
double getZ0() const
Getter for z0, which is the z coordinate of the perigee.
double passiveMoveBy(const TVector3 &by)
Moves origin of the coordinate system (passive transformation) by the given vector.
double getKappa(const double bZ) const
Getter for kappa, which is charge / transverse momentum or equivalently omega * alpha.
static double calcDerivativeOfATanXDividedByX(const double &x)
Implementation of the function d / dx (atan(x) / x) which handles small x values smoothly.
Helix()
Constructor initializing all perigee parameters to zero.
ClassDef(Helix, 2)
This class represents an ideal helix in perigee parameterization.
double getTransverseMomentum(const double bZ) const
Getter for the absolute value of the transverse momentum at the perigee.
TVector3 getMomentum(const double bZ) const
Getter for vector of momentum at the perigee position.
double getPhi0() const
Getter for phi0, which is the azimuth angle of the transverse momentum at the perigee.
static double calcATanXDividedByX(const double &x)
Implementation of the function atan(x) / x which handles small x values smoothly.
TVector3 getDirection() const
Getter for unit vector of momentum at the perigee position.
Defines interface for accessing relations of objects in StoreArray.
std::ostream & operator<<(std::ostream &output, const IntervalOfValidity &iov)
Abstract base class for different kinds of events.