File indexing completed on 2025-02-23 09:20:55
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 #include "PhysicsList.hh"
0035
0036 #include "MuNuclearBuilder.hh"
0037 #include "PhysListEmStandard.hh"
0038 #include "PhysicsListMessenger.hh"
0039
0040 #include "G4BaryonConstructor.hh"
0041 #include "G4BosonConstructor.hh"
0042 #include "G4Electron.hh"
0043 #include "G4EmParameters.hh"
0044 #include "G4EmStandardPhysics.hh"
0045 #include "G4EmStandardPhysics_option4.hh"
0046 #include "G4Gamma.hh"
0047 #include "G4IonConstructor.hh"
0048 #include "G4LeptonConstructor.hh"
0049 #include "G4MesonConstructor.hh"
0050 #include "G4Positron.hh"
0051 #include "G4ShortLivedConstructor.hh"
0052 #include "G4SystemOfUnits.hh"
0053
0054
0055
0056 PhysicsList::PhysicsList()
0057 : G4VModularPhysicsList(), fEmPhysicsList(0), fMuNuclPhysicsList(0), fMessenger(0)
0058 {
0059 SetVerboseLevel(1);
0060 fMessenger = new PhysicsListMessenger(this);
0061
0062
0063 fEmName = G4String("emstandard_opt0");
0064 fEmPhysicsList = new G4EmStandardPhysics();
0065
0066
0067
0068 G4EmParameters* param = G4EmParameters::Instance();
0069 param->SetMinEnergy(100 * eV);
0070 param->SetMaxEnergy(1000 * PeV);
0071
0072 fMuNuclPhysicsList = 0;
0073 }
0074
0075
0076
0077 PhysicsList::~PhysicsList()
0078 {
0079 delete fMessenger;
0080 }
0081
0082
0083
0084 void PhysicsList::ConstructParticle()
0085 {
0086 G4BosonConstructor pBosonConstructor;
0087 pBosonConstructor.ConstructParticle();
0088
0089 G4LeptonConstructor pLeptonConstructor;
0090 pLeptonConstructor.ConstructParticle();
0091
0092 G4MesonConstructor pMesonConstructor;
0093 pMesonConstructor.ConstructParticle();
0094
0095 G4BaryonConstructor pBaryonConstructor;
0096 pBaryonConstructor.ConstructParticle();
0097
0098 G4IonConstructor pIonConstructor;
0099 pIonConstructor.ConstructParticle();
0100
0101 G4ShortLivedConstructor pShortLivedConstructor;
0102 pShortLivedConstructor.ConstructParticle();
0103 }
0104
0105
0106
0107 void PhysicsList::ConstructProcess()
0108 {
0109
0110
0111 AddTransportation();
0112
0113
0114
0115 fEmPhysicsList->ConstructProcess();
0116 if (fMuNuclPhysicsList) fMuNuclPhysicsList->ConstructProcess();
0117 }
0118
0119
0120
0121 void PhysicsList::AddPhysicsList(const G4String& name)
0122 {
0123 if (verboseLevel > -1) {
0124 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
0125 }
0126
0127 if (name == fEmName) return;
0128
0129 if (name == "emstandard_opt0") {
0130 fEmName = name;
0131 delete fEmPhysicsList;
0132 fEmPhysicsList = new G4EmStandardPhysics();
0133 }
0134 else if (name == "emstandard_opt4") {
0135 fEmName = name;
0136 delete fEmPhysicsList;
0137 fEmPhysicsList = new G4EmStandardPhysics_option4();
0138 }
0139 else if (name == "local") {
0140 fEmName = name;
0141 delete fEmPhysicsList;
0142 fEmPhysicsList = new PhysListEmStandard(name);
0143 }
0144 else if (name == "muNucl") {
0145 fMuNuclPhysicsList = new MuNuclearBuilder(name);
0146 }
0147 else {
0148 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
0149 << " is not defined" << G4endl;
0150 }
0151 }
0152
0153