EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::AtlasStepper< bfield_t > Class Template 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 = BoundSymMatrix
 
using BoundState = std::tuple< BoundTrackParameters, Jacobian, double >
 
using CurvilinearState = std::tuple< CurvilinearTrackParameters, Jacobian, double >
 
using BField = bfield_t
 

Public Member Functions

 AtlasStepper (bfield_t bField)
 
void resetState (State &state, const BoundVector &boundParams, const BoundSymMatrix &cov, const Surface &surface, const NavigationDirection navDir=forward, const double stepSize=std::numeric_limits< double >::max()) const
 Resets the state.
 
Vector3D getField (State &state, const Vector3D &pos) const
 
Vector3D position (const State &state) const
 
Vector3D direction (const State &state) const
 
double momentum (const State &state) const
 
double charge (const State &state) const
 Charge access.
 
double overstepLimit (const State &) const
 
double time (const State &state) const
 Time access.
 
Intersection3D::Status updateSurfaceStatus (State &state, const Surface &surface, const BoundaryCheck &bcheck) const
 
template<typename object_intersection_t >
void updateStepSize (State &state, const object_intersection_t &oIntersection, bool release=true) const
 
void setStepSize (State &state, double stepSize, ConstrainedStep::Type stype=ConstrainedStep::actor) const
 
void releaseStepSize (State &state) const
 
std::string outputStepSize (const State &state) const
 
BoundState boundState (State &state, const Surface &surface) const
 
CurvilinearState curvilinearState (State &state) const
 
void update (State &state, const FreeVector &parameters, const Covariance &covariance) const
 
void update (State &state, const Vector3D &uposition, const Vector3D &udirection, double up, double time) const
 
void covarianceTransport (State &state) const
 
void covarianceTransport (State &state, const Surface &surface) const
 
template<typename propagator_state_t >
Result< double > step (propagator_state_t &state) const
 

Private Attributes

bfield_t m_bField
 
double m_overstepLimit = -50_um
 Overstep limit: could/should be dynamic.
 

Detailed Description

template<typename bfield_t>
class Acts::AtlasStepper< bfield_t >

the AtlasStepper implementation for the

Definition at line 36 of file AtlasStepper.hpp.

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

Member Typedef Documentation

template<typename bfield_t >
using Acts::AtlasStepper< bfield_t >::BField = bfield_t

Definition at line 44 of file AtlasStepper.hpp.

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

template<typename bfield_t >
using Acts::AtlasStepper< bfield_t >::BoundState = std::tuple<BoundTrackParameters, Jacobian, double>

Definition at line 40 of file AtlasStepper.hpp.

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

template<typename bfield_t >
using Acts::AtlasStepper< bfield_t >::Covariance = BoundSymMatrix

Definition at line 39 of file AtlasStepper.hpp.

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

template<typename bfield_t >
using Acts::AtlasStepper< bfield_t >::CurvilinearState = std::tuple<CurvilinearTrackParameters, Jacobian, double>

Definition at line 42 of file AtlasStepper.hpp.

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

template<typename bfield_t >
using Acts::AtlasStepper< bfield_t >::Jacobian = BoundMatrix

Definition at line 38 of file AtlasStepper.hpp.

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

Constructor & Destructor Documentation

template<typename bfield_t >
Acts::AtlasStepper< bfield_t >::AtlasStepper ( bfield_t  bField)
inline

Definition at line 305 of file AtlasStepper.hpp.

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

Member Function Documentation

template<typename bfield_t >
BoundState Acts::AtlasStepper< bfield_t >::boundState ( State state,
const Surface surface 
) 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
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 566 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::cov, Acts::detail::covarianceTransport(), Acts::AtlasStepper< bfield_t >::State::covTransport, Acts::eMom0, Acts::eMom1, Acts::eMom2, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::eTime, Acts::AtlasStepper< bfield_t >::State::geoContext, Acts::Surface::getSharedPtr(), Acts::AtlasStepper< bfield_t >::State::jacobian, Dataset::parameters, Acts::AtlasStepper< bfield_t >::State::pathAccumulated, Acts::Test::pos4(), Acts::AtlasStepper< bfield_t >::State::pVector, and Acts::AtlasStepper< bfield_t >::State::state_ready.

+ Here is the call graph for this function:

