|
| RungeKuttaPropagator (const std::string &, const std::string &, const IInterface *) |
|
virtual StatusCode | initialize () override final |
|
virtual | ~RungeKuttaPropagator ()=default |
|
virtual std::unique_ptr< NeutralParameters > | propagate (const NeutralParameters &, const Surface &, PropDirection, const BoundaryCheck &, bool) const override final |
| Main propagation method for NeutralParameters. More...
|
|
virtual std::unique_ptr< TrackParameters > | propagate (const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, ParticleHypothesis, bool, const TrackingVolume *) const override final |
| Main propagation method without transport jacobian production. More...
|
|
virtual Trk::MultiComponentState | multiStatePropagate (const EventContext &ctx, const MultiComponentState &multiComponentState, const Surface &surface, const MagneticFieldProperties &fieldProperties, const PropDirection direction=Trk::anyDirection, const BoundaryCheck &boundaryCheck=true, const ParticleHypothesis particleHypothesis=nonInteracting) const override final |
| Main propagation method for Multi Component state. More...
|
|
virtual std::unique_ptr< TrackParameters > | propagate (const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, std::optional< TransportJacobian > &, double &, ParticleHypothesis, bool, const TrackingVolume *) const override final |
| Main propagation method with transport jacobian production. More...
|
|
virtual std::unique_ptr< TrackParameters > | propagate (const EventContext &ctx, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, double &, bool, bool, const TrackingVolume *) const override final |
| The propagation method finds the closest surface. More...
|
|
virtual std::unique_ptr< TrackParameters > | propagateParameters (const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, ParticleHypothesis, bool, const TrackingVolume *) const override final |
| Main propagation method for parameters only. More...
|
|
virtual std::unique_ptr< TrackParameters > | propagateParameters (const EventContext &ctx, const TrackParameters &, const Surface &, const PropDirection, const BoundaryCheck &, const MagneticFieldProperties &, std::optional< TransportJacobian > &, ParticleHypothesis, bool, const TrackingVolume *) const override final |
| Main propagation method for parameters only with transport jacobian production. More...
|
|
virtual std::optional< Trk::TrackSurfaceIntersection > | intersect (const EventContext &ctx, const TrackParameters &, const Surface &, const MagneticFieldProperties &, ParticleHypothesis, const TrackingVolume *tvol=nullptr) const override final |
| Global position together with direction of the trajectory on the surface. More...
|
|
virtual void | globalPositions (const EventContext &ctx, std::deque< Amg::Vector3D > &, const TrackParameters &, const MagneticFieldProperties &, const CylinderBounds &, double, ParticleHypothesis, const TrackingVolume *tvol=nullptr) const override final |
| GlobalPositions list interface: More...
|
|
virtual bool | propagate (const EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const override final |
| Main propagation method. More...
|
|
virtual bool | propagate (const EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, double &, ParticleHypothesis particle=pion) const override final |
| Main propagation method with step to surface calculation. More...
|
|
virtual bool | propagateParameters (const EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const override final |
| Main propagation method for parameters only. More...
|
|
virtual bool | propagateParameters (const EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, double &, ParticleHypothesis particle=pion) const override final |
| Main propagation method for parameters only with step to surface calculation. More...
|
|
virtual void | globalPositions (const EventContext &ctx, const PatternTrackParameters &, std::vector< const Surface * > &, std::vector< std::pair< Amg::Vector3D, double >> &, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const override final |
|
virtual std::unique_ptr< Trk::TrackParameters > | propagateT (const EventContext &, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, PathLimit &, TimeLimit &, bool, const Trk::TrackingVolume *, std::vector< Trk::HitInfo > *&) const override final |
| unimplemented propagateT More...
|
|
virtual std::unique_ptr< Trk::TrackParameters > | propagateM (const EventContext &, const TrackParameters &, std::vector< DestSurf > &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis, std::vector< unsigned int > &, std::vector< const Trk::TrackStateOnSurface * > *&, std::vector< std::pair< std::unique_ptr< Trk::TrackParameters >, int >> *, double &, bool, bool, const Trk::TrackingVolume *, Trk::ExtrapolationCache *) const override final |
| unimplemented propagateM More...
|
|
virtual std::optional< Trk::TrackSurfaceIntersection > | intersectSurface (const EventContext &, const Surface &, const TrackSurfaceIntersection &, const double, const MagneticFieldProperties &, ParticleHypothesis) const override final |
| unimplemented intersectSurface More...
|
|
virtual Trk::ExtrapolationCode | propagate (const EventContext &, Trk::ExCellCharged &, Trk::TargetSurfaces &, Trk::TargetSurfaceVector &) const override final |
| Propagation method needed for StepEngine. More...
|
|
ServiceHandle< StoreGateSvc > & | evtStore () |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | evtStore () const |
| The standard StoreGateSvc (event store) Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
const ServiceHandle< StoreGateSvc > & | detStore () const |
| The standard StoreGateSvc/DetectorStore Returns (kind of) a pointer to the StoreGateSvc . More...
|
|
virtual StatusCode | sysInitialize () override |
| Perform system initialization for an algorithm. More...
|
|
virtual StatusCode | sysStart () override |
| Handle START transition. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | inputHandles () const override |
| Return this algorithm's input handles. More...
|
|
virtual std::vector< Gaudi::DataHandle * > | outputHandles () const override |
| Return this algorithm's output handles. More...
|
|
Gaudi::Details::PropertyBase & | declareProperty (Gaudi::Property< T > &t) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKey &hndl, const std::string &doc, const SG::VarHandleKeyType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleBase &hndl, const std::string &doc, const SG::VarHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, SG::VarHandleKeyArray &hndArr, const std::string &doc, const SG::VarHandleKeyArrayType &) |
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc, const SG::NotHandleType &) |
| Declare a new Gaudi property. More...
|
|
Gaudi::Details::PropertyBase * | declareProperty (const std::string &name, T &property, const std::string &doc="none") |
| Declare a new Gaudi property. More...
|
|
void | updateVHKA (Gaudi::Details::PropertyBase &) |
|
MsgStream & | msg () const |
|
MsgStream & | msg (const MSG::Level lvl) const |
|
bool | msgLvl (const MSG::Level lvl) const |
|
virtual bool | propagate (const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const =0 |
| Interfaces WITH EventContext (new) More...
|
|
virtual bool | propagate (const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, double &, ParticleHypothesis particle=pion) const =0 |
| Main propagation method with step to surface calculation. More...
|
|
virtual bool | propagateParameters (const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const =0 |
| Main propagation method for parameters only. More...
|
|
virtual bool | propagateParameters (const ::EventContext &ctx, PatternTrackParameters &, const Surface &, PatternTrackParameters &, PropDirection, const MagneticFieldProperties &, double &, ParticleHypothesis particle=pion) const =0 |
| Main propagation method for parameters only with step to surface calculation. More...
|
|
virtual void | globalPositions (const ::EventContext &ctx, const PatternTrackParameters &, std::vector< const Surface * > &, std::vector< std::pair< Amg::Vector3D, double > > &, const MagneticFieldProperties &, ParticleHypothesis particle=pion) const =0 |
|
Trk::RungeKuttaPropagator is an algorithm for track parameters propagation through magnetic field.
The implementation performs the propagation in global coordinates and uses Jacobian matrices (see RungeKuttaUtils) for the transformations between the global frame and local surface-attached coordinate systems.
One can choose to perform the transport of the parameters only and omit the transport of the associated covariances (propagateParameters).
The algorithm can produce the Jacobian that transports the covariance matrix from one set of track parameters at the initial surface to another set of track parameters at the destination surface. This is useful for Chi2 fitting.
It does NOT include material effects (unlike the STEP propagator). As a result the ParticleHypothesis argument is not really used. It is assumed that in the client code , the propagation, transport of the track parameters and their associated covariances, is decoupled from the actual corrections due to interaction with the detector material.
The algorithm contains three steps :
1.The first step of the algorithm is track parameters transformation from local presentation for given start surface to global Runge Kutta coordinates.
2.The second step is propagation through the magnetic field with or without jacobian.
3.Third step is transformation from global Runge Kutta presentation to local presentation of given output surface.
AtaPlane AtaStraightLine AtaDisc AtaCylinder Perigee | | | | | | | | | |
V V V V V
| Local->Global transformation V Global position (Runge Kutta presentation) | | Propagation to next surface with or without jacobian using Nystroem algorithm (See Handbook Net. Bur. of Standards, procedure 25.5.20) |
V Global->Local transformation
| | | | | | | | | | V V V V V PlaneSurface StraightLineSurface DiscSurface CylinderSurface PerigeeSurface
For propagation using Runge Kutta method we use global coordinates, direction, inverse momentum and Jacobian of transformation. All these parameters we save in an array P[42]
/dL0 /dL1 /dPhi /dThe /dCM X ->P[0] dX / P[ 7] P[14] P[21] P[28] P[35] Y ->P[1] dY / P[ 8] P[15] P[22] P[29] P[36] Z ->P[2] dZ / P[ 9] P[16] P[23] P[30] P[37] Ax ->P[3] dAx/ P[10] P[17] P[24] P[31] P[38] Ay ->P[4] dAy/ P[11] P[18] P[25] P[32] P[39] Az ->P[5] dAz/ P[12] P[19] P[26] P[33] P[40] CM ->P[6] dCM/ P[13] P[20] P[27] P[34] P[41]
where in case of local re-presentation
L0 - first local coordinate (surface dependent) L1 - second local coordinate (surface dependent) Phi - Azimuthal angle The - Polar angle CM - charge/momentum
in case of global re-presentation
X - global x-coordinate = surface dependent Y - global y-coordinate = surface dependent Z - global z-coordinate = sutface dependent Ax - direction cosine to x-axis = Sin(The)*Cos(Phi) Ay - direction cosine to y-axis = Sin(The)*Sin(Phi) Az - direction cosine to z-axis = Cos(The) CM - charge/momentum = local CM
- Author
- Igor..nosp@m.Gavr.nosp@m.ilenk.nosp@m.o@ce.nosp@m.rn.ch
- Authors
- RD Schaffer C Anastopoulos AthenaMT modifications
Definition at line 130 of file RungeKuttaPropagator.h.