ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::StraightLineStepper Class Reference

straight line stepper based on Surface intersection More...

#include <Acts/Propagator/StraightLineStepper.hpp>

Classes

struct  Config
struct  Options
struct  State
 State for track parameter propagation. More...

Public Types

using BField = NullBField
 Type alias for magnetic field (null field for straight line propagation).
using BoundState = std::tuple<BoundTrackParameters, Jacobian, double>
 Type alias for bound state containing parameters, jacobian, and path length.
using Covariance = BoundSquareMatrix
 Type alias for covariance matrix.
using Jacobian = BoundMatrix
 Type alias for transport jacobian matrix.

Public Member Functions

double absoluteMomentum (const State &state) const
 Absolute momentum accessor.
Result< BoundStateboundState (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
 Momentum direction accessor.
Result< Vector3getField (State &, const Vector3 &) const
 Get the field for the stepping, this gives back a zero field.
double getStepSize (const State &state, ConstrainedStep::Type stype) const
 Get the step size.
void initialize (State &state, const BoundTrackParameters &par) const
 Initialize the 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 the stepper state from bound parameters and components.
State makeState (const Options &options) const
 Create a stepper state from propagation options.
Vector3 momentum (const State &state) const
 Momentum accessor.
std::string outputStepSize (const State &state) const
 Output the Step Size - single component.
const ParticleHypothesisparticleHypothesis (const State &state) const
 Particle hypothesis.
Vector3 position (const State &state) const
 Global particle position accessor.
bool prepareCurvilinearState (State &state) const
 If necessary fill additional members needed for curvilinearState.
double qOverP (const State &state) const
 QoP direction accessor.
void releaseStepSize (State &state, ConstrainedStep::Type stype) const
 Release the Step size.
Result< double > step (State &state, Direction propDir, const IVolumeMaterial *material) const
 Perform a straight line propagation step.
double time (const State &state) const
 Time access.
void transportCovarianceToBound (State &state, const Surface &surface, const FreeToBoundCorrection &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 - for the moment a dummy method.
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 - for the moment a dummy method.
void update (State &state, const FreeVector &freeParams, const BoundVector &boundParams, const Covariance &covariance, const Surface &surface) const
 Method to update a stepper state to the some parameters.
void update (State &state, const Vector3 &uposition, const Vector3 &udirection, double qop, double time) const
 Method to update the stepper state.
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.

Detailed Description

straight line stepper based on Surface intersection

The straight line stepper is a simple navigation stepper to be used to navigate through the tracking geometry. It can be used for simple material mapping, navigation validation

Member Typedef Documentation

◆ BField

Type alias for magnetic field (null field for straight line propagation).

◆ BoundState

Type alias for bound state containing parameters, jacobian, and path length.

◆ Covariance

Type alias for covariance matrix.

◆ Jacobian

Type alias for transport jacobian matrix.

Member Function Documentation

◆ absoluteMomentum()

double Acts::StraightLineStepper::absoluteMomentum ( const State & state) const

Absolute momentum accessor.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Absolute momentum magnitude

◆ boundState()

Result< BoundState > Acts::StraightLineStepper::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.

It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator

Parameters
[in]stateState that will be presented as BoundState
[in]surfaceThe surface to which we bind the state
[in]transportCovFlag steering covariance transport
[in]freeToBoundCorrectionCorrection for non-linearity effect during transform from free to bound
Returns
A bound state:
  • the parameters at the surface
  • the stepwise jacobian towards it (from last bound)
  • and the path length (from start - for ordering)

◆ charge()

double Acts::StraightLineStepper::charge ( const State & state) const

Charge access.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Electric charge of the particle

◆ curvilinearState()

BoundState Acts::StraightLineStepper::curvilinearState ( State & state,
bool transportCov = true ) const

Create and return a curvilinear state at the current position.

This creates a curvilinear state.

Parameters
[in]stateState that will be presented as CurvilinearState
[in]transportCovFlag steering covariance transport
Returns
A curvilinear state:
  • the curvilinear parameters at given position
  • the stepweise jacobian towards it (from last bound)
  • and the path length (from start - for ordering)

◆ direction()

Vector3 Acts::StraightLineStepper::direction ( const State & state) const

Momentum direction accessor.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Current normalized direction vector

◆ getField()

Result< Vector3 > Acts::StraightLineStepper::getField ( State & ,
const Vector3 &  ) const

Get the field for the stepping, this gives back a zero field.

Returns
Always returns zero magnetic field vector for straight-line propagation

◆ getStepSize()

double Acts::StraightLineStepper::getStepSize ( const State & state,
ConstrainedStep::Type stype ) const

Get the step size.

Parameters
state[in] The stepping state (thread-local cache)
stype[in] The step size type to be returned
Returns
Current step size for the specified constraint type

◆ initialize() [1/2]

void Acts::StraightLineStepper::initialize ( State & state,
const BoundTrackParameters & par ) const

Initialize the stepper state from bound track parameters.

Parameters
stateThe stepper state to initialize
parThe bound track parameters to initialize from

◆ initialize() [2/2]

void Acts::StraightLineStepper::initialize ( State & state,
const BoundVector & boundParams,
const std::optional< BoundMatrix > & cov,
ParticleHypothesis particleHypothesis,
const Surface & surface ) const

Initialize the stepper state from bound parameters and components.

Parameters
stateThe stepper state to initialize
boundParamsThe bound parameter vector
covOptional covariance matrix
particleHypothesisThe particle hypothesis (mass, charge, etc.)
surfaceThe reference surface

◆ makeState()

State Acts::StraightLineStepper::makeState ( const Options & options) const

Create a stepper state from propagation options.

Parameters
optionsThe propagation options
Returns
A new stepper state initialized with the provided options

◆ momentum()

Vector3 Acts::StraightLineStepper::momentum ( const State & state) const

Momentum accessor.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Current momentum vector

◆ outputStepSize()

std::string Acts::StraightLineStepper::outputStepSize ( const State & state) const

Output the Step Size - single component.

Parameters
state[in,out] The stepping state (thread-local cache)
Returns
String representation of the current step size

◆ particleHypothesis()

const ParticleHypothesis & Acts::StraightLineStepper::particleHypothesis ( const State & state) const

Particle hypothesis.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Reference to the particle hypothesis used

◆ position()

Vector3 Acts::StraightLineStepper::position ( const State & state) const

Global particle position accessor.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Current global position vector

◆ prepareCurvilinearState()

bool Acts::StraightLineStepper::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.

Parameters
[in,out]stateThe stepping state (thread-local cache)
Returns
true if nothing is missing after this call, false otherwise.

◆ qOverP()

double Acts::StraightLineStepper::qOverP ( const State & state) const

QoP direction accessor.

Parameters
state[in] The stepping state (thread-local cache)
Returns
Charge over momentum (q/p) value

◆ releaseStepSize()

void Acts::StraightLineStepper::releaseStepSize ( State & state,
ConstrainedStep::Type stype ) const

Release the Step size.

Parameters
[in,out]stateThe stepping state (thread-local cache)
[in]stypeThe step size type to be released

◆ step()

Result< double > Acts::StraightLineStepper::step ( State & state,
Direction propDir,
const IVolumeMaterial * material ) const

Perform a straight line propagation step.

Parameters
[in,out]stateState of the stepper
propDiris the direction of propagation
materialis the optional volume material we are stepping through.
Returns
the result of the step
Note
The state contains the desired step size. It can be negative during backwards track propagation.

◆ time()

double Acts::StraightLineStepper::time ( const State & state) const

Time access.

Parameters
state[in] The stepping state (thread-local cache)
Returns
The time coordinate from the free parameters vector

◆ transportCovarianceToBound()

void Acts::StraightLineStepper::transportCovarianceToBound ( State & state,
const Surface & surface,
const FreeToBoundCorrection & 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 - for the moment a dummy method.

Template Parameters
surface_tthe surface type - ignored here
Parameters
[in,out]stateThe stepper state
[in]surfaceis the surface to which the covariance is forwarded to
Note
no check is done if the position is actually on the surface
Parameters
[in]freeToBoundCorrectionCorrection for non-linearity effect during transform from free to bound

◆ transportCovarianceToCurvilinear()

void Acts::StraightLineStepper::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 - for the moment a dummy method.

Parameters
[in,out]stateState of the stepper

◆ update() [1/2]

void Acts::StraightLineStepper::update ( State & state,
const FreeVector & freeParams,
const BoundVector & boundParams,
const Covariance & covariance,
const Surface & surface ) const

Method to update a stepper state to the some parameters.

Parameters
[in,out]stateState object that will be updated
[in]freeParamsFree parameters that will be written into state
[in]boundParamsCorresponding bound parameters used to update jacToGlobal in state
[in]covarianceCovariance that will be written into state
[in]surfaceThe surface used to update the jacToGlobal

◆ update() [2/2]

void Acts::StraightLineStepper::update ( State & state,
const Vector3 & uposition,
const Vector3 & udirection,
double qop,
double time ) const

Method to update the stepper state.

Parameters
[in,out]stateState object that will be updated
[in]upositionthe updated position
[in]udirectionthe updated direction
[in]qopthe updated qop value
[in]timethe updated time value

◆ updateStepSize() [1/2]

void Acts::StraightLineStepper::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

Parameters
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

◆ updateStepSize() [2/2]

void Acts::StraightLineStepper::updateStepSize ( State & state,
double stepSize,
ConstrainedStep::Type stype ) const

Update step size - explicitly with a double.

Parameters
state[in,out] The stepping state (thread-local cache)
stepSize[in] The step size value
stype[in] The step size type to be set

◆ updateSurfaceStatus()

IntersectionStatus Acts::StraightLineStepper::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 intersects 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.

Parameters
[in,out]stateThe stepping state (thread-local cache)
[in]surfaceThe surface provided
[in]indexThe surface intersection index
[in]navDirThe navigation direction
[in]boundaryToleranceThe boundary check for this status update
[in]surfaceToleranceSurface tolerance used for intersection
[in]stypeThe step size type to be set
[in]loggerA logger instance
Returns
Status of the intersection indicating whether surface was reached