Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::AtlasStepper Class Reference

the AtlasStepper implementation for the More...

#include <acts/blob/sPHENIX/Core/include/Acts/Propagator/AtlasStepper.hpp>

Classes

struct  State
 Nested State struct for the local caching. More...
 

Public Types

using Jacobian = BoundMatrix
 
using Covariance = BoundSquareMatrix
 
using BoundState = std::tuple< BoundTrackParameters, Jacobian, double >
 
using CurvilinearState = std::tuple< CurvilinearTrackParameters, Jacobian, double >
 

Public Member Functions

 AtlasStepper (std::shared_ptr< const MagneticFieldProvider > bField)
 
State makeState (std::reference_wrapper< const GeometryContext > gctx, std::reference_wrapper< const MagneticFieldContext > mctx, const BoundTrackParameters &par, double ssize=std::numeric_limits< double >::max(), double stolerance=s_onSurfaceTolerance) const
 
void resetState (State &state, const BoundVector &boundParams, const BoundSquareMatrix &cov, const Surface &surface, const double stepSize=std::numeric_limits< double >::max()) const
 Resets the state.
 
Result< Vector3getField (State &state, const Vector3 &pos) const
 
Vector3 position (const State &state) const
 
Vector3 direction (const State &state) const
 
double qOverP (const State &state) const
 
double absoluteMomentum (const State &state) const
 
Vector3 momentum (const State &state) const
 
double charge (const State &state) const
 
const ParticleHypothesisparticleHypothesis (const State &state) const
 
double overstepLimit (const State &state) const
 
double time (const State &state) const
 Time access.
 
Intersection3D::Status updateSurfaceStatus (State &state, const Surface &surface, Direction navDir, const BoundaryCheck &bcheck, ActsScalar surfaceTolerance=s_onSurfaceTolerance, const Logger &logger=getDummyLogger()) const
 
template<typename object_intersection_t >
void updateStepSize (State &state, const object_intersection_t &oIntersection, Direction, bool release=true) const
 
void setStepSize (State &state, double stepSize, ConstrainedStep::Type stype=ConstrainedStep::actor, bool release=true) const
 
double getStepSize (const State &state, ConstrainedStep::Type stype) const
 
void releaseStepSize (State &state) const
 
std::string outputStepSize (const State &state) const
 
