|
ACTS
Experiment-independent tracking
|
the AtlasStepper implementation for the More...
#include <Acts/Propagator/AtlasStepper.hpp>
Classes | |
| struct | Config |
| struct | Options |
| struct | State |
| Nested State struct for the local caching. More... | |
Public Types | |
| using | BoundState = std::tuple<BoundTrackParameters, Jacobian, double> |
| Type alias for bound state (parameters, jacobian, path length). | |
| using | Covariance = BoundSquareMatrix |
| Type alias for covariance matrix. | |
| using | Jacobian = BoundMatrix |
| Type alias for Jacobian matrix. | |
Public Member Functions | |
| AtlasStepper (const Config &config) | |
| Construct AtlasStepper with configuration. | |
| AtlasStepper (std::shared_ptr< const MagneticFieldProvider > bField) | |
| Construct AtlasStepper with magnetic field provider. | |
| double | absoluteMomentum (const State &state) const |
| Absolute momentum accessor. | |
| Result< BoundState > | boundState (State &state, const Surface &surface, bool transportCov=true, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const |
| Create and return the bound state at the current position. | |
| double | charge (const State &state) const |
| Charge access. | |
| BoundState | curvilinearState (State &state, bool transportCov=true) const |
| Create and return a curvilinear state at the current position. | |
| Vector3 | direction (const State &state) const |
| Get particle direction from stepper state. | |
| Result< Vector3 > | getField (State &state, const Vector3 &pos) const |
| Get the field for the stepping It checks first if the access is still within the Cell, and updates the cell if necessary, then it takes the field from the cell. | |
| double | getStepSize (const State &state, ConstrainedStep::Type stype) const |
| Get the step size. | |
| void | initialize (State &state, const BoundTrackParameters &par) const |
| Initialize stepper state from bound track parameters. | |
| void | initialize (State &state, const BoundVector &boundParams, const std::optional< BoundMatrix > &cov, ParticleHypothesis particleHypothesis, const Surface &surface) const |
| Initialize stepper state from individual parameters. | |
| State | makeState (const Options &options) const |
| Create stepper state with given options. | |
| Vector3 | momentum (const State &state) const |
| Get 3D momentum vector from stepper state. | |
| std::string | outputStepSize (const State &state) const |
| Output the Step Size - single component. | |
| double | overstepLimit (const State &) const |
| Overstep limit. | |
| const ParticleHypothesis & | particleHypothesis (const State &state) const |
| Particle hypothesis. | |
| Vector3 | position (const State &state) const |
| Get particle position from stepper state. | |
| bool | prepareCurvilinearState (State &state) const |
| If necessary fill additional members needed for curvilinearState. | |
| double | qOverP (const State &state) const |
| Get charge over momentum from stepper state. | |
| void | releaseStepSize (State &state, ConstrainedStep::Type stype) const |
| Release the Step size. | |
| void | setIdentityJacobian (State &state) const |
| Method that reset the Jacobian to the Identity for when no bound state are available. | |
| Result< double > | step (State &state, Direction propDir, const IVolumeMaterial *material) const |
| Perform the actual step on the state. | |
| double | time (const State &state) const |
| Time access. | |
| void | transportCovarianceToBound (State &state, const Surface &surface, const FreeToBoundCorrection &=FreeToBoundCorrection(false)) const |
| Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state. | |
| void | transportCovarianceToCurvilinear (State &state) const |
| Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state. | |
| void | update (State &state, const FreeVector ¶meters, const BoundVector &boundParams, const Covariance &covariance, const Surface &surface) const |
| The state update method. | |
| void | update (State &state, const Vector3 &uposition, const Vector3 &udirection, double qop, double time) const |
| Method to update momentum, direction and p. | |
| void | updateStepSize (State &state, const NavigationTarget &target, Direction direction, ConstrainedStep::Type stype) const |
| Update step size. | |
| void | updateStepSize (State &state, double stepSize, ConstrainedStep::Type stype) const |
| Update step size - explicitly with a double. | |
| IntersectionStatus | updateSurfaceStatus (State &state, const Surface &surface, std::uint8_t index, Direction navDir, const BoundaryTolerance &boundaryTolerance, double surfaceTolerance, ConstrainedStep::Type stype, const Logger &logger=getDummyLogger()) const |
| Update surface status. | |
the AtlasStepper implementation for the
This is based original stepper code from the ATLAS RungeKuttaPropagator
| using Acts::AtlasStepper::BoundState = std::tuple<BoundTrackParameters, Jacobian, double> |
Type alias for bound state (parameters, jacobian, path length).
Type alias for covariance matrix.
Type alias for Jacobian matrix.
|
explicit |
Construct AtlasStepper with magnetic field provider.
| bField | Shared pointer to magnetic field provider |
|
explicit |
Construct AtlasStepper with configuration.
| config | Configuration containing magnetic field provider and other settings |
| double Acts::AtlasStepper::absoluteMomentum | ( | const State & | state | ) | const |
Absolute momentum accessor.
| state | [in] The stepping state (thread-local cache) |
| Result< BoundState > Acts::AtlasStepper::boundState | ( | State & | state, |
| const Surface & | surface, | ||
| bool | transportCov = true, | ||
| const FreeToBoundCorrection & | freeToBoundCorrection = FreeToBoundCorrection(false) ) const |
Create and return the bound state at the current position.
| [in] | state | State that will be presented as BoundState |
| [in] | surface | The surface to which we bind the state |
| [in] | transportCov | Flag steering covariance transport |
| [in] | freeToBoundCorrection | Correction for non-linearity effect during transform from free to bound |
| double Acts::AtlasStepper::charge | ( | const State & | state | ) | const |
Charge access.
| state | [in] The stepping state (thread-local cache) |
| BoundState Acts::AtlasStepper::curvilinearState | ( | State & | state, |
| bool | transportCov = true ) const |
Create and return a curvilinear state at the current position.
| [in] | state | State that will be presented as CurvilinearState |
| [in] | transportCov | Flag steering covariance transport |
Get particle direction from stepper state.
| state | Stepper state containing track information |
Get the field for the stepping It checks first if the access is still within the Cell, and updates the cell if necessary, then it takes the field from the cell.
| [in,out] | state | is the stepper state associated with the track the magnetic field cell is used (and potentially updated) |
| [in] | pos | is the field position |
| double Acts::AtlasStepper::getStepSize | ( | const State & | state, |
| ConstrainedStep::Type | stype ) const |
Get the step size.
| state | [in] The stepping state (thread-local cache) |
| stype | [in] The step size type to be returned |
| void Acts::AtlasStepper::initialize | ( | State & | state, |
| const BoundTrackParameters & | par ) const |
Initialize stepper state from bound track parameters.
| state | Stepper state to initialize |
| par | Bound track parameters containing initial conditions |
| void Acts::AtlasStepper::initialize | ( | State & | state, |
| const BoundVector & | boundParams, | ||
| const std::optional< BoundMatrix > & | cov, | ||
| ParticleHypothesis | particleHypothesis, | ||
| const Surface & | surface ) const |
Initialize stepper state from individual parameters.
| state | Stepper state to initialize |
| boundParams | Bound track parameter vector |
| cov | Optional covariance matrix |
| particleHypothesis | Particle hypothesis (mass, charge) |
| surface | Reference surface for bound parameters |
Create stepper state with given options.
| options | Stepper options including magnetic field context |
Get 3D momentum vector from stepper state.
| state | Stepper state containing track information |
| std::string Acts::AtlasStepper::outputStepSize | ( | const State & | state | ) | const |
Output the Step Size - single component.
| [in,out] | state | The stepping state (thread-local cache) |
| double Acts::AtlasStepper::overstepLimit | ( | const State & | ) | const |
Overstep limit.
| const ParticleHypothesis & Acts::AtlasStepper::particleHypothesis | ( | const State & | state | ) | const |
Particle hypothesis.
| state | [in] The stepping state (thread-local cache) |
Get particle position from stepper state.
| state | Stepper state containing track information |
| bool Acts::AtlasStepper::prepareCurvilinearState | ( | State & | state | ) | const |
If necessary fill additional members needed for curvilinearState.
Compute path length derivatives in case they have not been computed yet, which is the case if no step has been executed yet.
| [in,out] | state | The stepping state (thread-local cache) |
| double Acts::AtlasStepper::qOverP | ( | const State & | state | ) | const |
Get charge over momentum from stepper state.
| state | Stepper state containing track information |
| void Acts::AtlasStepper::releaseStepSize | ( | State & | state, |
| ConstrainedStep::Type | stype ) const |
Release the Step size.
| [in,out] | state | The stepping state (thread-local cache) |
| [in] | stype | The step size type to be released |
| void Acts::AtlasStepper::setIdentityJacobian | ( | State & | state | ) | const |
Method that reset the Jacobian to the Identity for when no bound state are available.
| [in,out] | state | State of the stepper |
| Result< double > Acts::AtlasStepper::step | ( | State & | state, |
| Direction | propDir, | ||
| const IVolumeMaterial * | material ) const |
Perform the actual step on the state.
| [in,out] | state | State of the stepper |
| propDir | is the direction of propagation | |
| material | is the optional volume material we are stepping through. |
| double Acts::AtlasStepper::time | ( | const State & | state | ) | const |
Time access.
| state | The stepping state to get time from |
| void Acts::AtlasStepper::transportCovarianceToBound | ( | State & | state, |
| const Surface & | surface, | ||
| const FreeToBoundCorrection & | = FreeToBoundCorrection(false) ) const |
Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state.
| [in,out] | state | State of the stepper |
| [in] | surface | is the surface to which the covariance is forwarded to |
| void Acts::AtlasStepper::transportCovarianceToCurvilinear | ( | State & | state | ) | const |
Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state.
| [in,out] | state | State of the stepper |
| void Acts::AtlasStepper::update | ( | State & | state, |
| const FreeVector & | parameters, | ||
| const BoundVector & | boundParams, | ||
| const Covariance & | covariance, | ||
| const Surface & | surface ) const |
The state update method.
| [in,out] | state | The stepper state for |
| [in] | parameters | The new free track parameters at start |
| [in] | boundParams | Corresponding bound parameters |
| [in] | covariance | The updated covariance matrix |
| [in] | surface | The surface used to update the pVector |
| void Acts::AtlasStepper::update | ( | State & | state, |
| const Vector3 & | uposition, | ||
| const Vector3 & | udirection, | ||
| double | qop, | ||
| double | time ) const |
Method to update momentum, direction and p.
| state | The state object |
| uposition | the updated position |
| udirection | the updated direction |
| qop | the updated momentum value |
| time | the update time |
| void Acts::AtlasStepper::updateStepSize | ( | State & | state, |
| const NavigationTarget & | target, | ||
| Direction | direction, | ||
| ConstrainedStep::Type | stype ) const |
Update step size.
It checks the status to the reference surface & updates the step size accordingly
| state | [in,out] The stepping state (thread-local cache) |
| target | [in] The NavigationTarget |
| direction | [in] The propagation direction |
| stype | [in] The step size type to be set |
| void Acts::AtlasStepper::updateStepSize | ( | State & | state, |
| double | stepSize, | ||
| ConstrainedStep::Type | stype ) const |
Update step size - explicitly with a double.
| [in,out] | state | The stepping state (thread-local cache) |
| [in] | stepSize | The step size value |
| [in] | stype | The step size type to be set |
| IntersectionStatus Acts::AtlasStepper::updateSurfaceStatus | ( | State & | state, |
| const Surface & | surface, | ||
| std::uint8_t | index, | ||
| Direction | navDir, | ||
| const BoundaryTolerance & | boundaryTolerance, | ||
| double | surfaceTolerance, | ||
| ConstrainedStep::Type | stype, | ||
| const Logger & | logger = getDummyLogger() ) const |
Update surface status.
This method intersect the provided surface and update the navigation step estimation accordingly (hence it changes the state). It also returns the status of the intersection to trigger onSurface in case the surface is reached.
| [in,out] | state | The stepping state (thread-local cache) |
| [in] | surface | The surface provided |
| [in] | index | The surface intersection index |
| [in] | navDir | The navigation direction |
| [in] | boundaryTolerance | The boundary check for this status update |
| [in] | surfaceTolerance | Surface tolerance used for intersection |
| [in] | stype | The step size type to be set |
| [in] | logger | Logger instance to use |