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

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

+ Collaboration diagram for Acts::ConstrainedStep:

Public Types

enum  Type : int { actor = 0, aborter = 1, user = 2 }
 
using Scalar = ActsScalar
 

Public Member Functions

constexpr ConstrainedStep ()=default
 
constexpr ConstrainedStep (Scalar value)
 
constexpr void setAccuracy (Scalar value)
 
constexpr void setUser (Scalar value)
 
constexpr Scalar value () const
 returns the min step size
 
constexpr Scalar value (Type type) const
 
constexpr Scalar accuracy () const
 
constexpr void release (Type type)
 
constexpr void releaseAccuracy ()
 
constexpr void update (Scalar value, Type type, bool releaseStep=false)
 
std::ostream & toStream (std::ostream &os) const
 
std::string toString () const
 

Public Attributes

size_t nStepTrials = std::numeric_limits<size_t>::max()
 

Private Attributes

std::array< Scalar, 3 > m_values = {kNotSet, kNotSet, kNotSet}
 the step size tuple
 
Scalar m_accuracy = kNotSet
 the accuracy value - this can vary up and down given a good step estimator
 

Static Private Attributes

static constexpr auto kNotSet = std::numeric_limits<Scalar>::max()
 

Detailed Description

A constrained step class for the steppers.

This class is symmetrical for forward and backward propagation. The sign of the propagation direction should not enter here but rather be applied the step is actually taken.

As simple as this class looks it hides a few very important details:

  • Overstepping handling. The step size sign will flip if we happened to pass our target.
  • Convergence handling. Smaller and smaller step sizes have to be used in order to converge on a target.

Because of the points mentioned above, the update function will always prefer negative step sizes. A side effect of this is that we will propagate in the opposite direction if the target is "behind us".

The hierarchy is:

  • Overstepping resolution / backpropagation
  • Convergence
  • Step into the void with std::numeric_limits<Scalar>::max()

Definition at line 44 of file ConstrainedStep.hpp.

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

Member Typedef Documentation

Definition at line 46 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 46 of file ConstrainedStep.hpp

Member Enumeration Documentation

the types of constraints from actor - this would be a typical navigation step from aborter - this would be a target condition from user - this is user given for what reason ever

Enumerator:
actor 
aborter 
user 

Definition at line 52 of file ConstrainedStep.hpp.

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

Constructor & Destructor Documentation

constexpr Acts::ConstrainedStep::ConstrainedStep ( )
default
constexpr Acts::ConstrainedStep::ConstrainedStep ( Scalar  value)
inlineexplicit

constructor from Scalar

Parameters
valueis the user given initial value

Definition at line 62 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 62 of file ConstrainedStep.hpp

References setUser().

+ Here is the call graph for this function:

Member Function Documentation

constexpr Scalar Acts::ConstrainedStep::accuracy ( ) const
inline

Access the accuracy value

Parameters
typeis the requested parameter type

Definition at line 102 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 102 of file ConstrainedStep.hpp

References m_accuracy.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

constexpr void Acts::ConstrainedStep::release ( Type  type)
inline

release a certain constraint value

Parameters
typeis the constraint type to be released

Definition at line 107 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 107 of file ConstrainedStep.hpp

References kNotSet, m_values, and Acts::type.

Referenced by Acts::Test::PropagatorState::Stepper::releaseStepSize(), Acts::StraightLineStepper::releaseStepSize(), Acts::EigenStepper< extensionlist_t, auctioneer_t >::releaseStepSize(), Acts::AtlasStepper::releaseStepSize(), and update().

+ Here is the caller graph for this function:

constexpr void Acts::ConstrainedStep::releaseAccuracy ( )
inline

release accuracy

Parameters
typeis the constraint type to be released

Definition at line 112 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 112 of file ConstrainedStep.hpp

References kNotSet, and m_accuracy.

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the caller graph for this function:

constexpr void Acts::ConstrainedStep::setAccuracy ( Scalar  value)
inline

set accuracy by one Scalar

this will set only the accuracy, as this is the most exposed to the Propagator

Parameters
valueis the new accuracy value

Definition at line 70 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 70 of file ConstrainedStep.hpp

References assert, m_accuracy, and value().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

constexpr void Acts::ConstrainedStep::setUser ( Scalar  value)
inline

set user by one Scalar

Parameters
valueis the new user value

Definition at line 79 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 79 of file ConstrainedStep.hpp

References m_values, user, and value().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), and ConstrainedStep().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::ostream& Acts::ConstrainedStep::toStream ( std::ostream &  os) const
inline

Definition at line 136 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 136 of file ConstrainedStep.hpp

References aborter, actor, kNotSet, m_accuracy, os, user, and value().

Referenced by Acts::operator<<(), and toString().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

std::string Acts::ConstrainedStep::toString ( ) const
inline

Definition at line 160 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 160 of file ConstrainedStep.hpp

References toStream().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::PropagatorState::Stepper::outputStepSize(), Acts::StraightLineStepper::outputStepSize(), Acts::EigenStepper< extensionlist_t, auctioneer_t >::outputStepSize(), and Acts::AtlasStepper::outputStepSize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

constexpr void Acts::ConstrainedStep::update ( Scalar  value,
Type  type,
bool  releaseStep = false 
)
inline

Update the step size of a certain type

Only navigation and target abortion step size updates may change the sign due to overstepping

Parameters
valueis the new value to be updated
typeis the constraint type
releaseStepAllow step size to increase again

Definition at line 122 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 122 of file ConstrainedStep.hpp

References m_values, release(), Acts::type, and value().

Referenced by Acts::Test::BOOST_AUTO_TEST_CASE(), Acts::Test::PropagatorState::Stepper::setStepSize(), Acts::StraightLineStepper::setStepSize(), Acts::EigenStepper< extensionlist_t, auctioneer_t >::setStepSize(), and Acts::AtlasStepper::setStepSize().

+ Here is the call graph for this function:

+ Here is the caller graph for this function:

constexpr Scalar Acts::ConstrainedStep::value ( Type  type) const
inline

Access a specific value

Parameters
typeis the requested parameter type

Definition at line 97 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 97 of file ConstrainedStep.hpp

References m_values, and Acts::type.

Member Data Documentation

constexpr auto Acts::ConstrainedStep::kNotSet = std::numeric_limits<Scalar>::max()
inlinestaticprivate

Definition at line 167 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 167 of file ConstrainedStep.hpp

Referenced by release(), releaseAccuracy(), and toStream().

Scalar Acts::ConstrainedStep::m_accuracy = kNotSet
private

the accuracy value - this can vary up and down given a good step estimator

Definition at line 172 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 172 of file ConstrainedStep.hpp

Referenced by accuracy(), releaseAccuracy(), setAccuracy(), toStream(), and value().

std::array<Scalar, 3> Acts::ConstrainedStep::m_values = {kNotSet, kNotSet, kNotSet}
private

the step size tuple

Definition at line 170 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 170 of file ConstrainedStep.hpp

Referenced by release(), setUser(), update(), and value().

size_t Acts::ConstrainedStep::nStepTrials = std::numeric_limits<size_t>::max()

Number of iterations needed by the stepsize finder (e.g. Runge-Kutta) of the stepper.

Definition at line 56 of file ConstrainedStep.hpp.

View newest version in sPHENIX GitHub at line 56 of file ConstrainedStep.hpp


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