Celeritas 0.7.0-dev.252+develop.478e7a17
Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | List of all members
celeritas::VecgeomTrackView Class Reference

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 = VgVolumeInstanceId
 
using real_type = vg_real_type
 

Public Member Functions

 VecgeomTrackView (ParamsRef const &data, StateRef const &stateview, TrackSlotId tid)
 Construct from persistent and state data.
 
VecgeomTrackViewoperator= (Initializer_t const &init)
 Construct the state.
 
VolumeId volume_id () const
 Get the volume ID in the current cell.
 
VolumeInstanceId volume_instance_id () const
 Get the physical volume ID in the current cell.
 
VolumeLevelId volume_level () const
 Get the depth in the geometry hierarchy.
 
void volume_instance_id (Span< VolumeInstanceId > levels) const
 Get the volume instance ID at each volume level.
 
ImplVolumeId impl_volume_id () const
 Get the volume ID in the current cell.
 
ImplSurfaceId impl_surface_id () const
 The current surface frame ID.
 
ImplSurfaceId next_impl_surface_id () const
 After 'find_next_step', the next straight-line surface.
 
bool is_outside () const
 Whether the track is outside the valid geometry region.
 
bool is_on_boundary () const
 Whether the track is on the boundary of a volume.
 
bool failed () const
 Whether the last operation resulted in an error.
 
Real3 normal () const
 Get the surface normal of the boundary the track is currently on.
 
Propagation find_next_step ()
 Find the distance to the next geometric boundary.
 
Propagation find_next_step (real_type max_step)
 Find the distance to the next geometric boundary.
 
real_type find_safety ()
 Find the safety at the current position.
 
real_type find_safety (real_type max_step)
 Find the safety at the current position up to a maximum distance.
 
void move_to_boundary ()
 Move to the next boundary but don't cross yet.
 
void move_internal (real_type step)
 Move within the current volume.
 
void move_internal (Real3 const &pos)
 Move within the current volume to a nearby point.
 
void cross_boundary ()
 Cross from one side of the current surface to the other.
 
void set_dir (Real3 const &newdir)
 Change the track's direction.
 
Real3 constpos () const
 
Real3 constdir () const
 

Static Public Member Functions

static constexpr real_type extra_push ()
 A tiny push to make sure tracks do not get stuck at boundaries.
 

Detailed Description

Navigate through a VecGeom geometry on a single thread.

For a description of ordering requirements, see:

See also
OrangeTrackView
VecgeomTrackView geom(vg_params_ref, vg_state_ref, trackslot_id);
Navigate through a VecGeom geometry on a single thread.
Definition VecgeomTrackView.hh:61

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.

Member Function Documentation

◆ cross_boundary()

void celeritas::VecgeomTrackView::cross_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.

◆ dir()

Real3 const & celeritas::VecgeomTrackView::dir ( ) const
inline

State accessors

◆ find_next_step()

Propagation celeritas::VecgeomTrackView::find_next_step ( )
inline

Find the distance to the next geometric boundary.

This function is allowed to be called from the exterior for ray tracing.

◆ find_safety()

real_type celeritas::VecgeomTrackView::find_safety ( real_type  max_radius)
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.

◆ move_internal() [1/2]

void celeritas::VecgeomTrackView::move_internal ( Real3 const pos)
inline

Move within the current volume to a nearby point.

Warning
It's up to the caller to make sure that the position is "nearby" and within the same volume.

◆ move_internal() [2/2]

void celeritas::VecgeomTrackView::move_internal ( real_type  dist)
inline

Move within the current volume.

The straight-line distance must be less than the distance to the boundary.

◆ operator=()

VecgeomTrackView & celeritas::VecgeomTrackView::operator= ( Initializer_t const init)
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.

◆ pos()

Real3 const & celeritas::VecgeomTrackView::pos ( ) const
inline

State accessors

◆ set_dir()

void celeritas::VecgeomTrackView::set_dir ( Real3 const newdir)
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.

◆ volume_instance_id()

VolumeInstanceId celeritas::VecgeomTrackView::volume_instance_id ( ) const
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.


The documentation for this class was generated from the following file: