|
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 |
1.8.6