File indexing completed on 2025-12-15 10:10:53
0001
0002
0003
0004
0005
0006
0007 #pragma once
0008
0009 #include <functional>
0010 #include <memory>
0011
0012 #include "celeritas/ext/GeantPhysicsOptions.hh"
0013 #include "celeritas/io/ImportSBTable.hh"
0014 #include "celeritas/mat/MaterialParams.hh"
0015 #include "celeritas/phys/Applicability.hh"
0016 #include "celeritas/phys/AtomicNumber.hh"
0017 #include "celeritas/phys/ImportedProcessAdapter.hh"
0018 #include "celeritas/phys/ParticleParams.hh"
0019 #include "celeritas/phys/Process.hh"
0020
0021 namespace celeritas
0022 {
0023
0024
0025
0026
0027 class BremsstrahlungProcess : public Process
0028 {
0029 public:
0030
0031
0032 using SPConstParticles = std::shared_ptr<ParticleParams const>;
0033 using SPConstMaterials = std::shared_ptr<MaterialParams const>;
0034 using SPConstImported = std::shared_ptr<ImportedProcesses const>;
0035 using ReadData = std::function<ImportSBTable(AtomicNumber)>;
0036
0037
0038
0039
0040 struct Options
0041 {
0042
0043 bool combined_model{false};
0044
0045 bool enable_lpm{true};
0046 };
0047
0048 public:
0049
0050 BremsstrahlungProcess(SPConstParticles particles,
0051 SPConstMaterials materials,
0052 SPConstImported process_data,
0053 ReadData load_sb_table,
0054 Options options);
0055
0056
0057 VecModel build_models(ActionIdIter start_id) const final;
0058
0059
0060 StepLimitBuilders step_limits(Applicability range) const final;
0061
0062
0063 bool supports_integral_xs() const final { return true; }
0064
0065
0066 bool applies_at_rest() const final { return imported_.applies_at_rest(); }
0067
0068
0069 std::string_view label() const final;
0070
0071 private:
0072 SPConstParticles particles_;
0073 SPConstMaterials materials_;
0074 ImportedProcessAdapter imported_;
0075 ReadData load_sb_;
0076 Options options_;
0077 };
0078
0079
0080 }