File indexing completed on 2025-09-17 08:53:34
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include "celeritas/em/data/KleinNishinaData.hh"
0010 #include "celeritas/em/interactor/KleinNishinaInteractor.hh"
0011 #include "celeritas/global/CoreTrackView.hh"
0012 #include "celeritas/phys/Interaction.hh"
0013
0014 namespace celeritas
0015 {
0016
0017 struct KleinNishinaExecutor
0018 {
0019 inline CELER_FUNCTION Interaction
0020 operator()(celeritas::CoreTrackView const& track);
0021
0022 KleinNishinaData params;
0023 };
0024
0025
0026
0027
0028
0029 CELER_FUNCTION Interaction
0030 KleinNishinaExecutor::operator()(CoreTrackView const& track)
0031 {
0032 auto allocate_secondaries = track.physics_step().make_secondary_allocator();
0033 auto particle = track.particle();
0034 auto const& dir = track.geometry().dir();
0035
0036 KleinNishinaInteractor interact(
0037 params, particle, dir, allocate_secondaries);
0038 auto rng = track.rng();
0039 return interact(rng);
0040 }
0041
0042
0043 }