File indexing completed on 2025-09-19 08:49:41
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include "corecel/Macros.hh"
0010 #include "celeritas/field/DormandPrinceIntegrator.hh" // IWYU pragma: associated
0011 #include "celeritas/field/MakeMagFieldPropagator.hh" // IWYU pragma: associated
0012 #include "celeritas/field/UniformField.hh" // IWYU pragma: associated
0013 #include "celeritas/field/UniformFieldData.hh" // IWYU pragma: associated
0014
0015 namespace celeritas
0016 {
0017 namespace detail
0018 {
0019
0020
0021
0022
0023 struct UniformFieldPropagatorFactory
0024 {
0025 #if CELER_USE_DEVICE
0026 inline static constexpr int max_block_size = 256;
0027 #endif
0028
0029 CELER_FUNCTION decltype(auto) operator()(CoreTrackView const& track) const
0030 {
0031 return make_mag_field_propagator<DormandPrinceIntegrator>(
0032 UniformField(field.field),
0033 field.options,
0034 track.particle(),
0035 track.geometry());
0036 }
0037
0038 static CELER_CONSTEXPR_FUNCTION bool tracks_can_loop() { return true; }
0039
0040
0041
0042 NativeCRef<UniformFieldParamsData> field;
0043 };
0044
0045
0046 }
0047 }