Analysis Software
Documentation for sPHENIX simulation software
|
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< Vector3 > | getField (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 ParticleHypothesis & | particleHypothesis (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< BoundState > | boundState (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 ¶meters, 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< double > | step (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. | |
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
using Acts::AtlasStepper::BoundState = std::tuple<BoundTrackParameters, Jacobian, double> |
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
using Acts::AtlasStepper::CurvilinearState = std::tuple<CurvilinearTrackParameters, Jacobian, double> |
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
|
inline |
Definition at line 293 of file AtlasStepper.hpp.
View newest version in sPHENIX GitHub at line 293 of file AtlasStepper.hpp
Absolute momentum accessor
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().
|
inline |
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 |
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().
Charge access
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().
|
inline |
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 |
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().
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().
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 |
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().
|
inline |
Get the step size
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().
|
inline |
Definition at line 296 of file AtlasStepper.hpp.
View newest version in sPHENIX GitHub at line 296 of file AtlasStepper.hpp
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().
|
inline |
Output the Step Size - single component
[in,out] | state | The 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().
Overstep limit
state | The 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.
|
inline |
Particle hypothesis
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().
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.
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().
|
inline |
Release the Step size
[in,out] | state | The 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.
|
inline |
Resets the state.
[in,out] | state | State of the stepper |
[in] | boundParams | Parameters in bound parametrisation |
[in] | cov | Covariance matrix |
[in] | surface | Reset state will be on this surface |
[in] | stepSize | Step 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().
|
inline |
Method that reset the Jacobian to the Identity for when no bound state are available
[in,out] | state | State 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().
|
inline |
Set 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 |
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().
|
inline |
Perform the actual step on the state
state | is 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.
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().
|
inline |
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 |
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().
|
inline |
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 |
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().
|
inline |
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 |
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().
|
inline |
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 |
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().
|
inline |
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) |
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.
|
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.
[in,out] | state | The stepping state (thread-local cache) |
[in] | surface | The surface provided |
[in] | navDir | The navigation direction |
[in] | bcheck | The boundary check for this status update |
[in] | surfaceTolerance | Surface tolerance used for intersection |
[in] | logger | Logger 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.
|
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().
|
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().