ACTS
Experiment-independent tracking
Loading...
Searching...
No Matches
Acts::Experimental::TryAllNavigator Class Referencefinal

Alternative Navigator which tries all possible intersections. More...

#include <Acts/Propagator/TryAllNavigator.hpp>

Classes

struct  Config
 Configuration for this Navigator. More...
struct  Options
 Options for this Navigator. More...
struct  State
 Nested state struct. More...

Public Member Functions

 TryAllNavigator (Config cfg, std::unique_ptr< const Logger > logger=getDefaultLogger("TryAllNavigator", Logging::INFO))
 Constructor with configuration object.
bool checkTargetValid (const State &state, const Vector3 &position, const Vector3 &direction) const
 Check if the target is still valid.
const SurfacecurrentSurface (const State &state) const
 Get the current surface from the navigation state.
const TrackingVolumecurrentVolume (const State &state) const
 Get the current tracking volume from the navigation state.
const IVolumeMaterialcurrentVolumeMaterial (const State &state) const
 Get the material of the current tracking volume.
bool endOfWorldReached (State &state) const
 Check if the end of the world has been reached.
void handleSurfaceReached (State &state, const Vector3 &position, const Vector3 &direction, const Surface &) const
 Handle the surface reached.
Result< void > initialize (State &state, const Vector3 &position, const Vector3 &direction, Direction propagationDirection) const
 Initialize the navigator.
State makeState (const Options &options) const
 Creates a new navigator state.
bool navigationBreak (const State &state) const
 Check if navigation has been interrupted.
NavigationTarget nextTarget (State &state, const Vector3 &position, const Vector3 &direction) const
 Get the next target surface.
const SurfacestartSurface (const State &state) const
 Get the start surface from the navigation state.
const SurfacetargetSurface (const State &state) const
 Get the target surface from the navigation state.

Detailed Description

Alternative Navigator which tries all possible intersections.

See Navigator for more general information about the Navigator concept.

This Navigator tries all possible intersections with all surfaces in the current volume. It does not use any information about the geometry to optimise the search. It is therefore very slow, but can be used as a reference implementation.

Additionally, this implementation tries to discover additional intersections after stepping forward and then checking for intersections based on the previous and current positions. This is slower, but more robust against bent tracks.

Constructor & Destructor Documentation

◆ TryAllNavigator()

Acts::Experimental::TryAllNavigator::TryAllNavigator ( Config cfg,
std::unique_ptr< const Logger > logger = getDefaultLogger("TryAllNavigator",                                                            Logging::INFO) )
explicit

Constructor with configuration object.

Parameters
cfgThe navigator configuration
loggera logger instance

Member Function Documentation

◆ checkTargetValid()

bool Acts::Experimental::TryAllNavigator::checkTargetValid ( const State & state,
const Vector3 & position,
const Vector3 & direction ) const

Check if the target is still valid.

This method checks if the target is valid based on the current position and direction. It returns true if the target is still valid.

For the TryAllNavigator, the target is always invalid since we do not want to assume any specific surface sequence over multiple steps.

Parameters
stateThe navigation state
positionThe current position
directionThe current direction
Returns
True if the target is still valid

◆ currentSurface()

const Surface * Acts::Experimental::TryAllNavigator::currentSurface ( const State & state) const

Get the current surface from the navigation state.

Parameters
stateThe navigation state
Returns
Pointer to the current surface, or nullptr if none

◆ currentVolume()

const TrackingVolume * Acts::Experimental::TryAllNavigator::currentVolume ( const State & state) const

Get the current tracking volume from the navigation state.

Parameters
stateThe navigation state
Returns
Pointer to the current tracking volume, or nullptr if none

◆ currentVolumeMaterial()

const IVolumeMaterial * Acts::Experimental::TryAllNavigator::currentVolumeMaterial ( const State & state) const

Get the material of the current tracking volume.

Parameters
stateThe navigation state
Returns
Pointer to the volume material, or nullptr if no volume or no material

◆ endOfWorldReached()

bool Acts::Experimental::TryAllNavigator::endOfWorldReached ( State & state) const

Check if the end of the world has been reached.

Parameters
stateThe navigation state
Returns
True if no current volume is set (end of world reached)

◆ handleSurfaceReached()

void Acts::Experimental::TryAllNavigator::handleSurfaceReached ( State & state,
const Vector3 & position,
const Vector3 & direction,
const Surface &  ) const

Handle the surface reached.

This method is called when a surface is reached. It sets the current surface in the navigation state and updates the navigation candidates.

Parameters
stateThe navigation state
positionThe current position
directionThe current direction

◆ initialize()

Result< void > Acts::Experimental::TryAllNavigator::initialize ( State & state,
const Vector3 & position,
const Vector3 & direction,
Direction propagationDirection ) const
nodiscard

Initialize the navigator.

This method initializes the navigator for a new propagation. It sets the current volume and surface to the start volume and surface, respectively.

Parameters
stateThe navigation state
positionThe starting position
directionThe starting direction
propagationDirectionThe propagation direction
Returns
Result indicating success or failure of initialization

◆ makeState()

State Acts::Experimental::TryAllNavigator::makeState ( const Options & options) const

Creates a new navigator state.

Parameters
optionsNavigator options for state initialization
Returns
Initialized navigator state with current candidates storage

◆ navigationBreak()

bool Acts::Experimental::TryAllNavigator::navigationBreak ( const State & state) const

Check if navigation has been interrupted.

Parameters
stateThe navigation state
Returns
True if navigation break flag is set

◆ nextTarget()

NavigationTarget Acts::Experimental::TryAllNavigator::nextTarget ( State & state,
const Vector3 & position,
const Vector3 & direction ) const

Get the next target surface.

This method gets the next target surface based on the current position and direction. It returns a none target if no target can be found.

Parameters
stateThe navigation state
positionThe current position
directionThe current direction
Returns
The next target surface

◆ startSurface()

const Surface * Acts::Experimental::TryAllNavigator::startSurface ( const State & state) const

Get the start surface from the navigation state.

Parameters
stateThe navigation state
Returns
Pointer to the start surface, or nullptr if none

◆ targetSurface()

const Surface * Acts::Experimental::TryAllNavigator::targetSurface ( const State & state) const

Get the target surface from the navigation state.

Parameters
stateThe navigation state
Returns
Pointer to the target surface, or nullptr if none