Celeritas  0.5.0-56+6b053cd
Public Member Functions | List of all members
celeritas::SimTrackView Class Reference

Simulation properties for a single track. More...

#include <SimTrackView.hh>

Public Types

Type aliases
using SimParamsRef = NativeCRef< SimParamsData >
 
using SimStateRef = NativeRef< SimStateData >
 
using Initializer_t = SimTrackInitializer
 
using Energy = units::MevEnergy
 

Public Member Functions

CELER_FUNCTION SimTrackView (SimParamsRef const &params, SimStateRef const &states, TrackSlotId tid)
 Construct from persistent and local data.
 
CELER_FUNCTION SimTrackViewoperator= (Initializer_t const &other)
 Initialize the particle.
 
CELER_FUNCTION void add_time (real_type delta)
 Add the time change over the step.
 
CELER_FUNCTION void increment_num_steps ()
 Increment the total number of steps.
 
CELER_FUNCTION void update_looping (bool)
 Update the number of steps this track has been looping.
 
CELER_FUNCTION bool is_looping (ParticleId, Energy)
 Whether the looping track should be abandoned.
 
CELER_FUNCTION void status (TrackStatus)
 Set whether the track is active, dying, or inactive.
 
CELER_FUNCTION void reset_step_limit ()
 Reset step limiter at the beginning of a step.
 
CELER_FUNCTION void reset_step_limit (StepLimit const &sl)
 Reset step limiter at the beginning of a step. More...
 
CELER_FUNCTION bool step_limit (StepLimit const &sl)
 Limit the step by this distance and action. More...
 
CELER_FUNCTION TrackId track_id () const
 Unique track identifier.
 
CELER_FUNCTION TrackId parent_id () const
 Track ID of parent.
 
CELER_FUNCTION EventId event_id () const
 Event ID.
 
CELER_FUNCTION size_type num_steps () const
 Total number of steps taken by the track.
 
CELER_FUNCTION size_type num_looping_steps () const
 Number of steps taken by the track since it was flagged as looping.
 
CELER_FUNCTION real_type time () const
 Time elapsed in the lab frame since the start of the event [s].
 
CELER_FUNCTION TrackStatus status () const
 Whether the track is inactive, alive, or being killed.
 
CELER_FUNCTION real_type step_length () const
 Get the current limiting step.
 
CELER_FUNCTION void step_length (real_type length)
 Update the current limiting step.
 
CELER_FUNCTION ActionId post_step_action () const
 Access post-step action to take.
 
CELER_FUNCTION void post_step_action (ActionId action)
 Force the limiting action to take. More...
 
CELER_FUNCTION ActionId along_step_action () const
 Access along-step action to take.
 
CELER_FUNCTION void along_step_action (ActionId action)
 Update along-step action to take.
 
CELER_FUNCTION LoopingThreshold const & looping_threshold (ParticleId) const
 Particle-dependent parameters for killing looping tracks.
 
CELER_FUNCTION size_type max_steps () const
 Maximum number of steps before killing the track.
 

Detailed Description

Simulation properties for a single track.

TODO: refactor "reset_step_limit" and the along/post-step action setters to validate that setting a new action may only increase the ID (if it's explicit) and can only reduce the step limit. See StatusCheckExecutor . Maybe we also need to reconsider having separate along- and post-step action IDs: perhaps find a way to have a "step limit action" and a "next action"?

Member Function Documentation

◆ post_step_action()

CELER_FUNCTION void celeritas::SimTrackView::post_step_action ( ActionId  action)
inline

Force the limiting action to take.

This is used by intermediate kernels (such as discrete_select_track ) that dispatch to another kernel action before the end of the step without changing the step itself.

◆ reset_step_limit()

CELER_FUNCTION void celeritas::SimTrackView::reset_step_limit ( StepLimit const &  sl)
inline

Reset step limiter at the beginning of a step.

The action can be unset if and only if the step is infinite.

◆ step_limit()

CELER_FUNCTION bool celeritas::SimTrackView::step_limit ( StepLimit const &  sl)
inline

Limit the step by this distance and action.

If the step limits are the same, the original action is retained.

Returns
Whether the given limit is the new limit.

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