Belle II Software  release-06-01-15
HelixSwimmer Class Reference

Utility for propagation of a particle along helix. More...

#include <HelixSwimmer.h>

Collaboration diagram for HelixSwimmer:

Public Member Functions

 HelixSwimmer ()
 default constructor
 
void set (const TVector3 &position, const TVector3 &momentum, double charge, double Bz)
 Sets the helix. More...
 
void setTransformation (const TRotation &rotation, const TVector3 &translation)
 Sets transformation from the frame in which helix is constructed to module local frame. More...
 
void moveReferencePosition (double length)
 Moves reference position along helix by length. More...
 
TVector3 getPosition (double length) const
 Returns particle position at given length. More...
 
TVector3 getDirection (double length) const
 Returns particle direction at given length. More...
 
double getDistanceToPlane (const TVector3 &point, const TVector3 &normal) const
 Returns the distance along helix to the nearest intersection with a plane nearly parallel to z axis. More...
 

Private Member Functions

double shortestDistance (double cosAlpha, double phi) const
 Returns shortest distance. More...
 
double withinSingleTurn (double t) const
 Returns helix length within a single turn. More...
 

Private Attributes

double m_R = 0
 helix radius
 
double m_xc = 0
 helix axis position in x
 
double m_yc = 0
 helix axis position in y
 
double m_omega = 0
 angular speed [1/cm]
 
double m_kz = 0
 slope in z
 
double m_phi0 = 0
 phi of reference position
 
double m_z0 = 0
 z of reference position
 
double m_T0 = 0
 helix length of single turn
 
double & x0 = m_xc
 x of reference position for zero magnetic field
 
double & y0 = m_yc
 y of reference position for zero magnetic field
 
double & z0 = m_z0
 z of reference position for zero magnetic field
 
double & kx = m_R
 direction in x for zero magnetic field
 
double & ky = m_phi0
 direction in y for zero magnetic field
 
double & kz = m_kz
 direction in z for zero magnetic field
 
TRotation m_rotationInv
 inverse of rotation matrix
 
TVector3 m_translation
 translation vector
 

Detailed Description

Utility for propagation of a particle along helix.

Helix representation here differs from the official one. Running parameter is the signed distance along helix measured from the reference position. Negative distance means propagating back in time.

Definition at line 29 of file HelixSwimmer.h.

Member Function Documentation

◆ getDirection()

TVector3 getDirection ( double  length) const

Returns particle direction at given length.

Parameters
lengthdistance along helix measured from the reference position
Returns
direction (in module local frame if transformation is set)

Definition at line 79 of file HelixSwimmer.cc.

80  {
81  if (m_omega != 0) {
82  double phi = m_phi0 + m_omega * length;
83  double k_T = m_omega * m_R;
84  TVector3 vec(-k_T * sin(phi), k_T * cos(phi), m_kz);
85  return m_rotationInv * vec;
86  } else {
87  TVector3 vec(kx, ky, kz);
88  return m_rotationInv * vec;
89  }
90  }
double m_phi0
phi of reference position
Definition: HelixSwimmer.h:106
double & kx
direction in x for zero magnetic field
Definition: HelixSwimmer.h:113
double & ky
direction in y for zero magnetic field
Definition: HelixSwimmer.h:114
double & kz
direction in z for zero magnetic field
Definition: HelixSwimmer.h:115
double m_R
helix radius
Definition: HelixSwimmer.h:101
double m_omega
angular speed [1/cm]
Definition: HelixSwimmer.h:104
TRotation m_rotationInv
inverse of rotation matrix
Definition: HelixSwimmer.h:117
double m_kz
slope in z
Definition: HelixSwimmer.h:105

◆ getDistanceToPlane()

double getDistanceToPlane ( const TVector3 &  point,
const TVector3 &  normal 
) const

Returns the distance along helix to the nearest intersection with a plane nearly parallel to z axis.

Parameters
pointpoint on the plane
normalplane normal
Returns
signed distance (NaN if cross-section doesn't exist)

Definition at line 92 of file HelixSwimmer.cc.

◆ getPosition()

TVector3 getPosition ( double  length) const

Returns particle position at given length.

Parameters
lengthdistance along helix measured from the reference position
Returns
position (in module local frame if transformation is set)

Definition at line 67 of file HelixSwimmer.cc.

◆ moveReferencePosition()

void moveReferencePosition ( double  length)

Moves reference position along helix by length.

Parameters
lengthdistance along helix measured from current reference position

Definition at line 55 of file HelixSwimmer.cc.

◆ set()

void set ( const TVector3 &  position,
const TVector3 &  momentum,
double  charge,
double  Bz 
)

Sets the helix.

Parameters
positionparticle position (= default reference position)
momentumparticle momentum
chargeparticle charge in units of elementary charge
Bzmagnetic field z-component (we assume other two are negligible)

Definition at line 24 of file HelixSwimmer.cc.

◆ setTransformation()

void setTransformation ( const TRotation &  rotation,
const TVector3 &  translation 
)

Sets transformation from the frame in which helix is constructed to module local frame.

Transformation is: inverse translation first then inverse rotation

Parameters
rotationrotation matrix
translationtranslation vector

Definition at line 49 of file HelixSwimmer.cc.

◆ shortestDistance()

double shortestDistance ( double  cosAlpha,
double  phi 
) const
inlineprivate

Returns shortest distance.

Parameters
cosAlphacosine of alpha
phiphi of plane
Returns
signed shortest distance

Definition at line 123 of file HelixSwimmer.h.

124  {
125  double alpha = acos(cosAlpha);
126  double t1 = withinSingleTurn((phi - m_phi0 - alpha) / m_omega);
127  double t2 = withinSingleTurn((phi - m_phi0 + alpha) / m_omega);
128  double ta = std::min(t1, t2);
129  double tb = std::max(t1 - m_T0, t2 - m_T0);
130  double t = (abs(ta) < abs(tb)) ? ta : tb;
131  return t;
132  }
double withinSingleTurn(double t) const
Returns helix length within a single turn.
Definition: HelixSwimmer.h:134
double m_T0
helix length of single turn
Definition: HelixSwimmer.h:108

◆ withinSingleTurn()

double withinSingleTurn ( double  t) const
inlineprivate

Returns helix length within a single turn.

Parameters
thelix length
Returns
helix length within single turn

Definition at line 134 of file HelixSwimmer.h.


The documentation for this class was generated from the following files: