Analysis Software
Documentation for sPHENIX simulation software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t > Class Template Reference

Stepper based on the EigenStepper, but handles Multi-Component Tracks (e.g., for the GSF). Internally, this only manages a vector of EigenStepper::States. This simplifies implementation, but has several drawbacks: More...

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

+ Inheritance diagram for Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >:
+ Collaboration diagram for Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >:

Classes

struct  ComponentProxy
 
struct  ComponentProxyBase
 
struct  SinglePropState
 
struct  State
 

Public Types

using SingleStepper = EigenStepper< extensionlist_t, auctioneer_t >
 Typedef to the Single-Component Eigen Stepper.
 
using SingleState = typename SingleStepper::State
 Typedef to the State of the single component Stepper.
 
using BoundState = std::tuple< MultiComponentBoundTrackParameters, Jacobian, ActsScalar >
 Define an own bound state.
 
using CurvilinearState = std::tuple< MultiComponentCurvilinearTrackParameters, Jacobian, ActsScalar >
 Define an own curvilinear state.
 
using Reducer = component_reducer_t
 The reducer type.
 
using ConstComponentProxy = ComponentProxyBase< const typename State::Component >
 
using Covariance = BoundSquareMatrix
 
using Jacobian = BoundMatrix
 Jacobian, Covariance and State definitions.
 
- Public Types inherited from Acts::EigenStepper< extensionlist_t, auctioneer_t >
using Jacobian = BoundMatrix
 Jacobian, Covariance and State definitions.
 
using Covariance = BoundSquareMatrix
 
using BoundState = std::tuple< BoundTrackParameters, Jacobian, double >
 
using CurvilinearState = std::tuple< CurvilinearTrackParameters, Jacobian, double >
 

Public Member Functions

 MultiEigenStepperLoop (std::shared_ptr< const MagneticFieldProvider > bField, std::unique_ptr< const Logger > logger=getDefaultLogger("GSF", Logging::INFO))
 Constructor from a magnetic field and a optionally provided Logger.
 
State makeState (std::reference_wrapper< const GeometryContext > gctx, std::reference_wrapper< const MagneticFieldContext > mctx, const MultiComponentBoundTrackParameters &par, double ssize=std::numeric_limits< double >::max()) const
 Construct and initialize a state.
 
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.
 
auto componentIterable (State &state) const
 
auto constComponentIterable (const State &state) const
 
std::size_t numberComponents (const State &state) const
 
void removeMissedComponents (State &state) const
 
void reweightComponents (State &state) const
 
void clearComponents (State &state) const
 
Result< ComponentProxyaddComponent (State &state, const BoundTrackParameters &pars, double weight) const
 
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
 
ParticleHypothesis particleHypothesis (const State &state) const
 
double time (const State &state) const
 
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 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
 
double overstepLimit (const State &state) const
 
Result< BoundStateboundState (State &state, const Surface &surface, bool transportCov=true, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const
 This transports (if necessary) the covariance to the surface and creates a bound state. It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator.
 
CurvilinearState curvilinearState (State &state, bool transportCov=true) const
 This transports (if necessary) the covariance to the current position and creates a curvilinear state.
 
void transportCovarianceToCurvilinear (State &state) const
 
void transportCovarianceToBound (State &state, const Surface &surface, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const
 
template<typename propagator_state_t , typename navigator_t >
Result< doublestep (propagator_state_t &state, const navigator_t &navigator) const
 
- Public Member Functions inherited from Acts::EigenStepper< extensionlist_t, auctioneer_t >
 EigenStepper (std::shared_ptr< const MagneticFieldProvider > bField, double overstepLimit=100 *UnitConstants::um)
 Constructor requires knowledge of the detector's magnetic field.
 
State makeState (std::reference_wrapper< const GeometryContext > gctx, std::reference_wrapper< const MagneticFieldContext > mctx, const BoundTrackParameters &par, double ssize=std::numeric_limits< double >::max()) 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 time (const State &state) const
 
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
 
double overstepLimit (const State &state) const
 
Result< BoundStateboundState (State &state, const Surface &surface, bool transportCov=true, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const
 This transports (if necessary) the covariance to the surface and creates a bound state. It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator.
 
CurvilinearState curvilinearState (State &state, bool transportCov=true) const
 This transports (if necessary) the covariance to the current position and creates a curvilinear state.
 
void update (State &state, const FreeVector &freeParams, const BoundVector &boundParams, const Covariance &covariance, const Surface &surface) const
 
void update (State &state, const Vector3 &uposition, const Vector3 &udirection, double qOverP, double time) const
 
void transportCovarianceToCurvilinear (State &state) const
 
void transportCovarianceToBound (State &state, const Surface &surface, const FreeToBoundCorrection &freeToBoundCorrection=FreeToBoundCorrection(false)) const
 
template<typename propagator_state_t , typename navigator_t >
Result< doublestep (propagator_state_t &state, const navigator_t &navigator) const
 
void setIdentityJacobian (State &state) const
 

Static Public Attributes

static constexpr int maxComponents = std::numeric_limits<int>::max()
 How many components can this stepper manage?
 

Private Types

template<typename T >
using SmallVector = boost::container::small_vector< T, 16 >
 

Private Attributes

std::size_t m_stepLimitAfterFirstComponentOnSurface = 50
 
std::unique_ptr< const
Acts::Logger
m_logger
 The logger (used if no logger is provided by caller of methods)
 

Additional Inherited Members

- Protected Attributes inherited from Acts::EigenStepper< extensionlist_t, auctioneer_t >
std::shared_ptr< const
MagneticFieldProvider
m_bField
 Magnetic field inside of the detector.
 
double m_overstepLimit
 Overstep limit.
 

Detailed Description

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
class Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >

Stepper based on the EigenStepper, but handles Multi-Component Tracks (e.g., for the GSF). Internally, this only manages a vector of EigenStepper::States. This simplifies implementation, but has several drawbacks:

  • There are certain redundancies between the global State and the component states
  • The components do not share a single magnetic-field-cache
    Template Parameters
    extensionlist_tSee EigenStepper for details
    component_reducer_tHow to map the multi-component state to a single component
    auctioneer_tSee EigenStepper for details
    small_vector_sizeA size-hint how much memory should be allocated by the small vector

Definition at line 220 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 220 of file MultiEigenStepperLoop.hpp

Member Typedef Documentation

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::BoundState = std::tuple<MultiComponentBoundTrackParameters, Jacobian, ActsScalar>

Define an own bound state.

Definition at line 247 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 247 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::ConstComponentProxy = ComponentProxyBase<const typename State::Component>

A proxy struct which allows access to a single component of the multi-component state. It has the semantics of a const reference, i.e. it requires a const reference of the single-component state it represents

Definition at line 419 of file MultiEigenStepperLoop.hpp.

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

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::EigenStepper< extensionlist_t, auctioneer_t >::Covariance = BoundSquareMatrix

Definition at line 53 of file EigenStepper.hpp.

View newest version in sPHENIX GitHub at line 53 of file EigenStepper.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::CurvilinearState = std::tuple<MultiComponentCurvilinearTrackParameters, Jacobian, ActsScalar>

Define an own curvilinear state.

Definition at line 251 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 251 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::EigenStepper< extensionlist_t, auctioneer_t >::Jacobian = BoundMatrix

Jacobian, Covariance and State definitions.

Definition at line 52 of file EigenStepper.hpp.

View newest version in sPHENIX GitHub at line 52 of file EigenStepper.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::Reducer = component_reducer_t

The reducer type.

Definition at line 254 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 254 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::SingleState = typename SingleStepper::State

Typedef to the State of the single component Stepper.

Definition at line 239 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 239 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::SingleStepper = EigenStepper<extensionlist_t, auctioneer_t>

Typedef to the Single-Component Eigen Stepper.

Definition at line 236 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 236 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
template<typename T >
using Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::SmallVector = boost::container::small_vector<T, 16>
private

Small vector type for speeding up some computations where we need to accumulate stuff of components. We think 16 is a reasonable amount here.

Definition at line 232 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 232 of file MultiEigenStepperLoop.hpp

Constructor & Destructor Documentation

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::MultiEigenStepperLoop ( std::shared_ptr< const MagneticFieldProvider bField,
std::unique_ptr< const Logger logger = getDefaultLogger("GSF", Logging::INFO) 
)
inline

Constructor from a magnetic field and a optionally provided Logger.

Definition at line 260 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 260 of file MultiEigenStepperLoop.hpp

Member Function Documentation

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::absoluteMomentum ( const State state) const
inline

Absolute momentum accessor

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

Definition at line 658 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 658 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Result<ComponentProxy> Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::addComponent ( State state,
const BoundTrackParameters pars,
double  weight 
) const
inline

Add a component to the Multistepper

Parameters
[in,out]stateThe stepping state (thread-local cache)
[in]parsParameters of the component to add
[in]weightWeight of the component to add
Note
: It is not ensured that the weights are normalized afterwards
This function makes no garantuees about how new components are initialized, it is up to the caller to ensure that all components are valid in the end.
The returned component-proxy is only garantueed to be valid until the component number is again modified

Definition at line 612 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 612 of file MultiEigenStepperLoop.hpp

References Acts::EigenStepper< extensionlist_t, auctioneer_t >::State::geoContext, and pars.

template<typename E , typename R , typename A >
auto Acts::MultiEigenStepperLoop< E, R, A >::boundState ( State state,
const Surface surface,
bool  transportCov = true,
const FreeToBoundCorrection freeToBoundCorrection = FreeToBoundCorrection(false) 
) const

This transports (if necessary) the covariance to the surface and creates a bound state. It does not check if the transported state is at the surface, this needs to be guaranteed by the propagator.

Create and return the bound state at the current position

Note
This is done by combining the gaussian mixture on the specified surface. If the conversion to bound states of some components fails, these components are ignored unless all components fail. In this case an error code is returned.
Parameters
[in]stateState that will be presented as BoundState
[in]surfaceThe surface to which we bind the state
[in]transportCovFlag steering covariance transport
[in]freeToBoundCorrectionFlag steering non-linear correction during global to local correction
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)

Definition at line 14 of file MultiEigenStepperLoop.ipp.

View newest version in sPHENIX GitHub at line 14 of file MultiEigenStepperLoop.ipp

References assert, Acts::detail::boundState(), Acts::eFreeDir0, Acts::eFreePos0, i, Acts::PlanarHelper::intersect(), Acts::Intersection< DIM >::position(), filter::state, and writeMapConfig::surface.

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::charge ( const State state) const
inline

Charge access

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

Definition at line 672 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 672 of file MultiEigenStepperLoop.hpp

References charge().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::clearComponents ( State state) const
inline

Reset the number of components

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

Definition at line 598 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 598 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
auto Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::componentIterable ( State state) const
inline

Creates an iterable which can be plugged into a range-based for-loop to iterate over components

Note
Use a for-loop with by-value semantics, since the Iterable returns a proxy internally holding a reference

Definition at line 494 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 494 of file MultiEigenStepperLoop.hpp

References parse_cmake_options::begin, end, it, Acts::operator!=(), Acts::operator*(), Acts::operator==(), and physmon_simulation::s.

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
auto Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::constComponentIterable ( const State state) const
inline

Creates an constant iterable which can be plugged into a range-based for-loop to iterate over components

Note
Use a for-loop with by-value semantics, since the Iterable returns a proxy internally holding a reference

Definition at line 531 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 531 of file MultiEigenStepperLoop.hpp

References parse_cmake_options::begin, end, it, Acts::operator!=(), Acts::operator*(), Acts::operator==(), and physmon_simulation::s.

+ Here is the call graph for this function:

template<typename E , typename R , typename A >
auto Acts::MultiEigenStepperLoop< E, R, A >::curvilinearState ( State state,
bool  transportCov = true 
) const

This transports (if necessary) the covariance to the current position and creates a curvilinear state.

Create and return a curvilinear state at the current position

Note
This is done as a simple average over the free representation and covariance of the components.
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)

Definition at line 64 of file MultiEigenStepperLoop.ipp.

View newest version in sPHENIX GitHub at line 64 of file MultiEigenStepperLoop.ipp

References assert, Acts::detail::curvilinearState(), i, and filter::state.

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Vector3 Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::direction ( const State state) const
inline

Momentum direction accessor

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

Definition at line 646 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 646 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Result<Vector3> Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::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.

Parameters
[in,out]stateis the propagation state associated with the track the magnetic field cell is used (and potentially updated)
[in]posis the field position
Note
This uses the cache of the first component stored in the state

Definition at line 632 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 632 of file MultiEigenStepperLoop.hpp

References Acts::Test::pos.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::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
Note
This returns the smallest step size of all components. It uses std::abs for comparison to handle backward propagation and negative step sizes correctly.

Definition at line 813 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 813 of file MultiEigenStepperLoop.hpp

References KFPMath::a, KFPMath::b, Acts::EigenStepper< extensionlist_t, auctioneer_t >::State::stepSize, and Acts::ConstrainedStep::value().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
State Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::makeState ( std::reference_wrapper< const GeometryContext gctx,
std::reference_wrapper< const MagneticFieldContext mctx,
const MultiComponentBoundTrackParameters par,
double  ssize = std::numeric_limits<double>::max() 
) const
inline

Construct and initialize a state.

Definition at line 336 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 336 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Vector3 Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::momentum ( const State state) const
inline

Momentum accessor

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

Definition at line 665 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 665 of file MultiEigenStepperLoop.hpp

References momentum.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
std::size_t Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::numberComponents ( const State state) const
inline

Get the number of components

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

Definition at line 566 of file MultiEigenStepperLoop.hpp.

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

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
std::string Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::outputStepSize ( const State state) const
inline

Output the Step Size of all components into one std::string

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

Definition at line 834 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 834 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::overstepLimit ( const State state) const
inline

Overstep limit

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

Definition at line 846 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 846 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
ParticleHypothesis Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::particleHypothesis ( const State state) const
inline

Particle hypothesis

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

Definition at line 677 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 677 of file MultiEigenStepperLoop.hpp

References Acts::EigenStepper< extensionlist_t, auctioneer_t >::State::particleHypothesis.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Vector3 Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::position ( const State state) const
inline

Global particle position accessor

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

Definition at line 639 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 639 of file MultiEigenStepperLoop.hpp

References position.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::qOverP ( const State state) const
inline

QoP access

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

Definition at line 653 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 653 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::releaseStepSize ( State state) const
inline

Release the step-size for all components

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

Definition at line 825 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 825 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::removeMissedComponents ( State state) const
inline

Remove missed components from the component state

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

Definition at line 573 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 573 of file MultiEigenStepperLoop.hpp

References root_event_diff_np::cmp().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::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]surfaceThe reference surface of the bound parameters
[in]stepSizeStep size

Definition at line 350 of file MultiEigenStepperLoop.hpp.

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

References Acts::Test::stepSize.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::reweightComponents ( State state) const
inline

Reweight the components

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

Definition at line 585 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 585 of file MultiEigenStepperLoop.hpp

References root_event_diff_np::cmp().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::setStepSize ( State state,
double  stepSize,
ConstrainedStep::Type  stype = ConstrainedStep::actor,
bool  release = true 
) const
inline

Set 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
release[in] Do we release the step size?

Definition at line 798 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 798 of file MultiEigenStepperLoop.hpp

template<typename E , typename R , typename A >
template<typename propagator_state_t , typename navigator_t >
Result< double > Acts::MultiEigenStepperLoop< E, R, A >::step ( propagator_state_t &  state,
const navigator_t &  navigator 
) const

Perform a Runge-Kutta track parameter propagation step

Parameters
[in,out]stateis the propagation state associated with the track parameters that are being propagated.
[in]navigatoris the navigator of the propagation

The state contains the desired step size. It can be negative during backwards track propagation, and since we're using an adaptive algorithm, it can be modified by the stepper class during propagation.

Definition at line 93 of file MultiEigenStepperLoop.ipp.

View newest version in sPHENIX GitHub at line 93 of file MultiEigenStepperLoop.ipp

