File indexing completed on 2026-09-19 08:38:49
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 "G4DeexPrecoParameters.hh"
0032 #include "G4EmBuilder.hh"
0033 #include "G4IonConstructor.hh"
0034 #include "G4LossTableManager.hh"
0035 #include "G4NuclearLevelData.hh"
0036 #include "G4NuclideTable.hh"
0037 #include "G4ParticleTypes.hh"
0038 #include "G4PhysListUtil.hh"
0039 #include "G4PhysicsListHelper.hh"
0040 #include "G4Radioactivation.hh"
0041 #include "G4SystemOfUnits.hh"
0042 #include "G4UAtomicDeexcitation.hh"
0043 #include "G4UnitsTable.hh"
0044 #include "globals.hh"
0045
0046
0047
0048 PhysicsList::PhysicsList()
0049 {
0050
0051
0052 G4PhysListUtil::InitialiseParameters();
0053
0054
0055
0056 const G4double meanLife = 1 * nanosecond;
0057 G4NuclideTable::GetInstance()->SetMeanLifeThreshold(meanLife);
0058 G4NuclideTable::GetInstance()->SetLevelTolerance(1.0 * eV);
0059
0060
0061
0062 G4EmParameters::Instance()->SetDefaults();
0063 G4EmParameters::Instance()->SetAugerCascade(true);
0064 G4EmParameters::Instance()->SetDeexcitationIgnoreCut(true);
0065
0066
0067
0068 G4DeexPrecoParameters* deex = G4NuclearLevelData::GetInstance()->GetParameters();
0069 deex->SetCorrelatedGamma(false);
0070 deex->SetStoreAllLevels(true);
0071 deex->SetInternalConversionFlag(true);
0072 deex->SetIsomerProduction(true);
0073 deex->SetMaxLifeTime(meanLife);
0074
0075
0076
0077 SetDefaultCutValue(1 * mm);
0078 }
0079
0080
0081
0082 void PhysicsList::ConstructParticle()
0083 {
0084
0085
0086 G4EmBuilder::ConstructMinimalEmSet();
0087 }
0088
0089
0090
0091 void PhysicsList::ConstructProcess()
0092 {
0093 AddTransportation();
0094
0095 G4Radioactivation* radioactiveDecay = new G4Radioactivation();
0096
0097 G4bool ARMflag = false;
0098 radioactiveDecay->SetARM(ARMflag);
0099
0100
0101
0102
0103 G4LossTableManager* man = G4LossTableManager::Instance();
0104 G4VAtomDeexcitation* deex = man->AtomDeexcitation();
0105 if (nullptr == deex) {
0106 deex = new G4UAtomicDeexcitation();
0107 man->SetAtomDeexcitation(deex);
0108 }
0109 deex->InitialiseAtomicDeexcitation();
0110
0111
0112
0113 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0114 ph->RegisterProcess(radioactiveDecay, G4GenericIon::GenericIon());
0115 }
0116
0117