File NextNavigator.hpp

namespace Acts

Note

This file is foreseen for the Geometry module to replace Extent

namespace Experimental
class NextNavigator
#include <Acts/Navigation/NextNavigator.hpp>

Public Functions

inline explicit NextNavigator(Config cfg, std::shared_ptr<const Logger> _logger = getDefaultLogger("NextNavigator", Logging::Level::INFO))

Constructor with configuration object.

Parameters
  • cfg – The navigator configuration

  • _logger – a logger instance

inline const Surface *currentSurface(const State &state) const
inline void currentSurface(State &state, const Surface *surface) const
inline const TrackingVolume *currentVolume(const State&) const
inline void insertExternalSurface(State&, GeometryIdentifier) const
inline State makeState(const Surface *startSurface, const Surface *targetSurface) const
inline bool navigationBreak(const State &state) const
inline void navigationBreak(State &state, bool navigationBreak) const
inline void resetState(State &state, const GeometryContext&, const Vector3&, const Vector3&, NavigationDirection, const Surface*, const Surface*) const
inline const Surface *startSurface(const State &state) const
template<typename propagator_state_t, typename stepper_t>
inline void status(propagator_state_t &state, const stepper_t &stepper) const

Navigator status call.

Template Parameters
  • propagator_state_t – is the type of Propagatgor state

  • stepper_t – is the used type of the Stepper by the Propagator

Parameters
  • state[inout] is the mutable propagator state object

  • stepper[in] Stepper in use

template<typename propagator_state_t, typename stepper_t>
inline void target(propagator_state_t &state, const stepper_t &stepper) const

Navigator target call.

This will invalide the current surface and current portal in order to navigate to the next ones.

Template Parameters
  • propagator_state_t – is the type of Propagatgor state

  • stepper_t – is the used type of the Stepper by the Propagator

Parameters
  • state[inout] is the mutable propagator state object

  • stepper[in] Stepper in use

inline bool targetReached(const State &state) const
inline void targetReached(State &state, bool targetReached) const
inline const Surface *targetSurface(const State &state) const

Private Functions

template<typename propagator_state_t, typename stepper_t>
inline void fillNavigationState(propagator_state_t &state, const stepper_t &stepper, NavigationState &nState) const
inline bool inactive() const

This checks if a navigation break had been triggered or navigator is misconfigured.

boolean return triggers exit to stepper

template<typename propagator_state_t, typename stepper_t>
inline void initialize(propagator_state_t &state, const stepper_t &stepper) const

Initialize call - start of propagation.

Template Parameters
  • propagator_state_t – The state type of the propagagor

  • stepper_t – The type of stepper used for the propagation

Parameters
  • state[inout] is the propagation state object

  • stepper[in] Stepper in use

Returns

boolean return triggers exit to stepper

template<typename propagator_state_t, typename stepper_t>
inline void initializeTarget(propagator_state_t &state, const stepper_t &stepper) const

Navigation (re-)initialisation for the target.

This is only called a few times every propagation/extrapolation

As a straight line estimate can lead you to the wrong destination Volume, this will be called at:

  • initialization

  • attempted volume switch Target finding by association will not be done again

boolean return triggers exit to stepper

Template Parameters
  • propagator_state_t – The state type of the propagagor

  • stepper_t – The type of stepper used for the propagation

Parameters
  • state[inout] is the propagation state object

  • stepper[in] Stepper in use

inline const Logger &logger() const
template<typename propagator_state_t, typename stepper_t>
inline std::string posInfo(const propagator_state_t &state, const stepper_t &stepper) const
template<typename propagator_state_t>
inline std::string volInfo(const propagator_state_t &state) const

Private Members

Config m_cfg
std::shared_ptr<const Logger> m_logger
struct Config
#include <Acts/Navigation/NextNavigator.hpp>

Public Members

const Detector *detector = nullptr

Detector for this Navigation.

bool resolveMaterial = true

stop at every material surface (whether it is passive or not)

bool resolvePassive = false

stop at every surface regardless what it is

bool resolveSensitive = true

Configuration for this Navigator stop at every sensitive surface (whether it has material or not)

double tolerance = s_onSurfaceTolerance

The tolerance used to defined “reached”.

struct State : public Acts::Experimental::NavigationState
#include <Acts/Navigation/NextNavigator.hpp>

Nested State struct.

It acts as an internal state which is created for every propagation/extrapolation step and keep thread-local navigation information

Public Members

const Surface *currentSurface = nullptr

Navigation state - external state: the current surface.

bool navigationBreak = false

Navigation state : a break has been detected.

const Surface *startSurface = nullptr

Navigation state - external state: the start surface.

bool targetReached = false

Indicator if the target is reached.

const Surface *targetSurface = nullptr

Navigation state - external state: the target surface.