References Acts::ACTS_VERBOSE(), ACTS_WARNING, dfs::begin(), root_event_diff_np::cmp(), dfs::end(), logger(), m_logger, Acts::EigenStepper< extensionlist_t, auctioneer_t >::State::pathAccumulated, TauVsDIS_MachineLearning_Differentiation::results, step, str, and summary::summary.

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
double Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::time ( const State state) const
inline

Time access

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

Definition at line 684 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 684 of file MultiEigenStepperLoop.hpp

References Acts::Test::time.

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::transportCovarianceToBound ( State state,
const Surface surface,
const FreeToBoundCorrection 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

Template Parameters
surface_tthe Surface type
Parameters
[in,out]stateState of the stepper
[in]surfaceis the surface to which the covariance is forwarded
[in]freeToBoundCorrectionFlag steering non-linear correction during global to local correction to
Note
no check is done if the position is actually on the surface

Definition at line 915 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 915 of file MultiEigenStepperLoop.hpp

References Acts::transportCovarianceToBound().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::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 898 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 898 of file MultiEigenStepperLoop.hpp

References Acts::transportCovarianceToCurvilinear().

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
template<typename object_intersection_t >
void Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::updateStepSize ( State state,
const object_intersection_t &  oIntersection,
Direction  direction,
bool  release = true 
) const
inline

Update step size

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
state[in,out] The stepping state (thread-local cache)
oIntersection[in] The ObjectIntersection to layer, boundary, etc
direction[in] The propagation direction
release[in] boolean to trigger step size release

Definition at line 777 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 777 of file MultiEigenStepperLoop.hpp

References Acts::Surface::intersect(), and position.

+ Here is the call graph for this function:

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
Intersection3D::Status Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::updateSurfaceStatus ( State state,
const Surface surface,
Direction  navDir,
const BoundaryCheck bcheck,
ActsScalar  surfaceTolerance = s_onSurfaceTolerance,
const Logger logger = getDummyLogger() 
) const
inline

Update surface status

It checks the status to the reference surface & updates the step size accordingly

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]loggerA Logger instance

