Warning, file /geant4/examples/advanced/dna/moleculardna/src/ChemistryList.cc was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
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 }