File indexing completed on 2025-02-23 09:22:00
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
0071 ChemistryList::ChemistryList() : G4VUserChemistryList(true)
0072 {
0073 G4DNAChemistryManager::Instance()->SetChemistryList(this);
0074 }
0075
0076
0077
0078 void ChemistryList::ConstructMolecule()
0079 {
0080
0081
0082
0083 G4H2O::Definition();
0084 G4Hydrogen::Definition();
0085 G4H3O::Definition();
0086 G4OH::Definition();
0087 G4Electron_aq::Definition();
0088 G4H2O2::Definition();
0089 G4H2::Definition();
0090
0091 G4O2::Definition();
0092 G4HO2::Definition();
0093 G4Oxygen::Definition();
0094 G4O3::Definition();
0095
0096
0097
0098 G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
0099 G4MolecularConfiguration* OHm =
0100 G4MoleculeTable::Instance()->CreateConfiguration("OHm",
0101
0102 G4OH::Definition(),
0103 -1,
0104 5.0e-9 * (m2 / s));
0105 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
0106 G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
0107 G4MoleculeTable::Instance()->CreateConfiguration("e_aq", G4Electron_aq::Definition());
0108 G4MoleculeTable::Instance()->CreateConfiguration("H", G4Hydrogen::Definition());
0109 G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
0110 G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
0111
0112
0113
0114 G4MoleculeTable::Instance()->CreateConfiguration("HO2", G4HO2::Definition());
0115 G4MoleculeTable::Instance()->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21 * nm);
0116
0117 G4MolecularConfiguration* HO2m =
0118 G4MoleculeTable::Instance()->CreateConfiguration("HO2m",
0119
0120 G4HO2::Definition(),
0121 -1,
0122 1.4e-9 * (m2 / s));
0123 HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
0124 HO2m->SetVanDerVaalsRadius(0.25 * nm);
0125
0126 G4MoleculeTable::Instance()->CreateConfiguration("Oxy", G4Oxygen::Definition());
0127 G4MoleculeTable::Instance()->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20 * nm);
0128
0129 G4MolecularConfiguration* Om =
0130 G4MoleculeTable::Instance()->CreateConfiguration("Om",
0131
0132 G4Oxygen::Definition(),
0133 -1,
0134 2.0e-9 * (m2 / s));
0135 Om->SetMass(15.99829 * g / Avogadro * c_squared);
0136 Om->SetVanDerVaalsRadius(0.25 * nm);
0137
0138 G4MoleculeTable::Instance()->CreateConfiguration("O2", G4O2::Definition());
0139 G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
0140
0141 G4MolecularConfiguration* O2m =
0142 G4MoleculeTable::Instance()->CreateConfiguration("O2m",
0143
0144 G4O2::Definition(),
0145 -1,
0146 1.75e-9 * (m2 / s));
0147 O2m->SetMass(31.99602 * g / Avogadro * c_squared);
0148 O2m->SetVanDerVaalsRadius(0.22 * nm);
0149
0150 G4MoleculeTable::Instance()->CreateConfiguration("O3", G4O3::Definition());
0151 G4MoleculeTable::Instance()->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20 * nm);
0152
0153 G4MolecularConfiguration* O3m =
0154 G4MoleculeTable::Instance()->CreateConfiguration("O3m",
0155
0156 G4O3::Definition(),
0157 -1,
0158 2.0e-9 * (m2 / s));
0159 O3m->SetMass(47.99375 * g / Avogadro * c_squared);
0160 O3m->SetVanDerVaalsRadius(0.20 * nm);
0161
0162 G4MoleculeDefinition* A = G4MoleculeTable::Instance()->CreateMoleculeDefinition("ADENINE", 0);
0163 G4MoleculeTable::Instance()->CreateConfiguration("A", A);
0164
0165 G4MoleculeDefinition* T = G4MoleculeTable::Instance()->CreateMoleculeDefinition("THYMINE", 0);
0166 G4MoleculeTable::Instance()->CreateConfiguration("T", T);
0167
0168 G4MoleculeDefinition* G = G4MoleculeTable::Instance()->CreateMoleculeDefinition("GUANINE", 0);
0169 G4MoleculeTable::Instance()->CreateConfiguration("G", G);
0170
0171 G4MoleculeDefinition* C = G4MoleculeTable::Instance()->CreateMoleculeDefinition("CYTOSINE", 0);
0172 G4MoleculeTable::Instance()->CreateConfiguration("C", C);
0173
0174 G4MoleculeDefinition* S = G4MoleculeTable::Instance()->CreateMoleculeDefinition("SUGAR", 0);
0175 G4MoleculeTable::Instance()->CreateConfiguration("Sugar", S);
0176
0177 G4DNAMolecularMaterial* molMaterialManager = G4DNAMolecularMaterial::Instance();
0178
0179 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_DEOXYRIBOSE"),
0180 "Sugar");
0181 molMaterialManager->SetMolecularConfiguration("G4_DNA_PHOSPHATE", "Sugar");
0182 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_ADENINE"), "A");
0183 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_THYMINE"), "T");
0184 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_GUANINE"), "G");
0185 molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_CYTOSINE"), "C");
0186 }
0187
0188
0189
0190 void ChemistryList::ConstructDissociationChannels()
0191 {
0192
0193
0194 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0195 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0196 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0197 G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0198 G4MolecularConfiguration* H3O = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0199 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0200 G4MolecularConfiguration* O = G4MoleculeTable::Instance()->GetConfiguration("Oxy");
0201
0202
0203
0204 G4MoleculeDefinition* water = G4H2O::Definition();
0205 G4MolecularDissociationChannel* decCh1;
0206 G4MolecularDissociationChannel* decCh2;
0207
0208 auto* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
0209
0210
0211
0212
0213 G4DNAWaterExcitationStructure waterExcitation;
0214
0215
0216
0217 decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
0218 decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0219
0220 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
0221 decCh1->SetProbability(0.35);
0222 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
0223
0224 decCh2->AddProduct(OH);
0225 decCh2->AddProduct(H);
0226 decCh2->SetProbability(0.65);
0227 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0228
0229
0230 occ->RemoveElectron(4, 1);
0231 occ->AddElectron(5, 1);
0232
0233 water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
0234 water->AddDecayChannel("A^1B_1", decCh1);
0235 water->AddDecayChannel("A^1B_1", decCh2);
0236
0237
0238
0239 decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
0240 decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
0241 auto* decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
0242 auto* decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0243 auto* decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
0244
0245
0246 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
0247
0248 decCh1->SetProbability(0.175);
0249
0250
0251
0252
0253 decCh2->AddProduct(H2);
0254 decCh2->AddProduct(OH);
0255 decCh2->AddProduct(OH);
0256
0257 decCh2->SetProbability(0.0325);
0258
0259
0260 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0261
0262
0263 decCh3->AddProduct(OH);
0264 decCh3->AddProduct(H3O);
0265 decCh3->AddProduct(e_aq);
0266
0267 decCh3->SetProbability(0.50);
0268 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0269
0270
0271 decCh4->AddProduct(H);
0272 decCh4->AddProduct(OH);
0273
0274 decCh4->SetProbability(0.2535);
0275
0276
0277 decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0278
0279
0280 decCh5->AddProduct(O);
0281 decCh5->AddProduct(H);
0282 decCh5->AddProduct(H);
0283
0284 decCh5->SetProbability(0.039);
0285 decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0286
0287 *occ = *(water->GetGroundStateElectronOccupancy());
0288 occ->RemoveElectron(3);
0289 occ->AddElectron(5, 1);
0290
0291 water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
0292 water->AddDecayChannel("B^1A_1", decCh1);
0293 water->AddDecayChannel("B^1A_1", decCh2);
0294 water->AddDecayChannel("B^1A_1", decCh3);
0295 water->AddDecayChannel("B^1A_1", decCh4);
0296 water->AddDecayChannel("B^1A_1", decCh5);
0297
0298
0299
0300 decCh1 = new G4MolecularDissociationChannel("Excitation3rdLayer_AutoIonisation_Channel");
0301 decCh2 = new G4MolecularDissociationChannel("Excitation3rdLayer_Relaxation_Channel");
0302
0303
0304 decCh1->AddProduct(OH);
0305 decCh1->AddProduct(H3O);
0306 decCh1->AddProduct(e_aq);
0307
0308 decCh1->SetProbability(0.5);
0309 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0310
0311
0312 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
0313 decCh2->SetProbability(0.5);
0314
0315
0316 *occ = *(water->GetGroundStateElectronOccupancy());
0317 occ->RemoveElectron(2, 1);
0318 occ->AddElectron(5, 1);
0319
0320
0321 water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
0322 water->AddDecayChannel("Excitation3rdLayer", decCh1);
0323 water->AddDecayChannel("Excitation3rdLayer", decCh2);
0324
0325
0326
0327 decCh1 = new G4MolecularDissociationChannel("Excitation2ndLayer_AutoIonisation_Channel");
0328 decCh2 = new G4MolecularDissociationChannel("Excitation2ndLayer_Relaxation_Channel");
0329
0330
0331 decCh1->AddProduct(OH);
0332 decCh1->AddProduct(H3O);
0333 decCh1->AddProduct(e_aq);
0334
0335 decCh1->SetProbability(0.5);
0336 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0337
0338
0339 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
0340 decCh2->SetProbability(0.5);
0341
0342 *occ = *(water->GetGroundStateElectronOccupancy());
0343 occ->RemoveElectron(1, 1);
0344 occ->AddElectron(5, 1);
0345
0346 water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
0347 water->AddDecayChannel("Excitation2ndLayer", decCh1);
0348 water->AddDecayChannel("Excitation2ndLayer", decCh2);
0349
0350
0351
0352 decCh1 = new G4MolecularDissociationChannel("Excitation1stLayer_AutoIonisation_Channel");
0353 decCh2 = new G4MolecularDissociationChannel("Excitation1stLayer_Relaxation_Channel");
0354
0355 *occ = *(water->GetGroundStateElectronOccupancy());
0356 occ->RemoveElectron(0, 1);
0357 occ->AddElectron(5, 1);
0358
0359
0360 decCh1->AddProduct(OH);
0361 decCh1->AddProduct(H3O);
0362 decCh1->AddProduct(e_aq);
0363 decCh1->SetProbability(0.5);
0364 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0365
0366
0367 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
0368 decCh2->SetProbability(0.5);
0369
0370 water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
0371 water->AddDecayChannel("Excitation1stLayer", decCh1);
0372 water->AddDecayChannel("Excitation1stLayer", decCh2);
0373
0374
0375
0376
0377
0378
0379
0380 decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
0381
0382
0383 decCh1->AddProduct(H3O);
0384 decCh1->AddProduct(OH);
0385 decCh1->SetProbability(1);
0386 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
0387
0388 *occ = *(water->GetGroundStateElectronOccupancy());
0389 occ->RemoveElectron(4, 1);
0390
0391 water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
0392 water->AddDecayChannel("Ionisation5", decCh1);
0393
0394 *occ = *(water->GetGroundStateElectronOccupancy());
0395 occ->RemoveElectron(3, 1);
0396 water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
0397 water->AddDecayChannel("Ionisation4", new G4MolecularDissociationChannel(*decCh1));
0398
0399 *occ = *(water->GetGroundStateElectronOccupancy());
0400 occ->RemoveElectron(2, 1);
0401 water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
0402 water->AddDecayChannel("Ionisation3", new G4MolecularDissociationChannel(*decCh1));
0403
0404 *occ = *(water->GetGroundStateElectronOccupancy());
0405 occ->RemoveElectron(1, 1);
0406 water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
0407 water->AddDecayChannel("Ionisation2", new G4MolecularDissociationChannel(*decCh1));
0408
0409 *occ = *(water->GetGroundStateElectronOccupancy());
0410 occ->RemoveElectron(0, 1);
0411 water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
0412 water->AddDecayChannel("Ionisation1", new G4MolecularDissociationChannel(*decCh1));
0413
0414
0415
0416
0417 decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
0418
0419
0420 decCh1->AddProduct(H2);
0421 decCh1->AddProduct(OHm);
0422 decCh1->AddProduct(OH);
0423 decCh1->SetProbability(1);
0424 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
0425
0426 *occ = *(water->GetGroundStateElectronOccupancy());
0427 occ->AddElectron(5, 1);
0428
0429 water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
0430 water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
0431
0432
0433
0434
0435 decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
0436 decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
0437 decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
0438 decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
0439
0440
0441 decCh1->AddProduct(H2);
0442 decCh1->AddProduct(OH);
0443 decCh1->AddProduct(OH);
0444 decCh1->SetProbability(0.1365);
0445 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0446
0447
0448 decCh2->AddProduct(OH);
0449 decCh2->AddProduct(H);
0450 decCh2->SetProbability(0.3575);
0451 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0452
0453
0454 decCh3->AddProduct(O);
0455 decCh3->AddProduct(H);
0456 decCh3->AddProduct(H);
0457 decCh3->SetProbability(0.156);
0458 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0459
0460
0461 decCh4->SetProbability(0.35);
0462
0463 const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
0464 assert(pH2Ovib != nullptr);
0465
0466 water->AddDecayChannel(pH2Ovib, decCh1);
0467 water->AddDecayChannel(pH2Ovib, decCh2);
0468 water->AddDecayChannel(pH2Ovib, decCh3);
0469 water->AddDecayChannel(pH2Ovib, decCh4);
0470
0471 delete occ;
0472 }
0473
0474
0475
0476 void ChemistryList::ConstructReactionTable(G4DNAMolecularReactionTable* theReactionTable)
0477 {
0478
0479
0480 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0481 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0482 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0483 G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0484 G4MolecularConfiguration* H3Op = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0485 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0486 G4MolecularConfiguration* H2O2 = G4MoleculeTable::Instance()->GetConfiguration("H2O2");
0487 G4MolecularConfiguration* HO2 = G4MoleculeTable::Instance()->GetConfiguration("HO2");
0488 G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->GetConfiguration("HO2m");
0489 G4MolecularConfiguration* O = G4MoleculeTable::Instance()->GetConfiguration("Oxy");
0490 G4MolecularConfiguration* Om = G4MoleculeTable::Instance()->GetConfiguration("Om");
0491 G4MolecularConfiguration* O2 = G4MoleculeTable::Instance()->GetConfiguration("O2");
0492 G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->GetConfiguration("O2m");
0493 G4MolecularConfiguration* O3 = G4MoleculeTable::Instance()->GetConfiguration("O3");
0494 G4MolecularConfiguration* O3m = G4MoleculeTable::Instance()->GetConfiguration("O3m");
0495
0496
0497
0498
0499 auto* reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0500 reactionData->AddProduct(H2);
0501 theReactionTable->SetReaction(reactionData);
0502
0503
0504 reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
0505 reactionData->AddProduct(OHm);
0506 reactionData->AddProduct(H2);
0507 theReactionTable->SetReaction(reactionData);
0508
0509
0510 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), H, O);
0511 reactionData->AddProduct(OH);
0512 theReactionTable->SetReaction(reactionData);
0513
0514
0515 reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
0516 reactionData->AddProduct(OHm);
0517 theReactionTable->SetReaction(reactionData);
0518
0519
0520 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), OH, O);
0521 reactionData->AddProduct(HO2);
0522 theReactionTable->SetReaction(reactionData);
0523
0524
0525 reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O);
0526 reactionData->AddProduct(O2);
0527 reactionData->AddProduct(OH);
0528 theReactionTable->SetReaction(reactionData);
0529
0530
0531 reactionData = new G4DNAMolecularReactionData(2.20e10 * (1e-3 * m3 / (mole * s)), O, O);
0532 reactionData->AddProduct(O2);
0533 theReactionTable->SetReaction(reactionData);
0534
0535
0536
0537
0538 reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0539 reactionData->AddProduct(OHm);
0540 reactionData->AddProduct(OHm);
0541 reactionData->AddProduct(H2);
0542 theReactionTable->SetReaction(reactionData);
0543
0544
0545 reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0546 theReactionTable->SetReaction(reactionData);
0547
0548
0549 reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
0550 reactionData->AddProduct(OH);
0551 reactionData->AddProduct(O2);
0552 theReactionTable->SetReaction(reactionData);
0553
0554
0555
0556
0557
0558 reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0559 reactionData->SetReactionType(1);
0560 theReactionTable->SetReaction(reactionData);
0561
0562
0563 reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
0564 reactionData->AddProduct(OH);
0565 reactionData->SetReactionType(1);
0566 theReactionTable->SetReaction(reactionData);
0567
0568
0569 reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
0570 reactionData->AddProduct(e_aq);
0571 reactionData->SetReactionType(1);
0572 theReactionTable->SetReaction(reactionData);
0573
0574
0575 reactionData = new G4DNAMolecularReactionData(2.10e10 * (1e-3 * m3 / (mole * s)), H, O2);
0576 reactionData->AddProduct(HO2);
0577 reactionData->SetReactionType(1);
0578 theReactionTable->SetReaction(reactionData);
0579
0580
0581 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
0582 reactionData->AddProduct(H2O2);
0583 reactionData->SetReactionType(1);
0584 theReactionTable->SetReaction(reactionData);
0585
0586
0587 reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
0588 reactionData->AddProduct(HO2m);
0589 reactionData->SetReactionType(1);
0590 theReactionTable->SetReaction(reactionData);
0591
0592
0593 reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0594 reactionData->AddProduct(H2O2);
0595 reactionData->SetReactionType(1);
0596 theReactionTable->SetReaction(reactionData);
0597
0598
0599 reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
0600 reactionData->AddProduct(HO2);
0601 reactionData->SetReactionType(1);
0602 theReactionTable->SetReaction(reactionData);
0603
0604
0605 reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
0606 reactionData->AddProduct(H);
0607 reactionData->SetReactionType(1);
0608 theReactionTable->SetReaction(reactionData);
0609
0610
0611 reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0612 reactionData->AddProduct(OHm);
0613 reactionData->SetReactionType(1);
0614 theReactionTable->SetReaction(reactionData);
0615
0616
0617 reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm);
0618 reactionData->AddProduct(Om);
0619 reactionData->SetReactionType(1);
0620 theReactionTable->SetReaction(reactionData);
0621
0622
0623 reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0624 reactionData->AddProduct(O2);
0625 reactionData->SetReactionType(1);
0626 theReactionTable->SetReaction(reactionData);
0627
0628
0629 reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
0630 reactionData->AddProduct(O2);
0631 reactionData->AddProduct(OHm);
0632 reactionData->SetReactionType(1);
0633 theReactionTable->SetReaction(reactionData);
0634
0635
0636 reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
0637 reactionData->AddProduct(HO2);
0638 reactionData->AddProduct(OHm);
0639 reactionData->SetReactionType(1);
0640 theReactionTable->SetReaction(reactionData);
0641
0642
0643 reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
0644 reactionData->AddProduct(HO2m);
0645 reactionData->SetReactionType(1);
0646 theReactionTable->SetReaction(reactionData);
0647
0648
0649 reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
0650 reactionData->AddProduct(O2m);
0651 reactionData->AddProduct(HO2);
0652 reactionData->SetReactionType(1);
0653 theReactionTable->SetReaction(reactionData);
0654
0655
0656 reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0657 reactionData->AddProduct(OHm);
0658 reactionData->AddProduct(OH);
0659 reactionData->SetReactionType(1);
0660 theReactionTable->SetReaction(reactionData);
0661
0662
0663 reactionData = new G4DNAMolecularReactionData(4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm);
0664 reactionData->AddProduct(HO2m);
0665 reactionData->SetReactionType(1);
0666 theReactionTable->SetReaction(reactionData);
0667
0668
0669 reactionData = new G4DNAMolecularReactionData(1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O);
0670 reactionData->AddProduct(HO2);
0671 reactionData->AddProduct(OH);
0672 reactionData->SetReactionType(1);
0673 theReactionTable->SetReaction(reactionData);
0674
0675
0676 reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
0677 reactionData->AddProduct(HO2);
0678 reactionData->AddProduct(OHm);
0679 reactionData->SetReactionType(1);
0680 theReactionTable->SetReaction(reactionData);
0681
0682
0683 reactionData = new G4DNAMolecularReactionData(4.77e3 * (1e-3 * m3 / (mole * s)), H2, O);
0684 reactionData->AddProduct(H);
0685 reactionData->AddProduct(OH);
0686 reactionData->SetReactionType(1);
0687 theReactionTable->SetReaction(reactionData);
0688
0689
0690 reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
0691 reactionData->AddProduct(H);
0692 reactionData->AddProduct(OHm);
0693 reactionData->SetReactionType(1);
0694 theReactionTable->SetReaction(reactionData);
0695
0696
0697 reactionData = new G4DNAMolecularReactionData(1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0698 reactionData->AddProduct(O2m);
0699 reactionData->SetReactionType(1);
0700 theReactionTable->SetReaction(reactionData);
0701
0702
0703 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
0704 reactionData->AddProduct(HO2m);
0705 reactionData->SetReactionType(1);
0706 theReactionTable->SetReaction(reactionData);
0707
0708
0709 reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2);
0710 reactionData->AddProduct(O2m);
0711 reactionData->SetReactionType(1);
0712 theReactionTable->SetReaction(reactionData);
0713
0714
0715 reactionData = new G4DNAMolecularReactionData(4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O);
0716 reactionData->AddProduct(HO2m);
0717 reactionData->SetReactionType(1);
0718 theReactionTable->SetReaction(reactionData);
0719
0720
0721 reactionData = new G4DNAMolecularReactionData(4.00e9 * (1e-3 * m3 / (mole * s)), O2, O);
0722 reactionData->AddProduct(O3);
0723 reactionData->SetReactionType(1);
0724 theReactionTable->SetReaction(reactionData);
0725
0726
0727 reactionData = new G4DNAMolecularReactionData(3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om);
0728 reactionData->AddProduct(O3m);
0729 reactionData->SetReactionType(1);
0730 theReactionTable->SetReaction(reactionData);
0731
0732
0733 reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
0734 reactionData->AddProduct(H2O2);
0735 reactionData->AddProduct(O2);
0736 reactionData->SetReactionType(1);
0737 theReactionTable->SetReaction(reactionData);
0738
0739
0740 reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
0741 reactionData->AddProduct(HO2m);
0742 reactionData->AddProduct(O2);
0743 reactionData->SetReactionType(1);
0744 theReactionTable->SetReaction(reactionData);
0745
0746
0747 reactionData = new G4DNAMolecularReactionData(5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O);
0748 reactionData->AddProduct(O2m);
0749 reactionData->AddProduct(OH);
0750 reactionData->SetReactionType(1);
0751 theReactionTable->SetReaction(reactionData);
0752
0753
0754
0755
0756 reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0757 reactionData->AddProduct(H);
0758 reactionData->SetReactionType(1);
0759 theReactionTable->SetReaction(reactionData);
0760
0761
0762 reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
0763 reactionData->AddProduct(H2O2);
0764 reactionData->AddProduct(OHm);
0765 reactionData->AddProduct(OHm);
0766 reactionData->SetReactionType(1);
0767 theReactionTable->SetReaction(reactionData);
0768
0769
0770 reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
0771 reactionData->AddProduct(Om);
0772 reactionData->AddProduct(OHm);
0773 reactionData->SetReactionType(1);
0774 theReactionTable->SetReaction(reactionData);
0775
0776
0777 reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
0778 reactionData->AddProduct(OHm);
0779 reactionData->AddProduct(OHm);
0780 reactionData->SetReactionType(1);
0781 theReactionTable->SetReaction(reactionData);
0782
0783
0784 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
0785 reactionData->AddProduct(HO2);
0786 reactionData->SetReactionType(1);
0787 theReactionTable->SetReaction(reactionData);
0788
0789
0790 reactionData = new G4DNAMolecularReactionData(5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
0791 reactionData->AddProduct(H2O2);
0792 reactionData->SetReactionType(1);
0793 theReactionTable->SetReaction(reactionData);
0794
0795
0796 reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
0797 reactionData->AddProduct(OH);
0798 reactionData->SetReactionType(1);
0799 theReactionTable->SetReaction(reactionData);
0800
0801
0802 reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
0803 reactionData->AddProduct(O2);
0804 reactionData->AddProduct(OHm);
0805 reactionData->AddProduct(OHm);
0806 reactionData->SetReactionType(1);
0807 theReactionTable->SetReaction(reactionData);
0808
0809
0810 reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
0811 reactionData->AddProduct(O2m);
0812 reactionData->AddProduct(OHm);
0813 reactionData->SetReactionType(1);
0814 theReactionTable->SetReaction(reactionData);
0815
0816
0817 reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
0818 reactionData->AddProduct(H2O2);
0819 reactionData->AddProduct(OHm);
0820 reactionData->AddProduct(OHm);
0821 reactionData->SetReactionType(1);
0822 theReactionTable->SetReaction(reactionData);
0823
0824
0825 reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
0826 reactionData->AddProduct(O2m);
0827 reactionData->AddProduct(O2m);
0828 reactionData->SetReactionType(1);
0829 theReactionTable->SetReaction(reactionData);
0830
0831
0832
0833 G4MolecularConfiguration* A = G4MoleculeTable::Instance()->GetConfiguration("A");
0834 G4MolecularConfiguration* T = G4MoleculeTable::Instance()->GetConfiguration("T");
0835 G4MolecularConfiguration* G = G4MoleculeTable::Instance()->GetConfiguration("G");
0836 G4MolecularConfiguration* C = G4MoleculeTable::Instance()->GetConfiguration("C");
0837 G4MolecularConfiguration* Sugar = G4MoleculeTable::Instance()->GetConfiguration("Sugar");
0838
0839
0840 theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, A);
0841 theReactionTable->SetReaction(0.64e10 * (1e-3 * m3 / (mole * s)), OH, T);
0842 theReactionTable->SetReaction(0.92e10 * (1e-3 * m3 / (mole * s)), OH, G);
0843 theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, C);
0844 theReactionTable->SetReaction(0.18e10 * (1e-3 * m3 / (mole * s)), OH, Sugar);
0845
0846 theReactionTable->SetReaction(0.9e10 * (1e-3 * m3 / (mole * s)), e_aq, A);
0847 theReactionTable->SetReaction(1.8e10 * (1e-3 * m3 / (mole * s)), e_aq, T);
0848 theReactionTable->SetReaction(1.4e10 * (1e-3 * m3 / (mole * s)), e_aq, G);
0849 theReactionTable->SetReaction(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, C);
0850 theReactionTable->SetReaction(1.0e7 * (1e-3 * m3 / (mole * s)), e_aq, Sugar);
0851
0852 theReactionTable->SetReaction(1.0e8 * (1e-3 * m3 / (mole * s)), H, A);
0853 theReactionTable->SetReaction(5.7e8 * (1e-3 * m3 / (mole * s)), H, T);
0854 theReactionTable->SetReaction(9.2e7 * (1e-3 * m3 / (mole * s)), H, C);
0855 theReactionTable->SetReaction(2.9e7 * (1e-3 * m3 / (mole * s)), H, Sugar);
0856 }
0857
0858
0859
0860 void ChemistryList::ConstructProcess()
0861 {
0862 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0863
0864
0865
0866
0867
0868
0869 G4VProcess* process =
0870 G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAVibExcitation", "e-");
0871
0872 if (process != nullptr) {
0873 auto* vibExcitation = (G4DNAVibExcitation*)process;
0874 G4VEmModel* model = vibExcitation->EmModel();
0875 auto* sancheExcitationMod = dynamic_cast<G4DNASancheExcitationModel*>(model);
0876 if (sancheExcitationMod != nullptr) {
0877 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
0878 }
0879 }
0880
0881
0882
0883
0884 process = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
0885
0886 if (process == nullptr) {
0887 ph->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
0888 G4Electron::Definition());
0889 }
0890
0891
0892
0893
0894 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
0895 G4MoleculeDefinitionIterator iterator = theMoleculeTable->GetDefintionIterator();
0896 iterator.reset();
0897 while (iterator()) {
0898 G4MoleculeDefinition* moleculeDef = iterator.value();
0899
0900 if (moleculeDef != G4H2O::Definition()) {
0901 auto brown = new G4DNABrownianTransportation();
0902 ph->RegisterProcess(brown, moleculeDef);
0903
0904 if (moleculeDef == G4Electron_aq::Definition() || moleculeDef == G4OH::Definition()
0905 || moleculeDef == G4Hydrogen::Definition())
0906 {
0907 G4VDNAHitModel* pDamageModel = new IRTDamageReactionModel("IRTDamageReactionModel");
0908 auto staticMoleculeReactionProcess =
0909 new G4DNAPolyNucleotideReactionProcess("PolyNucleotideReactionProcess");
0910 staticMoleculeReactionProcess->SetVerbose(1);
0911 staticMoleculeReactionProcess->SetDNADamageReactionModel(pDamageModel);
0912 ph->RegisterProcess(staticMoleculeReactionProcess, moleculeDef);
0913 }
0914 }
0915 else {
0916 moleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
0917 auto* dissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
0918 dissociationProcess->SetDisplacer(moleculeDef, new G4DNAWaterDissociationDisplacer);
0919 dissociationProcess->SetVerboseLevel(3);
0920
0921 moleculeDef->GetProcessManager()->AddRestProcess(dissociationProcess, 1);
0922 }
0923 }
0924 }
0925
0926
0927
0928 void ChemistryList::ConstructTimeStepModel(G4DNAMolecularReactionTable*
0929 )
0930 {
0931 G4ChemicalMoleculeFinder::Instance()->SetOctreeUsed(true);
0932 auto IRT = new G4DNAIndependentReactionTimeModel();
0933 RegisterTimeStepModel(IRT);
0934 }
0935
0936 void ChemistryList::ConstructParticle()
0937 {
0938 ConstructMolecule();
0939 }