![]() |
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function: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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function: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: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().
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
|
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().
Here is the call graph for this function:
|
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().
Here is the call graph for this function: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().
Here is the caller graph for this function: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().
Here is the caller graph for this function:
|
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.
Here is the call graph for this function:
|
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().
Here is the call graph for this function:
|
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().
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
|
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.
Here is the call graph for this function: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:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
Here is the caller graph for this function:
|
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().
Here is the call graph for this function:
|
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.
Here is the call graph for this function:
|
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().