File indexing completed on 2025-02-23 09:20:53
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 "PhysListEmLivermore.hh"
0036 #include "PhysListEmPenelope.hh"
0037 #include "PhysListEmStandard.hh"
0038 #include "PhysicsListMessenger.hh"
0039
0040 #include "G4LossTableManager.hh"
0041 #include "G4SystemOfUnits.hh"
0042 #include "G4UnitsTable.hh"
0043
0044
0045
0046 #include "G4BaryonConstructor.hh"
0047 #include "G4BosonConstructor.hh"
0048 #include "G4IonConstructor.hh"
0049 #include "G4LeptonConstructor.hh"
0050 #include "G4MesonConstructor.hh"
0051 #include "G4ShortLivedConstructor.hh"
0052
0053
0054
0055 PhysicsList::PhysicsList()
0056 {
0057 G4LossTableManager::Instance();
0058
0059 fMessenger = new PhysicsListMessenger(this);
0060
0061 SetVerboseLevel(1);
0062
0063
0064 fEmName = G4String("standard");
0065 fEmPhysicsList = new PhysListEmStandard(fEmName);
0066
0067
0068
0069 new G4UnitDefinition("mm2/g", "mm2/g", "Surface/Mass", mm2 / g);
0070 new G4UnitDefinition("um2/mg", "um2/mg", "Surface/Mass", um * um / mg);
0071 }
0072
0073
0074
0075 PhysicsList::~PhysicsList()
0076 {
0077 delete fMessenger;
0078 }
0079
0080
0081
0082 void PhysicsList::ConstructParticle()
0083 {
0084 G4BosonConstructor pBosonConstructor;
0085 pBosonConstructor.ConstructParticle();
0086
0087 G4LeptonConstructor pLeptonConstructor;
0088 pLeptonConstructor.ConstructParticle();
0089
0090 G4MesonConstructor pMesonConstructor;
0091 pMesonConstructor.ConstructParticle();
0092
0093 G4BaryonConstructor pBaryonConstructor;
0094 pBaryonConstructor.ConstructParticle();
0095
0096 G4IonConstructor pIonConstructor;
0097 pIonConstructor.ConstructParticle();
0098
0099 G4ShortLivedConstructor pShortLivedConstructor;
0100 pShortLivedConstructor.ConstructParticle();
0101 }
0102
0103
0104
0105 void PhysicsList::ConstructProcess()
0106 {
0107
0108
0109 AddTransportation();
0110
0111
0112
0113 fEmPhysicsList->ConstructProcess();
0114
0115
0116
0117 G4EmParameters* param = G4EmParameters::Instance();
0118 param->SetIntegral(false);
0119 }
0120
0121
0122
0123 void PhysicsList::AddPhysicsList(const G4String& name)
0124 {
0125 if (verboseLevel > 0) {
0126 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">" << G4endl;
0127 }
0128
0129 if (name == fEmName) return;
0130
0131 if (name == "standard") {
0132 fEmName = name;
0133 delete fEmPhysicsList;
0134 fEmPhysicsList = new PhysListEmStandard(name);
0135 }
0136 else if (name == "livermore") {
0137 fEmName = name;
0138 delete fEmPhysicsList;
0139 fEmPhysicsList = new PhysListEmLivermore(name);
0140 }
0141 else if (name == "penelope") {
0142 fEmName = name;
0143 delete fEmPhysicsList;
0144 fEmPhysicsList = new PhysListEmPenelope(name);
0145 }
0146 else {
0147 G4cout << "PhysicsList::AddPhysicsList: <" << name << ">"
0148 << " is not defined" << G4endl;
0149 }
0150 }
0151
0152
0153
0154 #include "G4Electron.hh"
0155 #include "G4Gamma.hh"
0156 #include "G4Positron.hh"
0157
0158 void PhysicsList::SetCuts()
0159 {
0160
0161 G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(100 * eV, 1 * GeV);
0162
0163
0164
0165 G4VUserPhysicsList::SetCuts();
0166
0167 DumpCutValuesTable();
0168 }
0169
0170