File indexing completed on 2026-11-07 10:11:37
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include "corecel/Types.hh"
0010 #include "celeritas/global/ActionInterface.hh"
0011 #include "celeritas/optical/Types.hh"
0012
0013 namespace celeritas
0014 {
0015 class CherenkovParams;
0016 class ScintillationParams;
0017
0018 namespace detail
0019 {
0020 struct CherenkovOffloadExecutor;
0021 struct ScintOffloadExecutor;
0022
0023
0024
0025 template<GeneratorType G>
0026 struct OffloadTraits;
0027
0028 template<>
0029 struct OffloadTraits<GeneratorType::cherenkov>
0030 {
0031
0032 using Params = CherenkovParams;
0033
0034
0035 using Executor = CherenkovOffloadExecutor;
0036
0037
0038 static constexpr StepActionOrder order = StepActionOrder::pre_post;
0039
0040
0041 static constexpr char const label[] = "cherenkov-offload";
0042
0043
0044 static constexpr char const description[]
0045 = "generate Cherenkov optical distribution data";
0046 };
0047
0048 template<>
0049 struct OffloadTraits<GeneratorType::scintillation>
0050 {
0051
0052 using Params = ScintillationParams;
0053
0054
0055 using Executor = ScintOffloadExecutor;
0056
0057
0058 static constexpr StepActionOrder order = StepActionOrder::user_post;
0059
0060
0061 static constexpr char const label[] = "scintillation-offload";
0062
0063
0064 static constexpr char const description[]
0065 = "generate scintillation optical distribution data";
0066 };
0067
0068
0069 }
0070 }