![]() |
|
|||
File indexing completed on 2025-09-15 08:54:44
0001 //------------------------------- -*- C++ -*- -------------------------------// 0002 // Copyright Celeritas contributors: see top-level COPYRIGHT file for details 0003 // SPDX-License-Identifier: (Apache-2.0 OR MIT) 0004 //---------------------------------------------------------------------------// 0005 //! \file celeritas/inp/Physics.hh 0006 //---------------------------------------------------------------------------// 0007 #pragma once 0008 0009 #include <optional> 0010 #include <string> 0011 #include <vector> 0012 0013 #include "corecel/Types.hh" 0014 #include "celeritas/Types.hh" 0015 #include "celeritas/phys/AtomicNumber.hh" 0016 0017 #include "PhysicsProcess.hh" 0018 #include "ProcessBuilder.hh" 0019 0020 namespace celeritas 0021 { 0022 namespace inp 0023 { 0024 //---------------------------------------------------------------------------// 0025 /*! 0026 * Electromagnetic physics processes and options. 0027 * 0028 * \todo The ProcessBuilder is the "general" process builder type and should be 0029 * refactored once import data is moved into the `inp` classes. The \c 0030 * user_processes can be set externally or via 0031 * \c FrameworkInput.geant.ignore_processes. 0032 */ 0033 struct EmPhysics 0034 { 0035 //! Bremsstrahlung process 0036 std::optional<BremsProcess> brems{std::in_place}; 0037 //! Electron+positron pair production process 0038 std::optional<PairProductionProcess> pair_production{std::in_place}; 0039 0040 //!@{ 0041 //! \name Energy loss and slowing down 0042 0043 // TODO: currently eloss fluctuations are set up via geant importer, then 0044 // read into ImportEmParams 0045 #if 0 0046 //! Energy loss fluctuations 0047 bool eloss_fluct{true}; 0048 #endif 0049 // 0050 //!@} 0051 0052 //! 0053 ProcessBuilderMap user_processes; 0054 }; 0055 0056 //---------------------------------------------------------------------------// 0057 /*! 0058 * Optical physics processes and options. 0059 */ 0060 struct OpticalPhysics 0061 { 0062 }; 0063 0064 //---------------------------------------------------------------------------// 0065 /*! 0066 * Hadronic physics processes and options. 0067 * 0068 * This can be used to enable or set up Geant4 hadronic physics. 0069 */ 0070 struct HadronicPhysics 0071 { 0072 }; 0073 0074 //---------------------------------------------------------------------------// 0075 /*! 0076 * Decay processes and options. 0077 */ 0078 struct DecayPhysics 0079 { 0080 }; 0081 0082 //---------------------------------------------------------------------------// 0083 /*! 0084 * Set up physics options. 0085 * 0086 * \todo Move optical and hadronic physics options from 0087 * \c celeritas::GeantPhysicsOptions 0088 * \todo Move particle data from \c celeritas::ImportParticle 0089 * \todo Add function for injecting user processes for 0090 * \c celeritas::PhysicsParams 0091 */ 0092 struct Physics 0093 { 0094 //! Enable electromagnetic physics 0095 std::optional<EmPhysics> em{std::in_place}; 0096 0097 //! Enable optical photon physics 0098 std::optional<OpticalPhysics> optical; 0099 0100 //! Enable hadronic physics 0101 std::optional<HadronicPhysics> hadronic; 0102 0103 //! Enable decay physics 0104 std::optional<DecayPhysics> decay; 0105 }; 0106 0107 //---------------------------------------------------------------------------// 0108 } // namespace inp 0109 } // namespace celeritas
[ Source navigation ] | [ Diff markup ] | [ Identifier search ] | [ general search ] |
This page was automatically generated by the 2.3.7 LXR engine. The LXR team |
![]() ![]() |