| Celeritas 0.7.0-dev.170+develop.df22d2a88
    | 
Navigate through a VecGeom geometry on a single thread. More...
#include <VecgeomTrackView.hh>
| Public Types | |
| Type aliases | |
| using | Initializer_t = GeoTrackInitializer | 
| using | ParamsRef = NativeCRef< VecgeomParamsData > | 
| using | StateRef = NativeRef< VecgeomStateData > | 
| using | Navigator = celeritas::detail::BVHNavigator | 
| using | ImplVolInstanceId = VecgeomPlacedVolumeId | 
| using | real_type = vecgeom::Precision | 
| Public Member Functions | |
| CELER_FUNCTION | VecgeomTrackView (ParamsRef const &data, StateRef const &stateview, TrackSlotId tid) | 
| Construct from persistent and state data. | |
| CELER_FUNCTION VecgeomTrackView & | operator= (Initializer_t const &init) | 
| Construct the state. | |
| CELER_FUNCTION VolumeId | volume_id () const | 
| Get the volume ID in the current cell. | |
| CELER_FUNCTION VolumeInstanceId | volume_instance_id () const | 
| Get the physical volume ID in the current cell. | |
| CELER_FUNCTION VolumeLevelId | volume_level () const | 
| Get the depth in the geometry hierarchy. | |
| CELER_FUNCTION void | volume_instance_id (Span< VolumeInstanceId > levels) const | 
| Get the volume instance ID at each volume level. | |
| CELER_FUNCTION ImplVolumeId | impl_volume_id () const | 
| Get the volume ID in the current cell. | |
| CELER_FUNCTION ImplSurfaceId | impl_surface_id () const | 
| The current surface frame ID. | |
| CELER_FUNCTION ImplSurfaceId | next_impl_surface_id () const | 
| After 'find_next_step', the next straight-line surface. | |
| CELER_FORCEINLINE_FUNCTION bool | is_outside () const | 
| Whether the track is outside the valid geometry region. | |
| CELER_FORCEINLINE_FUNCTION bool | is_on_boundary () const | 
| Whether the track is on the boundary of a volume. | |
| CELER_FORCEINLINE_FUNCTION bool | failed () const | 
| Whether the last operation resulted in an error. | |
| CELER_FUNCTION Real3 | normal () const | 
| Get the surface normal of the boundary the track is currently on. | |
| CELER_FUNCTION Propagation | find_next_step () | 
| Find the distance to the next geometric boundary. | |
| CELER_FUNCTION Propagation | find_next_step (real_type max_step) | 
| Find the distance to the next geometric boundary. | |
| CELER_FUNCTION real_type | find_safety () | 
| Find the safety at the current position. | |
| CELER_FUNCTION real_type | find_safety (real_type max_step) | 
| Find the safety at the current position up to a maximum distance. | |
| CELER_FUNCTION void | move_to_boundary () | 
| Move to the next boundary but don't cross yet. | |
| CELER_FUNCTION void | move_internal (real_type step) | 
| Move within the current volume. | |
| CELER_FUNCTION void | move_internal (Real3 const &pos) | 
| Move within the current volume to a nearby point. | |
| CELER_FUNCTION void | cross_boundary () | 
| Cross from one side of the current surface to the other. | |
| CELER_FUNCTION void | set_dir (Real3 const &newdir) | 
| Change the track's direction. | |
| CELER_FORCEINLINE_FUNCTION Real3 const & | pos () const | 
| CELER_FORCEINLINE_FUNCTION Real3 const & | dir () const | 
| Static Public Member Functions | |
| static CELER_CONSTEXPR_FUNCTION real_type | extra_push () | 
| A tiny push to make sure tracks do not get stuck at boundaries. | |
Navigate through a VecGeom geometry on a single thread.
For a description of ordering requirements, see:
The "next distance" is cached as part of find_next_step, but it is only used when the immediate next call is move_to_boundary. 
| 
 | inline | 
Cross from one side of the current surface to the other.
The position must be on the boundary following a move-to-boundary.
| 
 | inline | 
State accessors
| 
 | inline | 
Find the distance to the next geometric boundary.
This function is allowed to be called from the exterior for ray tracing.
| 
 | inline | 
Find the safety at the current position up to a maximum distance.
The safety within a step is only needed up to the end of the physics step length.
| 
 | inline | 
Move within the current volume to a nearby point.
| 
 | inline | 
Move within the current volume.
The straight-line distance must be less than the distance to the boundary.
| 
 | inline | 
Construct the state.
If a valid parent ID is provided, the state is constructed from a direction and a copy of the parent state. This is a faster method of creating secondaries from a parent that has just been absorbed, or when filling in an empty track from a parent that is still alive.
Otherwise, the state is initialized from a starting location and direction, which is expensive.
| 
 | inline | 
State accessors
| 
 | inline | 
Change the track's direction.
This happens after a scattering event or movement inside a magnetic field. It resets the calculated distance-to-boundary.
| 
 | inline | 
Get the physical volume ID in the current cell.
If built with Geant4, this is the canonical volume instance ID. If built with VGDML, this is an "implementation" instance ID.