ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
detray::navigator_base< navigator_impl_t > Class Template Reference

Navigation base class - interface towards the propagator. More...

#include <detray/navigation/navigator_base.hpp>

Inheritance diagram for detray::navigator_base< navigator_impl_t >:
[legend]

Public Member Functions

template<typename track_t, typename nav_state_t, typename context_t>
constexpr void init (const track_t &track, nav_state_t &navigation, const navigation::config &cfg, const context_t &ctx, const bool resolve_overstepping=false) const
 Helper method to initialize a volume.
template<typename track_t, typename nav_state_t, typename context_t>
constexpr bool update (const track_t &track, nav_state_t &navigation, const navigation::config &cfg, const context_t &ctx) const
 Complete update of the navigation flow.

Detailed Description

template<typename navigator_impl_t>
class detray::navigator_base< navigator_impl_t >

Navigation base class - interface towards the propagator.

The navigator is initialized around a detector object, but is itself agnostic to the detectors's object/primitive types. Within a detector volume, the navigatior will perform a local navigation based on the geometry acceleration structure(s) that are provided by the volume. Once the local navigation is resolved, it moves to the next volume by a portal. To this end, it requires a link to the [next] navigation volume in every candidate that is computed by intersection from the detector objects: A module surface must link back to its mother volume, while a portal surface links to the next volume in the direction of the track.

The navigation state is set up by an init() call and then runs an update() after the track state changed.

Template Parameters
navigator_impl_timplementation of the navigation update

Member Function Documentation

◆ init()

template<typename navigator_impl_t>
template<typename track_t, typename nav_state_t, typename context_t>
void detray::navigator_base< navigator_impl_t >::init ( const track_t & track,
nav_state_t & navigation,
const navigation::config & cfg,
const context_t & ctx,
const bool resolve_overstepping = false ) const
constexpr

Helper method to initialize a volume.

Template Parameters
track_ttype of track, needs to provide pos() and dir() methods
Parameters
trackaccess to the track parameters
navigationState to initialize for the current track.
cfgthe navigation configuration
ctxthe geometry context
resolve_oversteppingwhether to check for overstepping

◆ update()

template<typename navigator_impl_t>
template<typename track_t, typename nav_state_t, typename context_t>
bool detray::navigator_base< navigator_impl_t >::update ( const track_t & track,
nav_state_t & navigation,
const navigation::config & cfg,
const context_t & ctx ) const
constexpr

Complete update of the navigation flow.

Restores 'full trust' state to the candidates cache and checks whether the track stepped onto a portal and a volume switch is due. If so, or when the previous update according to the given trust level failed to restore trust, it performs a complete reinitialization of the navigation.

Template Parameters
track_ttype of track, needs to provide pos() and dir() methods
Parameters
trackaccess to the track parameters
navigationState to update after the track changes.
cfgthe navigation configuration
ctxthe geometry context
Returns
a heartbeat to indicate if the navigation is still alive