|
ACTS
Experiment-independent tracking
|
A navigation policy that uses frustum-octree intersections to find portals. More...
#include <Acts/Navigation/FrustumNavigationPolicy.hpp>
Classes | |
| struct | Config |
| Configuration for the frustum navigation policy. More... | |
| struct | State |
| Frustum navigation policy state, which holds the frustum. More... | |
Public Types | |
| using | BoundingBox = AxisAlignedBoundingBox<Volume, double, 3> |
| Typedef for the 3d bounding box. | |
| using | Frustum3 = Frustum<double, 3, 3> |
| Typedef for the 3d frustum. | |
Public Member Functions | |
| FrustumNavigationPolicy (const GeometryContext &gctx, const TrackingVolume &volume, const Logger &logger, const Config &config) | |
| Main constructor, which takes the top-level volume and builds the octree. | |
| void | connect (NavigationDelegate &delegate) const override |
| Connect this policy with a navigation delegate. | |
| void | createState (const GeometryContext &, const NavigationArguments &args, NavigationPolicyStateManager &stateManager, const Logger &logger) const override |
| Create and initialize a new navigation state. | |
| void | initializeCandidates (const GeometryContext &, const NavigationArguments &args, NavigationPolicyState &state, AppendOnlyNavigationStream &stream, const Logger &logger) const |
| Update the navigation state. | |
| bool | isValid (const GeometryContext &, const NavigationArguments &args, NavigationPolicyState &state, const Logger &logger) const override |
| Check the validity of the navigation state. | |
| void | popState (NavigationPolicyStateManager &stateManager, const Logger &logger) const override |
| Remove the state from the state manager. | |
| Public Member Functions inherited from Acts::INavigationPolicy | |
| virtual | ~INavigationPolicy ()=default |
| Virtual destructor so policies can be held through this base class. | |
| void | initializeStatelessCache (const GeometryContext &gctx, const Logger &logger=getDummyLogger()) |
| One-time initialization step that probes whether this policy pushes only default (empty) states and caches the result (mutating internal state), allowing the navigator to skip the per-volume-entry state creation and the matching pop entirely for volumes with such policies. | |
| bool | isStateless () const |
| Whether this policy is known to push only default (empty) states, see initializeStatelessCache. | |
| virtual void | visit (const std::function< void(const INavigationPolicy &)> &visitor) const |
| Convenience function to walk over all navigation policies. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from Acts::INavigationPolicy | |
| static void | noopInitializeCandidates (const GeometryContext &, const NavigationArguments &, NavigationPolicyState &, const AppendOnlyNavigationStream &, const Logger &) |
| Noop update function that is suitable as a default for default navigation delegates. | |
| Protected Member Functions inherited from Acts::INavigationPolicy | |
| template<NavigationPolicyConcept T> | |
| void | connectDefault (NavigationDelegate &delegate) const |
| Internal helper function for derived classes that conform to the concept and have a conventional updateState method. | |
A navigation policy that uses frustum-octree intersections to find portals.
The frustum is a cone that points in the direction of the particle's travel. It is set at the start of navigation, and only updated if the particle leaves it. The octree is built from the first-level child volumes inside the top-level volume. Each level of the tree splits each piece of the previous level into eight equal pieces. The number of levels is the configurable depth parameter. Each child volume is assigned to the piece of the whole that contains it on each level. Navigation candidates are found by intersecting the frustum with the octree. On each level, the frustum only checks for intersections with pieces that descend from previously intersected pieces. This allows for a rapid determination of candidates in geometries with many volumes.
|
explicit |
Main constructor, which takes the top-level volume and builds the octree.
| gctx | The geometrycontext object |
| volume | The tracking volume used to build the octree |
| logger | A logging instance |
| config | The configuration of the Navigation Policy |
|
overridevirtual |
Connect this policy with a navigation delegate.
| delegate | The navigation delegate to connect to |
Implements Acts::INavigationPolicy.
|
overridevirtual |
Create and initialize a new navigation state.
| args | The navigation arguments |
| stateManager | The navigation state manager to push the new state onto |
| logger | The logger |
Reimplemented from Acts::INavigationPolicy.
| void Acts::Experimental::FrustumNavigationPolicy::initializeCandidates | ( | const GeometryContext & | , |
| const NavigationArguments & | args, | ||
| NavigationPolicyState & | state, | ||
| AppendOnlyNavigationStream & | stream, | ||
| const Logger & | logger ) const |
Update the navigation state.
| args | The navigation arguments, position and direction |
| state | The navigation state for this policy |
| stream | The navigation stream to update |
| logger | The logger |
|
overridevirtual |
Check the validity of the navigation state.
| args | The navigation arguments |
| state | The navigation state to check |
| logger | The logger |
Reimplemented from Acts::INavigationPolicy.
|
overridevirtual |
Remove the state from the state manager.
| stateManager | The state manager to pop the state from |
| logger | The logger |
Reimplemented from Acts::INavigationPolicy.