File indexing completed on 2025-12-16 09:29:08
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 #include "ChemistryList.hh"
0028
0029 #include "G4DNAChemistryManager.hh"
0030 #include "G4DNAWaterDissociationDisplacer.hh"
0031 #include "G4DNAWaterExcitationStructure.hh"
0032 #include "G4PhysicalConstants.hh"
0033 #include "G4ProcessManager.hh"
0034 #include "G4SystemOfUnits.hh"
0035
0036 #include "DetectorConstruction.hh"
0037 #include "IRTDamageReactionModel.hh"
0038
0039 #include "G4ChemicalMoleculeFinder.hh"
0040 #include "G4DNABrownianTransportation.hh"
0041 #include "G4DNAElectronHoleRecombination.hh"
0042 #include "G4DNAElectronSolvation.hh"
0043 #include "G4DNAIndependentReactionTimeModel.hh"
0044 #include "G4DNAMolecularDissociation.hh"
0045 #include "G4DNAMolecularReactionTable.hh"
0046 #include "G4DNAMoleculeEncounterStepper.hh"
0047 #include "G4DNAPolyNucleotideReactionProcess.hh"
0048 #include "G4DNASancheExcitationModel.hh"
0049 #include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
0050 #include "G4DNAVibExcitation.hh"
0051 #include "G4Electron.hh"
0052 #include "G4Electron_aq.hh"
0053 #include "G4H2.hh"
0054 #include "G4H2O.hh"
0055 #include "G4H2O2.hh"
0056 #include "G4H3O.hh"
0057 #include "G4HO2.hh"
0058 #include "G4Hydrogen.hh"
0059 #include "G4MolecularConfiguration.hh"
0060 #include "G4MoleculeTable.hh"
0061 #include "G4O2.hh"
0062 #include "G4O3.hh"
0063 #include "G4OH.hh"
0064 #include "G4Oxygen.hh"
0065 #include "G4PhysicsListHelper.hh"
0066 #include "G4ProcessTable.hh"
0067 #include "G4RunManager.hh"
0068 #include "G4VDNAHitModel.hh"
0069 #include "G4VDNAReactionModel.hh"
0070 #include "G4ChemDissociationChannels_option1.hh"
0071
0072 ChemistryList::ChemistryList() : G4VUserChemistryList(true)
0073 {
0074 G4DNAChemistryManager::Instance()->SetChemistryList(this);
0075 }
0076
0077
0078
0079 void ChemistryList::ConstructMolecule()
0080 {
0081
0082
0083
0084 G4H2O::Definition();
0085 G4Hydrogen::Definition();
0086 G4H3O::Definition();
0087 G4OH::Definition();
0088 G4Electron_aq::Definition();
0089 G4H2O2::Definition();
0090 G4H2::Definition();
0091
0092 G4O2::Definition();
0093 G4HO2::Definition();
0094 G4Oxygen::Definition();
0095 G4O3::Definition();
0096
0097 auto G4OHm = new G4MoleculeDefinition("OH", 17.00734 * g / Avogadro * c_squared,
0098 2.8e-9 * (m * m / s), -1,
0099 5, 0.958 * angstrom,
0100 2
0101 );
0102
0103 auto G4HO2m = new G4MoleculeDefinition("HO_2", 33.0034 * g / Avogadro * c_squared,
0104 2.3e-9 * (m * m / s), -1, 0,
0105 2.1 * angstrom, 3);
0106
0107
0108 G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
0109 G4MolecularConfiguration* OHm =
0110 G4MoleculeTable::Instance()->CreateConfiguration("OHm",
0111
0112 G4OHm,
0113 -1,
0114 5.0e-9 * (m2 / s));
0115 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
0116 G4MoleculeTable::Instance()->CreateConfiguration("°OH", G4OH::Definition());
0117 G4MoleculeTable::Instance()->CreateConfiguration("e_aq", G4Electron_aq::Definition());
0118 G4MoleculeTable::Instance()->CreateConfiguration("H", G4Hydrogen::Definition());
0119 G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
0120 G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
0121
0122
0123
0124 G4MoleculeTable::Instance()->CreateConfiguration("HO2°", G4HO2::Definition());
0125 G4MoleculeTable::Instance()->GetConfiguration("HO2°")->SetVanDerVaalsRadius(0.21 * nm);
0126
0127 G4MolecularConfiguration* HO2m =
0128 G4MoleculeTable::Instance()->CreateConfiguration("HO2m",
0129
0130 G4HO2m,
0131 -1,
0132 1.4e-9 * (m2 / s));
0133 HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
0134 HO2m->SetVanDerVaalsRadius(0.25 * nm);
0135
0136 G4MoleculeTable::Instance()->CreateConfiguration("Oxy", G4Oxygen::Definition());
0137 G4MoleculeTable::Instance()->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20 * nm);
0138
0139 G4MolecularConfiguration* Om =
0140 G4MoleculeTable::Instance()->CreateConfiguration("Om",
0141
0142 G4Oxygen::Definition(),
0143 -1,
0144 2.0e-9 * (m2 / s));
0145 Om->SetMass(15.99829 * g / Avogadro * c_squared);
0146 Om->SetVanDerVaalsRadius(0.25 * nm);
0147
0148 G4MoleculeTable::Instance()->CreateConfiguration("O2", G4O2::Definition());
0149 G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
0150
0151 G4MolecularConfiguration* O2m =
0152 G4MoleculeTable::Instance()->CreateConfiguration("O2m",
0153
0154 G4O2::Definition(),
0155 -1,
0156 1.75e-9 * (m2 / s));
0157 O2m->SetMass(31.99602 * g / Avogadro * c_squared);
0158 O2m->SetVanDerVaalsRadius(0.22 * nm);
0159
0160 G4MoleculeTable::Instance()->CreateConfiguration("O3", G4O3::Definition());
0161 G4MoleculeTable::Instance()->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20 * nm);
0162
0163 G4MolecularConfiguration* O3m =
0164 G4MoleculeTable::Instance()->CreateConfiguration("O3m",
0165
0166 G4O3::Definition(),
0167 -1,
0168 2.0e-9 * (m2 / s));
0169 O3m->SetMass(47.99375 * g / Avogadro * c_squared);
0170 O3m->SetVanDerVaalsRadius(0.20 * nm);
0171
0172 G4MoleculeDefinition* A = G4MoleculeTable::Instance()->CreateMoleculeDefinition("ADENINE", 0);
0173 G4MoleculeTable::Instance()->CreateConfiguration("A", A);
0174
0175 G4MoleculeDefinition* T = G4MoleculeTable::Instance()->CreateMoleculeDefinition("THYMINE", 0);
0176 G4MoleculeTable::Instance()->CreateConfiguration("T", T);
0177
0178 G4MoleculeDefinition* G = G4MoleculeTable::Instance()->CreateMoleculeDefinition("GUANINE", 0);
0179 G4MoleculeTable::Instance()->CreateConfiguration("G", G);
0180
0181 G4MoleculeDefinition* C = G4MoleculeTable::Instance()->CreateMoleculeDefinition("CYTOSINE", 0);
0182 G4MoleculeTable::Instance()->CreateConfiguration("C", C);
0183
0184 G4MoleculeDefinition* S = G4MoleculeTable::Instance()->CreateMoleculeDefinition("SUGAR", 0);
0185 G4MoleculeTable::Instance()->CreateConfiguration("Sugar", S);
0186
0187 G4DNAMolecularMaterial* molMaterialManager = G4DNAMolecularMaterial::Instance();
0188
0189 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_DEOXYRIBOSE"),
0190 "Sugar");
0191 molMaterialManager->SetMolecularConfiguration("G4_DNA_PHOSPHATE", "Sugar");
0192 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_ADENINE"), "A");
0193 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_THYMINE"), "T");
0194 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_GUANINE"), "G");
0195 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_CYTOSINE"), "C");
0196 }
0197
0198
0199
0200 void ChemistryList::ConstructDissociationChannels()
0201 {
0202 G4ChemDissociationChannels_option1::ConstructDissociationChannels();
0203 }
0204
0205
0206
0207 void ChemistryList::ConstructReactionTable(G4DNAMolecularReactionTable* theReactionTable)
0208 {
0209
0210
0211 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("°OH");
0212 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0213 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0214 G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0215 G4MolecularConfiguration* H3Op = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0216 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0217 G4MolecularConfiguration* H2O2 = G4MoleculeTable::Instance()->GetConfiguration("H2O2");
0218 G4MolecularConfiguration* HO2 = G4MoleculeTable::Instance()->GetConfiguration("HO2°");
0219 G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->GetConfiguration("HO2m");
0220 G4MolecularConfiguration* O = G4MoleculeTable::Instance()->GetConfiguration("Oxy");
0221 G4MolecularConfiguration* Om = G4MoleculeTable::Instance()->GetConfiguration("Om");
0222 G4MolecularConfiguration* O2 = G4MoleculeTable::Instance()->GetConfiguration("O2");
0223 G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->GetConfiguration("O2m");
0224 G4MolecularConfiguration* O3 = G4MoleculeTable::Instance()->GetConfiguration("O3");
0225 G4MolecularConfiguration* O3m = G4MoleculeTable::Instance()->GetConfiguration("O3m");
0226
0227
0228
0229
0230 auto* reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0231 reactionData->AddProduct(H2);
0232 theReactionTable->SetReaction(reactionData);
0233
0234
0235 reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
0236 reactionData->AddProduct(OHm);
0237 reactionData->AddProduct(H2);
0238 theReactionTable->SetReaction(reactionData);
0239
0240
0241 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), H, O);
0242 reactionData->AddProduct(OH);
0243 theReactionTable->SetReaction(reactionData);
0244
0245
0246 reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
0247 reactionData->AddProduct(OHm);
0248 theReactionTable->SetReaction(reactionData);
0249
0250
0251 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), OH, O);
0252 reactionData->AddProduct(HO2);
0253 theReactionTable->SetReaction(reactionData);
0254
0255
0256 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O);
0257 reactionData->AddProduct(O2);
0258 reactionData->AddProduct(OH);
0259 theReactionTable->SetReaction(reactionData);
0260
0261
0262 reactionData = new G4DNAMolecularReactionData(2.20e10 * (1e-3 * m3 / (mole * s)), O, O);
0263 reactionData->AddProduct(O2);
0264 theReactionTable->SetReaction(reactionData);
0265
0266
0267
0268
0269 reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0270 reactionData->AddProduct(OHm);
0271 reactionData->AddProduct(OHm);
0272 reactionData->AddProduct(H2);
0273 theReactionTable->SetReaction(reactionData);
0274
0275
0276 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0277 theReactionTable->SetReaction(reactionData);
0278
0279
0280 reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
0281 reactionData->AddProduct(OH);
0282 reactionData->AddProduct(O2);
0283 theReactionTable->SetReaction(reactionData);
0284
0285
0286
0287
0288
0289 reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0290 reactionData->SetReactionType(1);
0291 theReactionTable->SetReaction(reactionData);
0292
0293
0294 reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
0295 reactionData->AddProduct(OH);
0296 reactionData->SetReactionType(1);
0297 theReactionTable->SetReaction(reactionData);
0298
0299
0300 reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
0301 reactionData->AddProduct(e_aq);
0302 reactionData->SetReactionType(1);
0303 theReactionTable->SetReaction(reactionData);
0304
0305
0306 reactionData = new G4DNAMolecularReactionData(2.10e10 * (1e-3 * m3 / (mole * s)), H, O2);
0307 reactionData->AddProduct(HO2);
0308 reactionData->SetReactionType(1);
0309 theReactionTable->SetReaction(reactionData);
0310
0311
0312 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
0313 reactionData->AddProduct(H2O2);
0314 reactionData->SetReactionType(1);
0315 theReactionTable->SetReaction(reactionData);
0316
0317
0318 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
0319 reactionData->AddProduct(HO2m);
0320 reactionData->SetReactionType(1);
0321 theReactionTable->SetReaction(reactionData);
0322
0323
0324 reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0325 reactionData->AddProduct(H2O2);
0326 reactionData->SetReactionType(1);
0327 theReactionTable->SetReaction(reactionData);
0328
0329
0330 reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
0331 reactionData->AddProduct(HO2);
0332 reactionData->SetReactionType(1);
0333 theReactionTable->SetReaction(reactionData);
0334
0335
0336 reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
0337 reactionData->AddProduct(H);
0338 reactionData->SetReactionType(1);
0339 theReactionTable->SetReaction(reactionData);
0340
0341
0342 reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0343 reactionData->AddProduct(OHm);
0344 reactionData->SetReactionType(1);
0345 theReactionTable->SetReaction(reactionData);
0346
0347
0348 reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm);
0349 reactionData->AddProduct(Om);
0350 reactionData->SetReactionType(1);
0351 theReactionTable->SetReaction(reactionData);
0352
0353
0354 reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0355 reactionData->AddProduct(O2);
0356 reactionData->SetReactionType(1);
0357 theReactionTable->SetReaction(reactionData);
0358
0359
0360 reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
0361 reactionData->AddProduct(O2);
0362 reactionData->AddProduct(OHm);
0363 reactionData->SetReactionType(1);
0364 theReactionTable->SetReaction(reactionData);
0365
0366
0367 reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
0368 reactionData->AddProduct(HO2);
0369 reactionData->AddProduct(OHm);
0370 reactionData->SetReactionType(1);
0371 theReactionTable->SetReaction(reactionData);
0372
0373
0374 reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
0375 reactionData->AddProduct(HO2m);
0376 reactionData->SetReactionType(1);
0377 theReactionTable->SetReaction(reactionData);
0378
0379
0380 reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
0381 reactionData->AddProduct(O2m);
0382 reactionData->AddProduct(HO2);
0383 reactionData->SetReactionType(1);
0384 theReactionTable->SetReaction(reactionData);
0385
0386
0387 reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0388 reactionData->AddProduct(OHm);
0389 reactionData->AddProduct(OH);
0390 reactionData->SetReactionType(1);
0391 theReactionTable->SetReaction(reactionData);
0392
0393
0394 reactionData = new G4DNAMolecularReactionData(4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm);
0395 reactionData->AddProduct(HO2m);
0396 reactionData->SetReactionType(1);
0397 theReactionTable->SetReaction(reactionData);
0398
0399
0400 reactionData = new G4DNAMolecularReactionData(1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O);
0401 reactionData->AddProduct(HO2);
0402 reactionData->AddProduct(OH);
0403 reactionData->SetReactionType(1);
0404 theReactionTable->SetReaction(reactionData);
0405
0406
0407 reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
0408 reactionData->AddProduct(HO2);
0409 reactionData->AddProduct(OHm);
0410 reactionData->SetReactionType(1);
0411 theReactionTable->SetReaction(reactionData);
0412
0413
0414 reactionData = new G4DNAMolecularReactionData(4.77e3 * (1e-3 * m3 / (mole * s)), H2, O);
0415 reactionData->AddProduct(H);
0416 reactionData->AddProduct(OH);
0417 reactionData->SetReactionType(1);
0418 theReactionTable->SetReaction(reactionData);
0419
0420
0421 reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
0422 reactionData->AddProduct(H);
0423 reactionData->AddProduct(OHm);
0424 reactionData->SetReactionType(1);
0425 theReactionTable->SetReaction(reactionData);
0426
0427
0428 reactionData = new G4DNAMolecularReactionData(1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0429 reactionData->AddProduct(O2m);
0430 reactionData->SetReactionType(1);
0431 theReactionTable->SetReaction(reactionData);
0432
0433
0434 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
0435 reactionData->AddProduct(HO2m);
0436 reactionData->SetReactionType(1);
0437 theReactionTable->SetReaction(reactionData);
0438
0439
0440 reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2);
0441 reactionData->AddProduct(O2m);
0442 reactionData->SetReactionType(1);
0443 theReactionTable->SetReaction(reactionData);
0444
0445
0446 reactionData = new G4DNAMolecularReactionData(4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O);
0447 reactionData->AddProduct(HO2m);
0448 reactionData->SetReactionType(1);
0449 theReactionTable->SetReaction(reactionData);
0450
0451
0452 reactionData = new G4DNAMolecularReactionData(4.00e9 * (1e-3 * m3 / (mole * s)), O2, O);
0453 reactionData->AddProduct(O3);
0454 reactionData->SetReactionType(1);
0455 theReactionTable->SetReaction(reactionData);
0456
0457
0458 reactionData = new G4DNAMolecularReactionData(3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om);
0459 reactionData->AddProduct(O3m);
0460 reactionData->SetReactionType(1);
0461 theReactionTable->SetReaction(reactionData);
0462
0463
0464 reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
0465 reactionData->AddProduct(H2O2);
0466 reactionData->AddProduct(O2);
0467 reactionData->SetReactionType(1);
0468 theReactionTable->SetReaction(reactionData);
0469
0470
0471 reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
0472 reactionData->AddProduct(HO2m);
0473 reactionData->AddProduct(O2);
0474 reactionData->SetReactionType(1);
0475 theReactionTable->SetReaction(reactionData);
0476
0477
0478 reactionData = new G4DNAMolecularReactionData(5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O);
0479 reactionData->AddProduct(O2m);
0480 reactionData->AddProduct(OH);
0481 reactionData->SetReactionType(1);
0482 theReactionTable->SetReaction(reactionData);
0483
0484
0485
0486
0487 reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0488 reactionData->AddProduct(H);
0489 reactionData->SetReactionType(1);
0490 theReactionTable->SetReaction(reactionData);
0491
0492
0493 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
0494 reactionData->AddProduct(H2O2);
0495 reactionData->AddProduct(OHm);
0496 reactionData->AddProduct(OHm);
0497 reactionData->SetReactionType(1);
0498 theReactionTable->SetReaction(reactionData);
0499
0500
0501 reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
0502 reactionData->AddProduct(Om);
0503 reactionData->AddProduct(OHm);
0504 reactionData->SetReactionType(1);
0505 theReactionTable->SetReaction(reactionData);
0506
0507
0508 reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
0509 reactionData->AddProduct(OHm);
0510 reactionData->AddProduct(OHm);
0511 reactionData->SetReactionType(1);
0512 theReactionTable->SetReaction(reactionData);
0513
0514
0515 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
0516 reactionData->AddProduct(HO2);
0517 reactionData->SetReactionType(1);
0518 theReactionTable->SetReaction(reactionData);
0519
0520
0521 reactionData = new G4DNAMolecularReactionData(5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
0522 reactionData->AddProduct(H2O2);
0523 reactionData->SetReactionType(1);
0524 theReactionTable->SetReaction(reactionData);
0525
0526
0527 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
0528 reactionData->AddProduct(OH);
0529 reactionData->SetReactionType(1);
0530 theReactionTable->SetReaction(reactionData);
0531
0532
0533 reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
0534 reactionData->AddProduct(O2);
0535 reactionData->AddProduct(OHm);
0536 reactionData->AddProduct(OHm);
0537 reactionData->SetReactionType(1);
0538 theReactionTable->SetReaction(reactionData);
0539
0540
0541 reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
0542 reactionData->AddProduct(O2m);
0543 reactionData->AddProduct(OHm);
0544 reactionData->SetReactionType(1);
0545 theReactionTable->SetReaction(reactionData);
0546
0547
0548 reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
0549 reactionData->AddProduct(H2O2);
0550 reactionData->AddProduct(OHm);
0551 reactionData->AddProduct(OHm);
0552 reactionData->SetReactionType(1);
0553 theReactionTable->SetReaction(reactionData);
0554
0555
0556 reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
0557 reactionData->AddProduct(O2m);
0558 reactionData->AddProduct(O2m);
0559 reactionData->SetReactionType(1);
0560 theReactionTable->SetReaction(reactionData);
0561
0562
0563
0564 G4MolecularConfiguration* A = G4MoleculeTable::Instance()->GetConfiguration("A");
0565 G4MolecularConfiguration* T = G4MoleculeTable::Instance()->GetConfiguration("T");
0566 G4MolecularConfiguration* G = G4MoleculeTable::Instance()->GetConfiguration("G");
0567 G4MolecularConfiguration* C = G4MoleculeTable::Instance()->GetConfiguration("C");
0568 G4MolecularConfiguration* Sugar = G4MoleculeTable::Instance()->GetConfiguration("Sugar");
0569
0570
0571 theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, A);
0572 theReactionTable->SetReaction(0.64e10 * (1e-3 * m3 / (mole * s)), OH, T);
0573 theReactionTable->SetReaction(0.92e10 * (1e-3 * m3 / (mole * s)), OH, G);
0574 theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, C);
0575 theReactionTable->SetReaction(0.18e10 * (1e-3 * m3 / (mole * s)), OH, Sugar);
0576
0577 theReactionTable->SetReaction(0.9e10 * (1e-3 * m3 / (mole * s)), e_aq, A);
0578 theReactionTable->SetReaction(1.8e10 * (1e-3 * m3 / (mole * s)), e_aq, T);
0579 theReactionTable->SetReaction(1.4e10 * (1e-3 * m3 / (mole * s)), e_aq, G);
0580 theReactionTable->SetReaction(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, C);
0581 theReactionTable->SetReaction(1.0e7 * (1e-3 * m3 / (mole * s)), e_aq, Sugar);
0582
0583 theReactionTable->SetReaction(1.0e8 * (1e-3 * m3 / (mole * s)), H, A);
0584 theReactionTable->SetReaction(5.7e8 * (1e-3 * m3 / (mole * s)), H, T);
0585 theReactionTable->SetReaction(9.2e7 * (1e-3 * m3 / (mole * s)), H, C);
0586 theReactionTable->SetReaction(2.9e7 * (1e-3 * m3 / (mole * s)), H, Sugar);
0587 }
0588
0589
0590
0591 void ChemistryList::ConstructProcess()
0592 {
0593 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0594
0595
0596
0597
0598
0599
0600 G4VProcess* process =
0601 G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAVibExcitation", "e-");
0602
0603 if (process != nullptr) {
0604 auto* vibExcitation = (G4DNAVibExcitation*)process;
0605 G4VEmModel* model = vibExcitation->EmModel();
0606 auto* sancheExcitationMod = dynamic_cast<G4DNASancheExcitationModel*>(model);
0607 if (sancheExcitationMod != nullptr) {
0608 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
0609 }
0610 }
0611
0612
0613
0614
0615 process = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
0616
0617 if (process == nullptr) {
0618 ph->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
0619 G4Electron::Definition());
0620 }
0621
0622
0623
0624
0625 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
0626 G4MoleculeDefinitionIterator iterator = theMoleculeTable->GetDefintionIterator();
0627 iterator.reset();
0628 while (iterator()) {
0629 G4MoleculeDefinition* moleculeDef = iterator.value();
0630
0631 if (moleculeDef != G4H2O::Definition()) {
0632 auto brown = new G4DNABrownianTransportation();
0633 ph->RegisterProcess(brown, moleculeDef);
0634
0635 if (moleculeDef == G4Electron_aq::Definition() || moleculeDef == G4OH::Definition()
0636 || moleculeDef == G4Hydrogen::Definition())
0637 {
0638 G4VDNAHitModel* pDamageModel = new IRTDamageReactionModel("IRTDamageReactionModel");
0639 auto staticMoleculeReactionProcess =
0640 new G4DNAPolyNucleotideReactionProcess("PolyNucleotideReactionProcess");
0641 staticMoleculeReactionProcess->SetVerbose(1);
0642 staticMoleculeReactionProcess->SetDNADamageReactionModel(pDamageModel);
0643 ph->RegisterProcess(staticMoleculeReactionProcess, moleculeDef);
0644 }
0645 }
0646 else {
0647 moleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
0648 auto* dissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
0649 dissociationProcess->SetDisplacer(moleculeDef, new G4DNAWaterDissociationDisplacer);
0650 dissociationProcess->SetVerboseLevel(3);
0651
0652 moleculeDef->GetProcessManager()->AddRestProcess(dissociationProcess, 1);
0653 }
0654 }
0655 }
0656
0657
0658
0659 void ChemistryList::ConstructTimeStepModel(G4DNAMolecularReactionTable*
0660 )
0661 {
0662 auto model = G4EmParameters::Instance()->GetTimeStepModel();
0663 if(model == G4ChemTimeStepModel::IRT_syn)
0664 {
0665 RegisterTimeStepModel(new G4DNAIndependentReactionTimeModel(), 0);
0666 }else
0667 {
0668 G4ExceptionDescription exceptionDescription;
0669 exceptionDescription << "This example uses only IRT_syn";
0670 G4Exception(
0671 "ChemistryList"
0672 "ConstructTimeStepModel",
0673 "ConstructTimeStepModel", FatalException, exceptionDescription);
0674 }
0675 }
0676
0677 void ChemistryList::ConstructParticle()
0678 {
0679 ConstructMolecule();
0680 }