File indexing completed on 2025-12-15 10:10:49
0001
0002
0003
0004
0005
0006
0007
0008 #pragma once
0009
0010 #include "celeritas/global/CoreTrackView.hh"
0011
0012 #include "detail/ElossApplier.hh" // IWYU pragma: associated
0013 #include "detail/MscApplier.hh" // IWYU pragma: associated
0014 #include "detail/MscStepLimitApplier.hh" // IWYU pragma: associated
0015 #include "detail/PropagationApplier.hh" // IWYU pragma: associated
0016 #include "detail/TimeUpdater.hh" // IWYU pragma: associated
0017 #include "detail/TrackUpdater.hh" // IWYU pragma: associated
0018
0019 namespace celeritas
0020 {
0021
0022
0023
0024
0025
0026
0027
0028
0029 template<class MH, class MP, class EH>
0030 struct AlongStep
0031 {
0032 inline CELER_FUNCTION void operator()(CoreTrackView& track);
0033
0034 MH msc;
0035 MP make_propagator;
0036 EH eloss;
0037 };
0038
0039
0040
0041
0042 template<class MH, class MP, class EH>
0043 CELER_FUNCTION AlongStep(MH&&, MP&&, EH&&) -> AlongStep<MH, MP, EH>;
0044
0045
0046
0047
0048 template<class MH, class MP, class EH>
0049 CELER_FUNCTION void AlongStep<MH, MP, EH>::operator()(CoreTrackView& track)
0050 {
0051 detail::MscStepLimitApplier{msc}(track);
0052 detail::PropagationApplier{make_propagator}(track);
0053 detail::MscApplier{msc}(track);
0054 detail::TimeUpdater{}(track);
0055 detail::ElossApplier{eloss}(track);
0056 detail::TrackUpdater{}(track);
0057 }
0058
0059
0060 }