Celeritas
0.5.0-86+4a8eea4
|
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 ¶ms, SimStateRef const &states, TrackSlotId tid) |
Construct from persistent and local data. | |
CELER_FUNCTION SimTrackView & | operator= (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. | |
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"?
|
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.
|
inline |
Reset step limiter at the beginning of a step.
The action can be unset if and only if the step is infinite.
|
inline |
Limit the step by this distance and action.
If the step limits are the same, the original action is retained.