File indexing completed on 2025-09-17 08:53:36
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include <vector>
0010
0011 #include "corecel/Types.hh"
0012 #include "corecel/data/Collection.hh"
0013 #include "celeritas/Quantities.hh"
0014 #include "celeritas/em/data/CommonCoulombData.hh"
0015 #include "celeritas/io/ImportModel.hh"
0016
0017 namespace celeritas
0018 {
0019
0020 class ParticleParams;
0021 struct UniformGridRecord;
0022
0023 namespace detail
0024 {
0025
0026
0027
0028
0029 class MscParamsHelper
0030 {
0031 public:
0032
0033
0034 using Energy = units::MevEnergy;
0035 using EnergyBounds = Array<Energy, 2>;
0036 using VecImportMscModel = std::vector<ImportMscModel>;
0037 using IndexValues
0038 = Collection<MscParticleId, Ownership::value, MemSpace::host, ParticleId>;
0039 using XsValues
0040 = Collection<UniformGridRecord, Ownership::value, MemSpace::host>;
0041 using Values = Collection<real_type, Ownership::value, MemSpace::host>;
0042
0043
0044 MscParamsHelper(ParticleParams const&,
0045 VecImportMscModel const&,
0046 ImportModelClass);
0047
0048 void build_ids(CoulombIds*, IndexValues*) const;
0049 void build_xs(XsValues*, Values*) const;
0050 EnergyBounds energy_grid_bounds() const;
0051 std::vector<ParticleId> const& particle_ids() const { return par_ids_; }
0052
0053 private:
0054
0055
0056 ParticleParams const& particles_;
0057 ImportModelClass model_class_;
0058 std::vector<MscParticleId> pid_to_xs_;
0059 std::vector<ParticleId> par_ids_;
0060 std::vector<ImportPhysicsTable const*> xs_tables_;
0061 };
0062
0063
0064 }
0065 }