File indexing completed on 2025-02-23 09:20:48
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 #include "PhysicsList.hh"
0034
0035 #include "PhysListEmStandard.hh"
0036 #include "PhysicsListMessenger.hh"
0037
0038 #include "G4EmLivermorePhysics.hh"
0039 #include "G4EmParameters.hh"
0040 #include "G4EmPenelopePhysics.hh"
0041 #include "G4EmStandardPhysics.hh"
0042 #include "G4EmStandardPhysics_option1.hh"
0043 #include "G4EmStandardPhysics_option2.hh"
0044 #include "G4EmStandardPhysics_option3.hh"
0045 #include "G4EmStandardPhysics_option4.hh"
0046 #include "G4LossTableManager.hh"
0047 #include "G4SystemOfUnits.hh"
0048 #include "G4UnitsTable.hh"
0049
0050
0051 #include "G4ChargedGeantino.hh"
0052 #include "G4Gamma.hh"
0053 #include "G4Geantino.hh"
0054 #include "G4OpticalPhoton.hh"
0055
0056
0057 #include "G4AntiNeutrinoE.hh"
0058 #include "G4AntiNeutrinoMu.hh"
0059 #include "G4Electron.hh"
0060 #include "G4MuonMinus.hh"
0061 #include "G4MuonPlus.hh"
0062 #include "G4NeutrinoE.hh"
0063 #include "G4NeutrinoMu.hh"
0064 #include "G4Positron.hh"
0065
0066
0067 #include "G4AntiKaonZero.hh"
0068 #include "G4Eta.hh"
0069 #include "G4EtaPrime.hh"
0070 #include "G4KaonMinus.hh"
0071 #include "G4KaonPlus.hh"
0072 #include "G4KaonZero.hh"
0073 #include "G4KaonZeroLong.hh"
0074 #include "G4KaonZeroShort.hh"
0075 #include "G4PionMinus.hh"
0076 #include "G4PionPlus.hh"
0077 #include "G4PionZero.hh"
0078
0079
0080 #include "G4AntiNeutron.hh"
0081 #include "G4AntiProton.hh"
0082 #include "G4Neutron.hh"
0083 #include "G4Proton.hh"
0084
0085
0086 #include "G4Alpha.hh"
0087 #include "G4Deuteron.hh"
0088 #include "G4GenericIon.hh"
0089 #include "G4Triton.hh"
0090
0091
0092
0093 PhysicsList::PhysicsList()
0094 {
0095 fMessenger = new PhysicsListMessenger(this);
0096
0097
0098 SetDefaultCutValue(1.0 * mm);
0099
0100 SetVerboseLevel(1);
0101
0102 AddPhysicsList("emstandard_opt0");
0103
0104 G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(100 * eV, 1 * GeV);
0105
0106
0107
0108 new G4UnitDefinition("mm2/g", "mm2/g", "Surface/Mass", mm2 / g);
0109 new G4UnitDefinition("um2/mg", "um2/mg", "Surface/Mass", um * um / mg);
0110 }
0111
0112
0113
0114 PhysicsList::~PhysicsList()
0115 {
0116 delete fMessenger;
0117 }
0118
0119
0120
0121 void PhysicsList::ConstructParticle()
0122 {
0123
0124 G4Geantino::GeantinoDefinition();
0125 G4ChargedGeantino::ChargedGeantinoDefinition();
0126
0127
0128 G4Gamma::GammaDefinition();
0129
0130
0131 G4OpticalPhoton::OpticalPhotonDefinition();
0132
0133
0134 G4Electron::ElectronDefinition();
0135 G4Positron::PositronDefinition();
0136 G4MuonPlus::MuonPlusDefinition();
0137 G4MuonMinus::MuonMinusDefinition();
0138
0139 G4NeutrinoE::NeutrinoEDefinition();
0140 G4AntiNeutrinoE::AntiNeutrinoEDefinition();
0141 G4NeutrinoMu::NeutrinoMuDefinition();
0142 G4AntiNeutrinoMu::AntiNeutrinoMuDefinition();
0143
0144
0145 G4PionPlus::PionPlusDefinition();
0146 G4PionMinus::PionMinusDefinition();
0147 G4PionZero::PionZeroDefinition();
0148 G4Eta::EtaDefinition();
0149 G4EtaPrime::EtaPrimeDefinition();
0150 G4KaonPlus::KaonPlusDefinition();
0151 G4KaonMinus::KaonMinusDefinition();
0152 G4KaonZero::KaonZeroDefinition();
0153 G4AntiKaonZero::AntiKaonZeroDefinition();
0154 G4KaonZeroLong::KaonZeroLongDefinition();
0155 G4KaonZeroShort::KaonZeroShortDefinition();
0156
0157
0158 G4Proton::ProtonDefinition();
0159 G4AntiProton::AntiProtonDefinition();
0160 G4Neutron::NeutronDefinition();
0161 G4AntiNeutron::AntiNeutronDefinition();
0162
0163
0164 G4Deuteron::DeuteronDefinition();
0165 G4Triton::TritonDefinition();
0166 G4Alpha::AlphaDefinition();
0167 G4GenericIon::GenericIonDefinition();
0168 }
0169
0170
0171
0172 void PhysicsList::ConstructProcess()
0173 {
0174
0175
0176 AddTransportation();
0177
0178
0179
0180 fEmPhysicsList->ConstructProcess();
0181 }
0182
0183
0184
0185 void PhysicsList::AddPhysicsList(const G4String& name)
0186 {
0187 if (verboseLevel > 0) {
0188 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
0189 }
0190
0191 if (name == fEmName) return;
0192
0193 if (name == "local") {
0194 fEmName = name;
0195 delete fEmPhysicsList;
0196 fEmPhysicsList = new PhysListEmStandard(name);
0197 }
0198 else if (name == "emstandard_opt0") {
0199 fEmName = name;
0200 delete fEmPhysicsList;
0201 fEmPhysicsList = new G4EmStandardPhysics();
0202 }
0203 else if (name == "emstandard_opt1") {
0204 fEmName = name;
0205 delete fEmPhysicsList;
0206 fEmPhysicsList = new G4EmStandardPhysics_option1();
0207 }
0208 else if (name == "emstandard_opt2") {
0209 fEmName = name;
0210 delete fEmPhysicsList;
0211 fEmPhysicsList = new G4EmStandardPhysics_option2();
0212 }
0213 else if (name == "emstandard_opt3") {
0214 fEmName = name;
0215 delete fEmPhysicsList;
0216 fEmPhysicsList = new G4EmStandardPhysics_option3();
0217 }
0218 else if (name == "emstandard_opt4") {
0219 fEmName = name;
0220 delete fEmPhysicsList;
0221 fEmPhysicsList = new G4EmStandardPhysics_option4();
0222 }
0223 else if (name == "empenelope") {
0224 fEmName = name;
0225 delete fEmPhysicsList;
0226 fEmPhysicsList = new G4EmPenelopePhysics();
0227 }
0228 else if (name == "emlivermore") {
0229 fEmName = name;
0230 delete fEmPhysicsList;
0231 fEmPhysicsList = new G4EmLivermorePhysics();
0232 }
0233 else {
0234 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
0235 << " is not defined" << G4endl;
0236 }
0237
0238
0239
0240 G4EmParameters::Instance()->SetBuildCSDARange(true);
0241 G4EmParameters::Instance()->SetGeneralProcessActive(false);
0242 }
0243
0244