LArSoft
v09_90_00
Liquid Argon Software toolkit - https://larsoft.org/
|
Base class for Kalman filter track propagator. More...
#include "lardata/RecoObjects/Interactor.h"
#include "lardata/RecoObjects/KETrack.h"
#include "lardata/RecoObjects/KalmanLinearAlgebra.h"
#include <memory>
#include <optional>
Go to the source code of this file.
Classes | |
class | trkf::Propagator |
Namespaces | |
detinfo | |
General LArSoft Utilities. | |
trkf | |
Base class for Kalman filter track propagator.
This class provides the general interface for propagating a track (KTrack or KETrack) from its current surface to some destionation surface.
This class supports various use cases.
Methods short_vec_prop and origin_vec_prop are pure virtual.
Other methods are implemented by calling short_vec_prop internally.
The long distance propagation method (vec_prop) divides propagation into steps if the distance exceeds some threshold
Linearized propagation uses a linear approximation of the propagation function with respect to some reference trajectory. This type of propagation only makes sense for short distance propagation, so lin_prop is implemented by calling short_vec_prop.
All of the *vec_prop methods include optional hooks for returning the propagation matrix and the noise matrix. These hooks provide enough information to propagate the error matrix (methods err_prop and noise_prop) locally within this class in terms of method vec_prop (so long distance propagation with error is supported).
All propagation methods update the surface and track state vector, provided the propagation is successful. The error and noise propagation methods additionally update the track error matrix.
In case of propagation failure, all propagation methods promise to leave the original track unmodified.
Use case three (propagate with error, but without noise) updates the track error matrix reversibly.
Use case four (propagate with error and noise) adds irreversible propagation noise to the error matrix.
All propagation methods except origin_vec_prop allow the direction of propagation to be specified as forward, backward, or unknown. If the direction is specified as unknown, the propagator decides which direction to use.
All propagation methods return the propagation distance as a value of type std::optional<double>. This type of value is equivalent to the contained value (that is, the propagation distance), plus a flag indicating whether the contained value is initialized. A non-initialized return value means that the propagation failed.
Calculation of dE/dx can be enabled or disabled by a flag passed to the constructor, as well as by a flag passed to individual propagation methods. Nonzero energy loss will take place only if both flags are true.
Method origin_vec_prop always returns a propgation distance of zero (if successful). Origin propagation does not calculate noise (noise is zero by definition). Origin propagation does not accept or need a propgation direction or dE/dx flag.
Definition in file Propagator.h.