Result< BoundStateboundState (State &state, const Surface &surface, bool transportCov=true, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const
 
CurvilinearState curvilinearState (State &state, bool transportCov=true) const
 
void update (State &state, const FreeVector &parameters, const BoundVector &boundParams, const Covariance &covariance, const Surface &surface) const
 
void update (State &state, const Vector3 &uposition, const Vector3 &udirection, double qop, double time) const
 
void transportCovarianceToCurvilinear (State &state) const
 
void transportCovarianceToBound (State &state, const Surface &surface, const FreeToBoundCorrection &=FreeToBoundCorrection(false)) const
 
template<typename propagator_state_t , typename navigator_t >
Result< doublestep (propagator_state_t &state, const navigator_t &) const
 
void setIdentityJacobian (State &state) const
 

Private Attributes

std::shared_ptr< const
MagneticFieldProvider
m_bField
 
double m_overstepLimit = 100 * UnitConstants::um
 Overstep limit: could/should be dynamic.
 

Detailed Description

the AtlasStepper implementation for the

Definition at line 35 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 35 of file AtlasStepper.hpp

Member Typedef Documentation

Definition at line 39 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 39 of file AtlasStepper.hpp

Definition at line 38 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 38 of file AtlasStepper.hpp

Definition at line 41 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 41 of file AtlasStepper.hpp

Definition at line 37 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 37 of file AtlasStepper.hpp

Constructor & Destructor Documentation

Acts::AtlasStepper::AtlasStepper ( std::shared_ptr< const MagneticFieldProvider bField)
inline

Definition at line 293 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 293 of file AtlasStepper.hpp

Member Function Documentation

double Acts::AtlasStepper::absoluteMomentum ( const State state) const
inline

Absolute momentum accessor

Parameters
state[in] The stepping state (thread-local cache)

Definition at line 355 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 355 of file AtlasStepper.hpp

References particleHypothesis(), and qOverP().

Referenced by momentum(), and step().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

Result<BoundState> Acts::AtlasStepper::boundState ( State state,
const Surface surface,
bool  transportCov = true,
const FreeToBoundCorrection freeToBoundCorrection = FreeToBoundCorrection(false) 
) const
inline

Create and return the bound state at the current position

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
  • and the path length (from start - for ordering)

Definition at line 471 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 471 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::cov, Acts::AtlasStepper::State::covTransport, Acts::GenericBoundTrackParameters< ParticleHypothesis >::create(), Acts::eMom0, Acts::eMom1, Acts::eMom2, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::eTime, Acts::AtlasStepper::State::geoContext, Acts::Surface::getSharedPtr(), Acts::AtlasStepper::State::jacobian, testing::internal::move(), Dataset::parameters, Acts::AtlasStepper::State::particleHypothesis, Acts::AtlasStepper::State::pathAccumulated, Acts::Test::pos4(), Acts::AtlasStepper::State::pVector, qOverP(), Acts::AtlasStepper::State::state_ready, and transportCovarianceToBound().

+ Here is the call graph for this function:

double Acts::AtlasStepper::charge ( const State state) const
inline

Charge access

Parameters
state[in] The stepping state (thread-local cache)

Definition at line 366 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 366 of file AtlasStepper.hpp

References particleHypothesis(), and qOverP().

Referenced by step().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

CurvilinearState Acts::AtlasStepper::curvilinearState ( State state,
bool  transportCov = true 
) const
inline

Create and return a curvilinear state at the current position

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
  • and the path length (from start - for ordering)

Definition at line 522 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 522 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::cov, Acts::AtlasStepper::State::covTransport, Acts::eMom0, Acts::eMom1, Acts::eMom2, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::eTime, Acts::AtlasStepper::State::jacobian, testing::internal::move(), Dataset::parameters, Acts::AtlasStepper::State::particleHypothesis, Acts::AtlasStepper::State::pathAccumulated, Acts::Test::pos4(), Acts::AtlasStepper::State::pVector, qOverP(), Acts::AtlasStepper::State::state_ready, and transportCovarianceToCurvilinear().

+ Here is the call graph for this function:

Vector3 Acts::AtlasStepper::direction ( const State state) const
inline

Definition at line 346 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 346 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::pVector.

Referenced by momentum(), and update().

+ Here is the caller graph for this function:

Result<Vector3> Acts::AtlasStepper::getField ( State state,
const Vector3 pos 
) const
inline

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

Parameters
[in,out]stateis the stepper state associated with the track the magnetic field cell is used (and potentially updated)
[in]posis the field position

Definition at line 333 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 333 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::field, Acts::AtlasStepper::State::fieldCache, and m_bField.

Referenced by step().

+ Here is the caller graph for this function:

double Acts::AtlasStepper::getStepSize ( const State state,
ConstrainedStep::Type  stype 
) const
inline

Get the step size

Parameters
state[in] The stepping state (thread-local cache)
stype[in] The step size type to be returned

Definition at line 441 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 441 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::stepSize, and Acts::ConstrainedStep::value().

+ Here is the call graph for this function:

State Acts::AtlasStepper::makeState ( std::reference_wrapper< const GeometryContext gctx,
std::reference_wrapper< const MagneticFieldContext mctx,
const BoundTrackParameters par,
double  ssize = std::numeric_limits<double>::max(),
double  stolerance = s_onSurfaceTolerance 
) const
inline

Definition at line 296 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 296 of file AtlasStepper.hpp

References gctx, and m_bField.

Vector3 Acts::AtlasStepper::momentum ( const State state) const
inline

Definition at line 359 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 359 of file AtlasStepper.hpp

References absoluteMomentum(), and direction().

+ Here is the call graph for this function:

std::string Acts::AtlasStepper::outputStepSize ( const State state) const
inline

Output the Step Size - single component

Parameters
[in,out]stateThe stepping state (thread-local cache)

Definition at line 455 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 455 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::stepSize, and Acts::ConstrainedStep::toString().

+ Here is the call graph for this function:

double Acts::AtlasStepper::overstepLimit ( const State state) const
inline

Overstep limit

Parameters
stateThe stepping state (thread-local cache)

Definition at line 380 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 380 of file AtlasStepper.hpp

References m_overstepLimit.

const ParticleHypothesis& Acts::AtlasStepper::particleHypothesis ( const State state) const
inline

Particle hypothesis

Parameters
state[in] The stepping state (thread-local cache)

Definition at line 373 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 373 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::particleHypothesis.

Referenced by absoluteMomentum(), charge(), and step().

+ Here is the caller graph for this function:

Vector3 Acts::AtlasStepper::position ( const State state) const
inline

Definition at line 342 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 342 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::pVector.

double Acts::AtlasStepper::qOverP ( const State state) const
inline

Definition at line 350 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 350 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::pVector.

Referenced by absoluteMomentum(), boundState(), charge(), and curvilinearState().

+ Here is the caller graph for this function:

void Acts::AtlasStepper::releaseStepSize ( State state) const
inline

Release the Step size

Parameters
[in,out]stateThe stepping state (thread-local cache)

Definition at line 448 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 448 of file AtlasStepper.hpp

References Acts::ConstrainedStep::actor, Acts::ConstrainedStep::release(), and Acts::AtlasStepper::State::stepSize.

+ Here is the call graph for this function:

void Acts::AtlasStepper::resetState ( State state,
const BoundVector boundParams,
const BoundSquareMatrix cov,
const Surface surface,
const double  stepSize = std::numeric_limits<double>::max() 
) const
inline

Resets the state.

Parameters
[in,out]stateState of the stepper
[in]boundParamsParameters in bound parametrisation
[in]covCovariance matrix
[in]surfaceReset state will be on this surface
[in]stepSizeStep size

Definition at line 311 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 311 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::geoContext, Acts::AtlasStepper::State::pathAccumulated, setIdentityJacobian(), Acts::Test::stepSize, Acts::AtlasStepper::State::stepSize, Acts::detail::transformBoundToFreeParameters(), and update().

+ Here is the call graph for this function:

void Acts::AtlasStepper::setIdentityJacobian ( State state) const
inline

Method that reset the Jacobian to the Identity for when no bound state are available

Parameters
[in,out]stateState of the stepper

Definition at line 1388 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 1388 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::jacobian.

Referenced by resetState().

+ Here is the caller graph for this function:

void Acts::AtlasStepper::setStepSize ( State state,
double  stepSize,
ConstrainedStep::Type  stype = ConstrainedStep::actor,
bool  release = true 
) const
inline

Set Step size - explicitly with a double

Parameters
[in,out]stateThe stepping state (thread-local cache)
[in]stepSizeThe step size value
[in]stypeThe step size type to be set
release[in] Do we release the step size?

Definition at line 430 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 430 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::previousStepSize, Acts::AtlasStepper::State::stepSize, Acts::ConstrainedStep::update(), and Acts::ConstrainedStep::value().

+ Here is the call graph for this function:

template<typename propagator_state_t , typename navigator_t >
Result<double> Acts::AtlasStepper::step ( propagator_state_t &  state,
const navigator_t &   
) const
inline

Perform the actual step on the state

Parameters
stateis the provided stepper state (caller keeps thread locality)

Definition at line 1127 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 1127 of file AtlasStepper.hpp

References A, absoluteMomentum(), charge(), dR(), f, getField(), h, mass, particleHypothesis(), Acts::Test::pos, and Acts::IntegrationTest::R.

+ Here is the call graph for this function:

double Acts::AtlasStepper::time ( const State state) const
inline

Time access.

Definition at line 386 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 386 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::pVector.

Referenced by update().

+ Here is the caller graph for this function:

void Acts::AtlasStepper::transportCovarianceToBound ( State state,
const Surface surface,
const FreeToBoundCorrection = FreeToBoundCorrection(false) 
) const
inline

Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state

Parameters
[in,out]stateState of the stepper
[in]surfaceis the surface to which the covariance is forwarded to

Definition at line 900 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 900 of file AtlasStepper.hpp

References KFPMath::a, A, C, Acts::Surface::center(), Acts::AtlasStepper::State::cov, Acts::AtlasStepper::State::covariance, Acts::Surface::Disc, Acts::UnitConstants::e, Acts::AtlasStepper::State::geoContext, i, Acts::UnitConstants::J, Acts::AtlasStepper::State::jacobian, merge_hashes::p, P(), Acts::Surface::Perigee, Acts::AtlasStepper::State::pVector, R2, Acts::Surface::referenceFrame(), S(), Acts::Surface::Straw, Acts::Surface::type(), TauVsDIS_MachineLearning_Differentiation::X, ambiguity_solver_full_chain::x, y, TauVsDIS_MachineLearning_Differentiation::Y, SVM_v1::Z, and physmon_track_finding_ttbar::z.

Referenced by boundState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::AtlasStepper::transportCovarianceToCurvilinear ( State state) const
inline

Method for on-demand transport of the covariance to a new curvilinear frame at current position, or direction of the state

Parameters
[in,out]stateState of the stepper

Definition at line 750 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 750 of file AtlasStepper.hpp

References A, testing::An(), C, Acts::AtlasStepper::State::cov, Acts::AtlasStepper::State::covariance, Acts::UnitConstants::e, i, Acts::UnitConstants::J, Acts::AtlasStepper::State::jacobian, merge_hashes::p, P(), Acts::AtlasStepper::State::pVector, and S().

Referenced by curvilinearState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

void Acts::AtlasStepper::update ( State state,
const FreeVector parameters,
const BoundVector boundParams,
const Covariance covariance,
const Surface surface 
) const
inline

The state update method

Parameters
[in,out]stateThe stepper state for
[in]parametersThe new free track parameters at start
[in]boundParamsCorresponding bound parameters
[in]covarianceThe updated covariance matrix
[in]surfaceThe surface used to update the pVector

Definition at line 562 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 562 of file AtlasStepper.hpp

References A, C, Jetscape::Cf, autodiff::detail::copysign(), Acts::AtlasStepper::State::covariance, Acts::AtlasStepper::State::covTransport, direction(), Acts::Surface::Disc, Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundTheta, Acts::eFreeDir0, Acts::eFreePos0, Acts::eFreePos1, Acts::eFreePos2, Acts::eFreeQOverP, Acts::eFreeTime, Acts::AtlasStepper::State::geoContext, Acts::Surface::Perigee, Acts::Test::pos, Acts::AtlasStepper::State::pVector, Acts::Surface::referenceFrame(), Acts::AtlasStepper::State::state_ready, Acts::Surface::Straw, Acts::Test::transform, Acts::Surface::type(), and Acts::AtlasStepper::State::useJacobian.

Referenced by resetState().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

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

Method to update momentum, direction and p

Parameters
stateThe state object
upositionthe updated position
udirectionthe updated direction
qopthe updated momentum value
timethe update time

Definition at line 732 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 732 of file AtlasStepper.hpp

References Acts::AtlasStepper::State::pVector, and time().

+ Here is the call graph for this function:

template<typename object_intersection_t >
void Acts::AtlasStepper::updateStepSize ( State state,
const object_intersection_t &  oIntersection,
Direction  ,
bool  release = true 
) const
inline

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)
oIntersection[in] The ObjectIntersection to layer, boundary, etc
release[in] boolean to trigger step size release

