11#include <Math/Vector3D.h>
12#include <Math/Point3D.h>
13#include <Math/Transform3D.h>
47 void set(
const ROOT::Math::XYZPoint& position,
const ROOT::Math::XYZVector& momentum,
double charge,
double Bz);
66 ROOT::Math::XYZPoint
getPosition(
double length)
const;
81 double getDistanceToPlane(
const ROOT::Math::XYZPoint& point,
const ROOT::Math::XYZVector& normal)
const;
123 double alpha = acos(cosAlpha);
126 double ta = std::min(t1, t2);
127 double tb = std::max(t1 -
m_T0, t2 -
m_T0);
128 double t = (std::abs(ta) < std::abs(tb)) ? ta : tb;
135 if (t < 0) t +=
m_T0;
Utility for propagation of a particle along helix.
double m_phi0
phi of reference position
void moveReferencePosition(double length)
Moves reference position along helix by length.
double withinSingleTurn(double t) const
Returns helix length within a single turn.
double & kx
direction in x for zero magnetic field
ROOT::Math::XYZPoint getPosition(double length) const
Returns particle position at given length.
ROOT::Math::Transform3D m_transformInv
transformation from nominal to local frame
double getDistanceToPlane(const ROOT::Math::XYZPoint &point, const ROOT::Math::XYZVector &normal) const
Returns the distance along helix to the nearest intersection with the plane nearly parallel to z axis...
double & ky
direction in y for zero magnetic field
double & z0
z of reference position for zero magnetic field
double & kz
direction in z for zero magnetic field
void setTransformation(const ROOT::Math::Transform3D &transform)
Sets transformation from the frame in which helix is constructed (nominal frame) to module local fram...
HelixSwimmer()
default constructor
double & y0
y of reference position for zero magnetic field
double shortestDistance(double cosAlpha, double phi) const
Returns shortest distance.
ROOT::Math::XYZVector getDirection(double length) const
Returns particle direction at given length.
double m_yc
helix axis position in y
double m_omega
angular speed [1/cm]
double m_T0
helix length of single turn
double m_z0
z of reference position
double m_xc
helix axis position in x
void set(const ROOT::Math::XYZPoint &position, const ROOT::Math::XYZVector &momentum, double charge, double Bz)
Sets the helix.
double & x0
x of reference position for zero magnetic field
Abstract base class for different kinds of events.