File indexing completed on 2026-04-01 07:50:51
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 #include "PhysicsList.hh"
0030
0031 #include "ElectromagneticPhysics.hh"
0032 #include "GammaNuclearPhysics.hh"
0033 #include "GammaNuclearPhysicsLEND.hh"
0034 #include "HadronElasticPhysicsHP.hh"
0035 #include "RadioactiveDecayPhysics.hh"
0036
0037 #include "G4DecayPhysics.hh"
0038 #include "G4EmStandardPhysics.hh"
0039 #include "G4EmStandardPhysics_option3.hh"
0040 #include "G4EmStandardPhysics_option4.hh"
0041 #include "G4EmExtraPhysics.hh"
0042 #include "G4HadronElasticPhysicsXS.hh"
0043 #include "G4HadronInelasticQBBC.hh"
0044 #include "G4HadronPhysicsFTFP_BERT_HP.hh"
0045 #include "G4HadronPhysicsINCLXX.hh"
0046 #include "G4HadronPhysicsQGSP_BIC_AllHP.hh"
0047 #include "G4HadronPhysicsQGSP_BIC_HP.hh"
0048 #include "G4HadronicInteraction.hh"
0049 #include "G4IonElasticPhysics.hh"
0050 #include "G4IonINCLXXPhysics.hh"
0051 #include "G4IonPhysicsPHP.hh"
0052 #include "G4IonPhysicsXS.hh"
0053 #include "G4Neutron.hh"
0054 #include "G4NuclideTable.hh"
0055 #include "G4ProcessManager.hh"
0056 #include "G4RadioactiveDecayPhysics.hh"
0057 #include "G4StoppingPhysics.hh"
0058 #include "G4SystemOfUnits.hh"
0059 #include "G4UnitsTable.hh"
0060
0061
0062
0063 PhysicsList::PhysicsList()
0064 {
0065 G4int verb = 0;
0066 SetVerboseLevel(verb);
0067
0068
0069
0070 new G4UnitDefinition("mm2/g", "mm2/g", "Surface/Mass", mm2 / g);
0071 new G4UnitDefinition("um2/mg", "um2/mg", "Surface/Mass", um * um / mg);
0072
0073
0074
0075 const G4double meanLife = 1 * nanosecond, halfLife = meanLife * std::log(2);
0076 G4NuclideTable::GetInstance()->SetThresholdOfHalfLife(halfLife);
0077
0078
0079
0080 fHadronElastic = new G4HadronElasticPhysicsXS(verb);
0081 RegisterPhysics(fHadronElastic);
0082
0083
0084
0085 fHadronInelastic = new G4HadronPhysicsQGSP_BIC_HP(verb);
0086
0087
0088
0089 RegisterPhysics(fHadronInelastic);
0090
0091
0092 fIonElastic = new G4IonElasticPhysics(verb);
0093 RegisterPhysics(fIonElastic);
0094
0095
0096 fIonInelastic = new G4IonPhysicsXS(verb);
0097
0098
0099 RegisterPhysics(fIonInelastic);
0100
0101
0102
0103
0104
0105
0106
0107 fGammaNuclear = new G4EmExtraPhysics;
0108 RegisterPhysics(fGammaNuclear);
0109
0110
0111
0112 fElectromagnetic = new G4EmStandardPhysics_option3();
0113 RegisterPhysics(fElectromagnetic);
0114
0115
0116 fDecay = new G4DecayPhysics();
0117 RegisterPhysics(fDecay);
0118
0119
0120 fRadioactiveDecay = new RadioactiveDecayPhysics();
0121
0122 RegisterPhysics(fRadioactiveDecay);
0123 }
0124
0125
0126
0127 void PhysicsList::ConstructProcess()
0128 {
0129
0130
0131 AddTransportation();
0132
0133
0134
0135 fHadronElastic->ConstructProcess();
0136 fHadronInelastic->ConstructProcess();
0137 fIonElastic->ConstructProcess();
0138 fIonInelastic->ConstructProcess();
0139 fGammaNuclear->ConstructProcess();
0140 fElectromagnetic->ConstructProcess();
0141 fDecay->ConstructProcess();
0142 fRadioactiveDecay->ConstructProcess();
0143 }
0144
0145
0146
0147 void PhysicsList::SetCuts()
0148 {
0149 SetCutValue(0 * mm, "proton");
0150 SetCutValue(10 * km, "e-");
0151 SetCutValue(10 * km, "e+");
0152 SetCutValue(10 * km, "gamma");
0153 }
0154
0155