Closed amandalund closed 3 months ago
Will do! I think we'll also need to prevent errored tracks from applying eloss, right? It looks like in this failure the stuck track is marked as errored in the propagation applier but then still has energy loss applied, loses all its energy, and has its "errored" status changed to "killed".
Should we also exclude errored tracks from the time/track updaters?
@amandalund Nice find! The TrackUpdater
already skips most of the work if the track is "alive", but if we're going to skip the entire along-step (time/step updates and all) for a particle that errors during pre-step, then it would be more consistent to skip the updates if it fails along the step. If we are skipping the update, maybe we can also kill this condition: https://github.com/celeritas-project/celeritas/blob/75d6f608a2acb156d6fdfda233003afc8c996af2/src/celeritas/global/alongstep/detail/TrackUpdater.hh#L42-L43
Updated the updaters, but I think we'll need to keep that condition since looping tracks aren't "errored".
With cms2018 we were occasionally hitting an assertion failure:
Turns out this happens in the unusual case a track gets stuck and marked as errored in the
PropagationApplier
. Because the track still has a valid along-step action ID but has an invalid status, the assertion inIsAlongStepActionEqual
fails. This change simply clears the along step action when a track is marked as errored.