template<typename bfield_t >
double Acts::AtlasStepper< bfield_t >::charge ( const State state) const
inline

Charge access.

Definition at line 489 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::pVector.

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::covarianceTransport ( 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
Returns
the full transport jacobian

Definition at line 689 of file AtlasStepper.hpp.

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

References Acts::UnitConstants::C, Acts::AtlasStepper< bfield_t >::State::cov, Acts::AtlasStepper< bfield_t >::State::covariance, Acts::UnitConstants::e, Acts::AtlasStepper< bfield_t >::State::jacobian, p, Acts::AtlasStepper< bfield_t >::State::pVector, s1, s2, s3, and s4.

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::covarianceTransport ( State state,
const Surface surface 
) 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 839 of file AtlasStepper.hpp.

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

References kdfinder::abs(), Acts::UnitConstants::C, Acts::Surface::center(), Acts::AtlasStepper< bfield_t >::State::cov, Acts::AtlasStepper< bfield_t >::State::covariance, d, Acts::Surface::Disc, Acts::UnitConstants::e, Acts::AtlasStepper< bfield_t >::State::geoContext, Acts::AtlasStepper< bfield_t >::State::jacobian, charm_jet_coverage::mom, p, Acts::Surface::Perigee, Acts::AtlasStepper< bfield_t >::State::pVector, Acts::Surface::referenceFrame(), s1, s2, s3, s4, Acts::Surface::Straw, Acts::Surface::type(), x, y, and z.

+ Here is the call graph for this function:

template<typename bfield_t >
CurvilinearState Acts::AtlasStepper< bfield_t >::curvilinearState ( State state) const
inline

Create and return a curvilinear state at the current position

Parameters
[in]stateState that will be presented as CurvilinearState
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 605 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::cov, Acts::detail::covarianceTransport(), Acts::AtlasStepper< bfield_t >::State::covTransport, Acts::eMom0, Acts::eMom1, Acts::eMom2, Acts::ePos0, Acts::ePos1, Acts::ePos2, Acts::eTime, Acts::AtlasStepper< bfield_t >::State::jacobian, Dataset::parameters, Acts::AtlasStepper< bfield_t >::State::pathAccumulated, Acts::Test::pos4(), Acts::AtlasStepper< bfield_t >::State::pVector, and Acts::AtlasStepper< bfield_t >::State::state_ready.

+ Here is the call graph for this function:

template<typename bfield_t >
Vector3D Acts::AtlasStepper< bfield_t >::direction ( const State state) const
inline

Definition at line 480 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::pVector.

Referenced by pepsimainerhic().

+ Here is the caller graph for this function:

template<typename bfield_t >
Vector3D Acts::AtlasStepper< bfield_t >::getField ( State state,
const Vector3D 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 470 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::field, and Acts::AtlasStepper< bfield_t >::State::fieldCache.

template<typename bfield_t >
double Acts::AtlasStepper< bfield_t >::momentum ( const State state) const
inline

Definition at line 484 of file AtlasStepper.hpp.

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

References kdfinder::abs(), and Acts::AtlasStepper< bfield_t >::State::pVector.

+ Here is the call graph for this function:

template<typename bfield_t >
std::string Acts::AtlasStepper< bfield_t >::outputStepSize ( const State state) const
inline

Output the Step Size - single component

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

Definition at line 552 of file AtlasStepper.hpp.

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

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

+ Here is the call graph for this function:

template<typename bfield_t >
double Acts::AtlasStepper< bfield_t >::overstepLimit ( const State ) const
inline

Overstep limit

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

Definition at line 496 of file AtlasStepper.hpp.

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

template<typename bfield_t >
Vector3D Acts::AtlasStepper< bfield_t >::position ( const State state) const
inline

Definition at line 476 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::pVector.

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::releaseStepSize ( State state) const
inline

Release the Step size

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

Definition at line 545 of file AtlasStepper.hpp.

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

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

+ Here is the call graph for this function:

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::resetState ( State state,
const BoundVector boundParams,
const BoundSymMatrix cov,
const Surface surface,
const NavigationDirection  navDir = forward,
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]freeParamsParameters in free parametrisation
[in]covCovariance matrix
[in]navDirNavigation direction
[in]stepSizeStep size

Definition at line 315 of file AtlasStepper.hpp.

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

References Acts::UnitConstants::C, cos(), Acts::Surface::Disc, Acts::eBoundLoc0, Acts::eBoundLoc1, Acts::eBoundPhi, Acts::eBoundTheta, Acts::AtlasStepper< bfield_t >::State::geoContext, momentum, Acts::Test::navDir, Acts::AtlasStepper< bfield_t >::State::navDir, Acts::AtlasStepper< bfield_t >::State::pathAccumulated, Acts::Surface::Perigee, Acts::VectorHelpers::position(), Acts::AtlasStepper< bfield_t >::State::pVector, Acts::Surface::referenceFrame(), Acts::Test::stepSize, Acts::AtlasStepper< bfield_t >::State::stepSize, Acts::Surface::Straw, Acts::Test::transform, Acts::detail::transformBoundToFreeParameters(), Acts::Surface::type(), and Acts::KalmanVertexTrackUpdater::update().

+ Here is the call graph for this function:

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::setStepSize ( State state,
double  stepSize,
ConstrainedStep::Type  stype = ConstrainedStep::actor 
) const
inline

Set Step size - explicitely 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

Definition at line 536 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::previousStepSize, Acts::AtlasStepper< bfield_t >::State::stepSize, and Acts::ConstrainedStep::update().

+ Here is the call graph for this function:

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

Perform the actual step on the state

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

Definition at line 1094 of file AtlasStepper.hpp.

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

References starlightConstants::A2, kdfinder::abs(), charge, Acts::UnitConstants::h, momentum, pos(), and Acts::IntegrationTest::R.

+ Here is the call graph for this function:

template<typename bfield_t >
double Acts::AtlasStepper< bfield_t >::time ( const State state) const
inline

Time access.

Definition at line 499 of file AtlasStepper.hpp.

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

References Acts::AtlasStepper< bfield_t >::State::pVector.

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::update ( State state,
const FreeVector parameters,
const Covariance covariance 
) const
inline

The state update method

Parameters
[in,out]stateThe stepper state for
[in]parsThe new track parameters at start

Definition at line 636 of file AtlasStepper.hpp.

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

References kdfinder::abs(), Acts::AtlasStepper< bfield_t >::State::covariance, Acts::AtlasStepper< bfield_t >::State::covTransport, Acts::eFreeDir0, Acts::eFreePos0, Acts::eFreePos1, Acts::eFreePos2, Acts::eFreeQOverP, Acts::eFreeTime, Acts::AtlasStepper< bfield_t >::State::pVector, Acts::AtlasStepper< bfield_t >::State::state_ready, and Acts::AtlasStepper< bfield_t >::State::useJacobian.

+ Here is the call graph for this function:

template<typename bfield_t >
void Acts::AtlasStepper< bfield_t >::update ( State state,
const Vector3D uposition,
const Vector3D udirection,
double  up,
double  time 
) const
inline

Method to update momentum, direction and p

Parameters
upositionthe updated position
udirectionthe updated direction
pthe updated momentum value

Definition at line 669 of file AtlasStepper.hpp.

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

References charge, Acts::AtlasStepper< bfield_t >::State::pVector, and Acts::Test::time.

template<typename bfield_t >
template<typename object_intersection_t >
void Acts::AtlasStepper< bfield_t >::updateStepSize ( State state,
const object_intersection_t &  oIntersection,
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 526 of file AtlasStepper.hpp.

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

References conf::release.

template<typename bfield_t >
Intersection3D::Status Acts::AtlasStepper< bfield_t >::updateSurfaceStatus ( State state,
const Surface surface,
const BoundaryCheck bcheck 
) 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
state[in,out] The stepping state (thread-local cache)
surface[in] The surface provided
bcheck[in] The boundary check for this status update

Definition at line 511 of file AtlasStepper.hpp.

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

References surface().

+ Here is the call graph for this function:

Member Data Documentation

template<typename bfield_t >
bfield_t Acts::AtlasStepper< bfield_t >::m_bField
private

Definition at line 1336 of file AtlasStepper.hpp.

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

template<typename bfield_t >
double Acts::AtlasStepper< bfield_t >::m_overstepLimit = -50_um
private

Overstep limit: could/should be dynamic.

Definition at line 1339 of file AtlasStepper.hpp.

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


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