Definition at line 697 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 697 of file MultiEigenStepperLoop.hpp

References Acts::ACTS_VERBOSE(), Acts::Surface::center(), Acts::EigenStepper< extensionlist_t, auctioneer_t >::State::geoContext, Acts::GeometryObject::geometryId(), logger(), Acts::Test::navDir, and writeMapConfig::surface.

+ Here is the call graph for this function:

Member Data Documentation

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
std::unique_ptr<const Acts::Logger> Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::m_logger
private

The logger (used if no logger is provided by caller of methods)

Definition at line 227 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 227 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
std::size_t Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::m_stepLimitAfterFirstComponentOnSurface = 50
private

Limits the number of steps after at least one component reached the surface

Definition at line 224 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 224 of file MultiEigenStepperLoop.hpp

template<typename extensionlist_t = StepperExtensionList<DefaultExtension>, typename component_reducer_t = WeightedComponentReducerLoop, typename auctioneer_t = detail::VoidAuctioneer>
constexpr int Acts::MultiEigenStepperLoop< extensionlist_t, component_reducer_t, auctioneer_t >::maxComponents = std::numeric_limits<int>::max()
static

How many components can this stepper manage?

Definition at line 257 of file MultiEigenStepperLoop.hpp.

View newest version in sPHENIX GitHub at line 257 of file MultiEigenStepperLoop.hpp


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