File indexing completed on 2026-11-07 10:11:38
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include "corecel/Macros.hh"
0010 #include "corecel/Types.hh"
0011 #include "corecel/io/Logger.hh"
0012 #include "celeritas/geo/GeoFwd.hh"
0013 #include "celeritas/io/ImportOpticalMaterial.hh"
0014 #include "celeritas/optical/CoreTrackView.hh"
0015 #include "celeritas/optical/Interaction.hh"
0016 #include "celeritas/optical/MieData.hh"
0017 #include "celeritas/optical/ParticleTrackView.hh"
0018 #include "celeritas/optical/interactor/MieInteractor.hh"
0019
0020 namespace celeritas
0021 {
0022 namespace optical
0023 {
0024
0025 struct MieExecutor
0026 {
0027 inline CELER_FUNCTION Interaction operator()(CoreTrackView const&);
0028
0029 NativeCRef<MieData> data;
0030 };
0031
0032
0033
0034
0035
0036 CELER_FUNCTION Interaction MieExecutor::operator()(CoreTrackView const& track)
0037 {
0038 CELER_EXPECT(data);
0039
0040
0041 auto particle = track.particle();
0042
0043 auto const& direction = track.geometry().dir();
0044
0045 auto rng = track.rng();
0046
0047 auto matid = track.material_record().material_id();
0048 CELER_ASSERT(matid < data.mie_record.size());
0049
0050 MieInteractor interact{data, particle, direction, matid};
0051
0052 return interact(rng);
0053 }
0054
0055
0056 }
0057 }