Definition at line 419 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 419 of file AtlasStepper.hpp

References filter::state.

Intersection3D::Status Acts::AtlasStepper::updateSurfaceStatus ( State state,
const Surface surface,
Direction  navDir,
const BoundaryCheck bcheck,
ActsScalar  surfaceTolerance = s_onSurfaceTolerance,
const Logger logger = getDummyLogger() 
) const
inline

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.

Parameters
[in,out]stateThe stepping state (thread-local cache)
[in]surfaceThe surface provided
[in]navDirThe navigation direction
[in]bcheckThe boundary check for this status update
[in]surfaceToleranceSurface tolerance used for intersection
[in]loggerLogger instance to use

Definition at line 401 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 401 of file AtlasStepper.hpp

References logger(), Acts::Test::navDir, filter::state, and writeMapConfig::surface.

+ Here is the call graph for this function:

Member Data Documentation

std::shared_ptr<const MagneticFieldProvider> Acts::AtlasStepper::m_bField
private

Definition at line 1433 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 1433 of file AtlasStepper.hpp

Referenced by getField(), and makeState().

double Acts::AtlasStepper::m_overstepLimit = 100 * UnitConstants::um
private

Overstep limit: could/should be dynamic.

Definition at line 1436 of file AtlasStepper.hpp.

View newest version in sPHENIX GitHub at line 1436 of file AtlasStepper.hpp

Referenced by overstepLimit().


The documentation for this class was generated from the following file: