MarlinTPC
1.2.0
|
#include <SimpleHelixTrackModel.h>
Public Member Functions | |
simpleHelix (const double, const double, const double, const double, const double, const double *, const double) | |
Constructor. | |
simpleHelix (const double *, const double *, const double) | |
Constructor. | |
void | dump () const |
Dump helix. | |
double | getArcLengthXY (const double *) const |
Get (2D) arc length for given point. More... | |
void | getZSDirection (double *) const |
Get ZS direction (cosLambda, sinLambda). | |
void | getPosAtArcLength (const double, double *) const |
Get position (on helix) at arc length. More... | |
bool | getExpectedPlanePos (const double *, const double, double &, double &, double &, double &, double &) const |
Get expected position (and direction) in plane. More... | |
TMatrixD | analyticalHelixJacobian (const double, const double) const |
Get analytical helix propagator (in constant solenoidal magnetic field) More... | |
TMatrixD | simplifiedHelixJacobian (const double, const double) const |
Get simplified helix propagator (in constant solenoidal magnetic field) More... | |
TMatrixD | curvilinearToPerigeeJacobian () const |
Get transformation from curivilinear to perigee track parameters (at reference point) More... | |
TMatrixD | perigeeToILDJacobian () const |
Get transformation from perigee to L3/ILD track parameters (at reference point) More... | |
TMatrixD | perigeeToLCIOJacobian () const |
Get transformation from helix to LCIO track parameters (at reference point) More... | |
TMatrixD | helixToLCIOJacobian () const |
Get transformation from helix to LCIO track parameters (at reference point) More... | |
void | moveTo (const double, const double, const double, double *) |
Change reference point. More... | |
void | getStateAt (const double, const double, const double, TMatrixDSym &, TVectorD &, TMatrixDSym &) |
Get state (parameters, covariance matrix) at point. More... | |
Protected Attributes | |
const double | _xref |
X of reference point. | |
const double | _yref |
Y of reference point. | |
const double | _zref |
Z of reference point. | |
const double | _bzc |
Z component of magnetic field (*c) | |
const double | _rinv |
1/R | |
const double | _phi0 |
flight direction at point of closest approach (in XY) | |
const double | _dca |
distance of closest approach in (XY) | |
const double | _dzds |
dZ/ds | |
const double | _z0 |
Z position at distance of closest approach. | |
const double | _xRelCenter |
XY circle parameter: X position of center / R. | |
const double | _yRelCenter |
XY circle parameter: Y position of center / R. | |
const double | _eps |
cut off for straight line approximation (|relevant scale / R| < _eps) | |
Simple Helix.
Utilities for simple helix track model build from perigee parameters, assuming constant magnetic field in Z-direction.
Propagation and transformation jacobians according to Strandlie & Wittek (NIM A 566(2006) 687-698)
TMatrixD marlintpc::simpleHelix::analyticalHelixJacobian | ( | const double | phi1, |
const double | ds | ||
) | const |
Get analytical helix propagator (in constant solenoidal magnetic field)
For curvilinear track parameters (q/p,lambda,phi,x_t,y_t).
[in] | phi1 | azimutal direction at start point |
[in] | ds | (3D) arc length to end point |
References _bzc, _dzds, _rinv, and marlintpc::localHelixAnalyticalJacobian().
TMatrixD marlintpc::simpleHelix::curvilinearToPerigeeJacobian | ( | ) | const |
double marlintpc::simpleHelix::getArcLengthXY | ( | const double * | position | ) | const |
Get (2D) arc length for given point.
Arc length from dca to point on circle on intersection with line from circle center to given point
[in] | position | (XY) Position |
References _eps, _phi0, _rinv, _xref, _xRelCenter, _yref, and _yRelCenter.
Referenced by marlintpc::tp_PixelSegment::tp_PixelSegment().
bool marlintpc::simpleHelix::getExpectedPlanePos | ( | const double * | point, |
const double | measPhi, | ||
double & | xyPos, | ||
double & | zPos, | ||
double & | sArc, | ||
double & | phi, | ||
double & | lambda | ||
) | const |
Get expected position (and direction) in plane.
Plane is defined by point and direction in XY and Z axis. Intersection of circle (or straight line) and straight line in XY.
[in] | point | point (XYZ) (defining origin of plane) |
[in] | measPhi | measurement direction in (XY) plane |
[out] | xyPos | position in plane along (XY) measurement direction (relative to point). |
[out] | zPos | position in plane along Z direction (relative to point). |
[out] | sArc | arc-length at intersection |
[out] | phi | phi (flight direction) at intersection |
[out] | lambda | lambda (flight direction) at intersection |
References _dca, _dzds, _eps, _phi0, _rinv, _xref, _xRelCenter, _yref, _yRelCenter, _z0, and _zref.
Referenced by marlintpc::rb_Segment::match().
void marlintpc::simpleHelix::getPosAtArcLength | ( | const double | sArc, |
double * | position | ||
) | const |
void marlintpc::simpleHelix::getStateAt | ( | const double | posX, |
const double | posY, | ||
const double | posZ, | ||
TMatrixDSym & | refCov, | ||
TVectorD & | newPar, | ||
TMatrixDSym & | newCov | ||
) |
Get state (parameters, covariance matrix) at point.
[in] | posX | point (X coordinate) |
[in] | posY | point (Y coordinate) |
[in] | posZ | point (Z coordinate) |
[in] | refCov | covariance matrix at reference point |
[out] | newPar | parameter vector at point |
[out] | newCov | covariance matrix at point |
References _dca, _dzds, _eps, _phi0, _rinv, _xref, _yref, _z0, and _zref.
Referenced by marlintpc::rb_Segment::getLCIOStateAtRefPoint(), marlintpc::tp_PixelSegment::getLCIOStateAtRefPoint(), marlintpc::rb_Segment::match(), marlintpc::tp_PixelSegment::match(), and marlintpc::rb_Segment::rb_Segment().
TMatrixD marlintpc::simpleHelix::helixToLCIOJacobian | ( | ) | const |
Get transformation from helix to LCIO track parameters (at reference point)
(rinv, phi0, dca, dzds, z0) -> ( d0, phi0, Omega, z0, tanLambda)
d0 = -dca, phi0 = phi0, omega = -rinv, , z0 = z0, tan(lambda) = dzds
Referenced by marlintpc::rb_Segment::getLCIOStateAtRefPoint(), and marlintpc::tp_PixelSegment::getLCIOStateAtRefPoint().
void marlintpc::simpleHelix::moveTo | ( | const double | newRefX, |
const double | newRefY, | ||
const double | newRefZ, | ||
double * | newPar | ||
) |
TMatrixD marlintpc::simpleHelix::perigeeToILDJacobian | ( | ) | const |
Get transformation from perigee to L3/ILD track parameters (at reference point)
(kappa, theta, phi, epsilon, z_p) -> (omega, tan(lambda), phi, d0, z0)
omega = -kappa, lambda = pi/2 - theta, d0 = -epsilon, z0 = z_p
References _dzds.
TMatrixD marlintpc::simpleHelix::perigeeToLCIOJacobian | ( | ) | const |
Get transformation from helix to LCIO track parameters (at reference point)
(kappa, theta, phi, epsilon, z_p) -> ( d0, phi0, Omega, z0, tanLambda)
d0 = -epsilon, phi0 = phi, omega = -kappa, , z0 = z_p, lambda = pi/2 - theta
References _dzds.
TMatrixD marlintpc::simpleHelix::simplifiedHelixJacobian | ( | const double | phi1, |
const double | ds | ||
) | const |