File indexing completed on 2026-04-05 07:50:36
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045 #include "PhysicsList.hh"
0046
0047 #include "PhysicsListMessenger.hh"
0048 #include "StepLimiterBuilder.hh"
0049
0050 #include "G4DecayPhysics.hh"
0051 #include "G4EmExtraPhysics.hh"
0052 #include "G4EmLivermorePhysics.hh"
0053 #include "G4EmLowEPPhysics.hh"
0054 #include "G4EmParameters.hh"
0055 #include "G4EmPenelopePhysics.hh"
0056 #include "G4EmStandardPhysics.hh"
0057 #include "G4EmStandardPhysics_option1.hh"
0058 #include "G4EmStandardPhysics_option2.hh"
0059 #include "G4EmStandardPhysics_option3.hh"
0060 #include "G4EmStandardPhysics_option4.hh"
0061 #include "G4HadronElasticPhysics.hh"
0062 #include "G4HadronInelasticQBBC.hh"
0063 #include "G4IonBinaryCascadePhysics.hh"
0064 #include "G4LossTableManager.hh"
0065 #include "G4PhysicalConstants.hh"
0066 #include "G4StoppingPhysics.hh"
0067 #include "G4SystemOfUnits.hh"
0068 #include "G4UnitsTable.hh"
0069
0070
0071
0072 PhysicsList::PhysicsList() : G4VModularPhysicsList()
0073 {
0074 fHelIsRegisted = false;
0075 fBicIsRegisted = false;
0076 fIonIsRegisted = false;
0077 fGnucIsRegisted = false;
0078 fStopIsRegisted = false;
0079 fVerbose = 1;
0080
0081 SetDefaultCutValue(1 * mm);
0082
0083 fMessenger = new PhysicsListMessenger(this);
0084
0085
0086 RegisterPhysics(new G4EmStandardPhysics());
0087 RegisterPhysics(new G4DecayPhysics());
0088 RegisterPhysics(new StepLimiterBuilder());
0089 }
0090
0091
0092
0093 PhysicsList::~PhysicsList()
0094 {
0095 delete fMessenger;
0096 }
0097
0098
0099
0100 void PhysicsList::ConstructParticle()
0101 {
0102 if (fVerbose > 0) {
0103 G4cout << "### PhysicsList Construte Particles" << G4endl;
0104 }
0105 G4VModularPhysicsList::ConstructParticle();
0106 }
0107
0108
0109
0110 void PhysicsList::ConstructProcess()
0111 {
0112 if (fVerbose > 0) {
0113 G4cout << "### PhysicsList Construte Processes" << G4endl;
0114 }
0115
0116 G4VModularPhysicsList::ConstructProcess();
0117
0118
0119
0120 G4EmParameters* param = G4EmParameters::Instance();
0121 param->SetMinEnergy(0.01 * keV);
0122 param->SetMaxEnergy(10. * GeV);
0123 param->SetNumberOfBinsPerDecade(10);
0124 param->SetVerbose(1);
0125 }
0126
0127
0128
0129 void PhysicsList::AddPhysicsList(const G4String& name)
0130 {
0131 if (fVerbose > 0) {
0132 G4cout << "### PhysicsList Add Physics <" << name << "> " << G4endl;
0133 }
0134 if (name == "emstandard") {
0135 ReplacePhysics(new G4EmStandardPhysics());
0136 }
0137 else if (name == "emstandard_opt1") {
0138 ReplacePhysics(new G4EmStandardPhysics_option1());
0139 }
0140 else if (name == "emstandard_opt2") {
0141 ReplacePhysics(new G4EmStandardPhysics_option2());
0142 }
0143 else if (name == "emstandard_opt3") {
0144 ReplacePhysics(new G4EmStandardPhysics_option3());
0145 }
0146 else if (name == "emstandard_opt4") {
0147 ReplacePhysics(new G4EmStandardPhysics_option4());
0148 }
0149 else if (name == "emlivermore") {
0150 ReplacePhysics(new G4EmLivermorePhysics());
0151 }
0152 else if (name == "empenelope") {
0153 ReplacePhysics(new G4EmPenelopePhysics());
0154 }
0155 else if (name == "emlowenergy") {
0156 ReplacePhysics(new G4EmLowEPPhysics());
0157 }
0158 else if (name == "elastic" && !fHelIsRegisted) {
0159 RegisterPhysics(new G4HadronElasticPhysics());
0160 fHelIsRegisted = true;
0161 }
0162 else if (name == "binary" && !fBicIsRegisted) {
0163 RegisterPhysics(new G4HadronInelasticQBBC());
0164 fBicIsRegisted = true;
0165 }
0166 else if (name == "binary_ion" && !fIonIsRegisted) {
0167 RegisterPhysics(new G4IonBinaryCascadePhysics());
0168 fIonIsRegisted = true;
0169 }
0170 else if (name == "gamma_nuc" && !fGnucIsRegisted) {
0171 RegisterPhysics(new G4EmExtraPhysics());
0172 fGnucIsRegisted = true;
0173 }
0174 else if (name == "stopping" && !fStopIsRegisted) {
0175 RegisterPhysics(new G4StoppingPhysics());
0176 fStopIsRegisted = true;
0177 }
0178 else {
0179 G4cout << "PhysicsList::AddPhysicsList <" << name << ">"
0180 << " fail - module is already regitered or is unknown " << G4endl;
0181 }
0182 }
0183
0184