File indexing completed on 2026-03-30 07:50:41
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
0035
0036
0037
0038
0039 #include "PhysicsList.hh"
0040
0041 #include "CommandLineParser.hh"
0042
0043 #include "G4EmDNAChemistry.hh"
0044 #include "G4EmDNAChemistry_option1.hh"
0045 #include "G4EmDNAPhysics.hh"
0046 #include "G4EmDNAPhysics_option1.hh"
0047 #include "G4EmDNAPhysics_option2.hh"
0048 #include "G4EmDNAPhysics_option3.hh"
0049 #include "G4EmDNAPhysics_option4.hh"
0050 #include "G4EmDNAPhysics_option5.hh"
0051 #include "G4EmDNAPhysics_option6.hh"
0052 #include "G4EmDNAPhysics_option7.hh"
0053 #include "G4EmDNAPhysics_option8.hh"
0054 #include "G4EmParameters.hh"
0055 #include "G4SystemOfUnits.hh"
0056
0057 using namespace G4DNAPARSER;
0058
0059
0060
0061 PhysicsList::PhysicsList(): G4VModularPhysicsList()
0062 {
0063 auto currentDefaultCut = 1. * nanometer;
0064
0065 G4ProductionCutsTable::GetProductionCutsTable()->SetEnergyRange(100 * eV, 1 * GeV);
0066 SetDefaultCutValue(currentDefaultCut);
0067 SetVerboseLevel(1);
0068
0069 RegisterConstructor("G4EmDNAPhysics_option8");
0070 if (CommandLineParser::GetParser()->GetCommandIfActive("-chemOFF") == nullptr) {
0071 RegisterConstructor("G4EmDNAChemistry_option1");
0072 }
0073 G4EmParameters::Instance()->SetDNAeSolvationSubType(fRitchie1994eSolvation);
0074 G4EmParameters::Instance()->Dump();
0075 }
0076
0077
0078
0079 PhysicsList::~PhysicsList()
0080 {
0081 delete fEmDNAPhysicsList;
0082 delete fEmDNAChemistryList;
0083 delete fEmDNAChemistryList1;
0084 }
0085
0086
0087
0088 void PhysicsList::ConstructParticle()
0089 {
0090 if (fEmDNAPhysicsList) {
0091 fEmDNAPhysicsList->ConstructParticle();
0092 }
0093 if (fEmDNAChemistryList) {
0094 fEmDNAChemistryList->ConstructParticle();
0095 }
0096 if (fEmDNAChemistryList1) {
0097 fEmDNAChemistryList1->ConstructParticle();
0098 }
0099 }
0100
0101
0102
0103 void PhysicsList::ConstructProcess()
0104 {
0105 AddTransportation();
0106 if (fEmDNAPhysicsList) {
0107 fEmDNAPhysicsList->ConstructProcess();
0108 }
0109 if (fEmDNAChemistryList) {
0110 fEmDNAChemistryList->ConstructProcess();
0111 }
0112 if (fEmDNAChemistryList1) {
0113 fEmDNAChemistryList1->ConstructProcess();
0114 }
0115 }
0116
0117
0118
0119 void PhysicsList::RegisterConstructor(const G4String& name)
0120 {
0121 if (name == fPhysDNAName) {
0122 return;
0123 }
0124 if (verboseLevel > 0) {
0125 G4cout << "===== Register constructor ==== " << name << G4endl;
0126 }
0127 if (name == "G4EmDNAPhysics") {
0128 delete fEmDNAPhysicsList;
0129 fEmDNAPhysicsList = new G4EmDNAPhysics(verboseLevel);
0130 fPhysDNAName = name;
0131 }
0132 else if (name == "G4EmDNAPhysics_option1") {
0133 delete fEmDNAPhysicsList;
0134 fEmDNAPhysicsList = new G4EmDNAPhysics_option1(verboseLevel);
0135 fPhysDNAName = name;
0136 }
0137 else if (name == "G4EmDNAPhysics_option2") {
0138 delete fEmDNAPhysicsList;
0139 fEmDNAPhysicsList = new G4EmDNAPhysics_option2(verboseLevel);
0140 fPhysDNAName = name;
0141 }
0142 else if (name == "G4EmDNAPhysics_option3") {
0143 delete fEmDNAPhysicsList;
0144 fEmDNAPhysicsList = new G4EmDNAPhysics_option3(verboseLevel);
0145 fPhysDNAName = name;
0146 }
0147 else if (name == "G4EmDNAPhysics_option4") {
0148 delete fEmDNAPhysicsList;
0149 fEmDNAPhysicsList = new G4EmDNAPhysics_option4(verboseLevel);
0150 fPhysDNAName = name;
0151 }
0152 else if (name == "G4EmDNAPhysics_option5") {
0153 delete fEmDNAPhysicsList;
0154 fEmDNAPhysicsList = new G4EmDNAPhysics_option5(verboseLevel);
0155 fPhysDNAName = name;
0156 }
0157 else if (name == "G4EmDNAPhysics_option6") {
0158 delete fEmDNAPhysicsList;
0159 fEmDNAPhysicsList = new G4EmDNAPhysics_option6(verboseLevel);
0160 fPhysDNAName = name;
0161 }
0162 else if (name == "G4EmDNAPhysics_option7") {
0163 delete fEmDNAPhysicsList;
0164 fEmDNAPhysicsList = new G4EmDNAPhysics_option7(verboseLevel);
0165 fPhysDNAName = name;
0166 }
0167 else if (name == "G4EmDNAPhysics_option8") {
0168 delete fEmDNAPhysicsList;
0169 fEmDNAPhysicsList = new G4EmDNAPhysics_option8(verboseLevel);
0170 fPhysDNAName = name;
0171 }
0172 else if (name == "G4EmDNAChemistry") {
0173 if (fEmDNAChemistryList || fEmDNAChemistryList1) {
0174 return;
0175 }
0176 fEmDNAChemistryList = new G4EmDNAChemistry();
0177 fEmDNAChemistryList->SetVerboseLevel(verboseLevel);
0178 }
0179 else if (name == "G4EmDNAChemistry_option1") {
0180 if (fEmDNAChemistryList || fEmDNAChemistryList1) {
0181 return;
0182 }
0183 fEmDNAChemistryList1 = new G4EmDNAChemistry_option1();
0184 fEmDNAChemistryList1->SetVerboseLevel(verboseLevel);
0185 }
0186 else {
0187 G4cout << "PhysicsList::RegisterConstructor: <" << name << ">"
0188 << " fails - name is not defined" << G4endl;
0189 }
0190 }
0191
0192