File indexing completed on 2025-02-23 09:21:53
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 #include "G4EmDNAChemistryForPlasmids.hh"
0037
0038 #include "G4DNAChemistryManager.hh"
0039 #include "G4DNAGenericIonsManager.hh"
0040 #include "G4DNAWaterDissociationDisplacer.hh"
0041 #include "G4DNAWaterExcitationStructure.hh"
0042 #include "G4PhysicalConstants.hh"
0043 #include "G4ProcessManager.hh"
0044 #include "G4SystemOfUnits.hh"
0045
0046
0047
0048 #include "G4DNAAttachment.hh"
0049 #include "G4DNABrownianTransportation.hh"
0050 #include "G4DNAChampionElasticModel.hh"
0051 #include "G4DNAElastic.hh"
0052 #include "G4DNAElectronHoleRecombination.hh"
0053 #include "G4DNAElectronSolvation.hh"
0054 #include "G4DNAIRT.hh"
0055 #include "G4DNAMolecularDissociation.hh"
0056 #include "G4DNAMolecularIRTModel.hh"
0057 #include "G4DNAMolecularReactionTable.hh"
0058 #include "G4DNAMolecularStepByStepModel.hh"
0059 #include "G4DNASancheExcitationModel.hh"
0060 #include "G4DNAScreenedRutherfordElasticModel.hh"
0061 #include "G4DNASmoluchowskiReactionModel.hh"
0062 #include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
0063 #include "G4DNAVibExcitation.hh"
0064 #include "G4VDNAReactionModel.hh"
0065
0066
0067
0068 #include "PlasmidMolecules.hh"
0069 #include "ScavengerMolecules.hh"
0070
0071 #include "G4BuilderType.hh"
0072 #include "G4Electron.hh"
0073 #include "G4Electron_aq.hh"
0074 #include "G4FakeMolecule.hh"
0075 #include "G4GenericIon.hh"
0076 #include "G4H2.hh"
0077 #include "G4H2O.hh"
0078 #include "G4H2O2.hh"
0079 #include "G4H3O.hh"
0080 #include "G4HO2.hh"
0081 #include "G4Hydrogen.hh"
0082 #include "G4MoleculeTable.hh"
0083 #include "G4O2.hh"
0084 #include "G4O3.hh"
0085 #include "G4OH.hh"
0086 #include "G4Oxygen.hh"
0087 #include "G4PhysicsListHelper.hh"
0088 #include "G4Proton.hh"
0089
0090
0091 #include "G4DNAMoleculeEncounterStepper.hh"
0092 #include "G4DNASecondOrderReaction.hh"
0093 #include "G4MolecularConfiguration.hh"
0094 #include "G4ProcessTable.hh"
0095 #include "G4ProcessVector.hh"
0096
0097
0098 #include "G4Scheduler.hh"
0099
0100
0101 #include "G4PhysicsConstructorFactory.hh"
0102
0103 G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistryForPlasmids);
0104
0105 #include "G4Threading.hh"
0106
0107
0108
0109 G4EmDNAChemistryForPlasmids::G4EmDNAChemistryForPlasmids() : G4VUserChemistryList(true)
0110 {
0111 G4DNAChemistryManager::Instance()->SetChemistryList(this);
0112
0113 fDMSO = 0;
0114 fOxygen = 0;
0115 }
0116
0117
0118
0119 G4EmDNAChemistryForPlasmids::G4EmDNAChemistryForPlasmids(G4double dmso, G4double oxygen)
0120 : G4VUserChemistryList(true)
0121 {
0122 G4DNAChemistryManager::Instance()->SetChemistryList(this);
0123
0124 fDMSO = dmso;
0125 fOxygen = oxygen;
0126 }
0127
0128
0129
0130 void G4EmDNAChemistryForPlasmids::ConstructMolecule()
0131 {
0132
0133
0134
0135
0136
0137
0138 G4H2O::Definition();
0139 G4Hydrogen::Definition();
0140 G4H3O::Definition();
0141 G4OH::Definition();
0142 G4Electron_aq::Definition();
0143 G4H2O2::Definition();
0144 G4H2::Definition();
0145
0146 G4O2::Definition();
0147 G4HO2::Definition();
0148 G4Oxygen::Definition();
0149 G4O3::Definition();
0150
0151
0152
0153 G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
0154 G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetDiffusionCoefficient(9.46e-9
0155 * (m2 / s));
0156 G4MoleculeTable::Instance()->GetConfiguration("H3Op")->SetVanDerVaalsRadius(0.25 * nm);
0157
0158 G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
0159 G4MoleculeTable::Instance()->GetConfiguration("OH")->SetDiffusionCoefficient(2.2e-9 * (m2 / s));
0160 G4MoleculeTable::Instance()->GetConfiguration("OH")->SetVanDerVaalsRadius(0.22 * nm);
0161
0162 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->CreateConfiguration(
0163 "OHm", G4OH::Definition(), -1, 5.3e-9 * (m2 / s));
0164 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
0165 OHm->SetVanDerVaalsRadius(0.33 * nm);
0166
0167 G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->CreateConfiguration(
0168 "O2m", G4O2::Definition(), -1, 1.75e-9 * (m2 / s));
0169 O2m->SetMass(31.99602 * g / Avogadro * c_squared);
0170 O2m->SetVanDerVaalsRadius(0.22 * nm);
0171
0172 G4MoleculeTable::Instance()->CreateConfiguration("e_aq", G4Electron_aq::Definition());
0173 G4MoleculeTable::Instance()->GetConfiguration("e_aq")->SetVanDerVaalsRadius(0.50 * nm);
0174
0175 G4MoleculeTable::Instance()->CreateConfiguration("H", G4Hydrogen::Definition());
0176 G4MoleculeTable::Instance()->GetConfiguration("H")->SetVanDerVaalsRadius(0.19 * nm);
0177
0178 G4MolecularConfiguration* H2 =
0179 G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
0180 H2->SetDiffusionCoefficient(4.8e-9 * (m2 / s));
0181 H2->SetVanDerVaalsRadius(0.14 * nm);
0182 H2->SetMass(2.01588 * g / Avogadro * c_squared);
0183
0184 G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
0185 G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetDiffusionCoefficient(2.3e-9 * (m2 / s));
0186 G4MoleculeTable::Instance()->GetConfiguration("H2O2")->SetVanDerVaalsRadius(0.21 * nm);
0187
0188
0189
0190 G4MoleculeTable::Instance()->CreateConfiguration("HO2", G4HO2::Definition());
0191 G4MoleculeTable::Instance()->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21 * nm);
0192
0193 G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->CreateConfiguration(
0194 "HO2m", G4HO2::Definition(), -1, 1.4e-9 * (m2 / s));
0195 HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
0196 HO2m->SetVanDerVaalsRadius(0.25 * nm);
0197
0198 G4MoleculeTable::Instance()->CreateConfiguration("NoneM", G4FakeMolecule::Definition());
0199
0200 G4MoleculeTable::Instance()->CreateConfiguration("DMSO", G4DMSO::Definition(), 0, 0 * (m2 / s));
0201
0202 G4MoleculeTable::Instance()->CreateConfiguration("O2", G4O2::Definition());
0203 G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
0204
0205 G4MoleculeTable::Instance()->CreateConfiguration("Oxygen", G4OxygenB::Definition(), 0,
0206 0 * (m2 / s));
0207
0208 G4MoleculeTable::Instance()->CreateConfiguration("Deoxyribose", G4DNA_Deoxyribose::Definition(),
0209 0, 1E-150 * (m2 / s));
0210
0211 G4MoleculeTable::Instance()->CreateConfiguration(
0212 "Damaged_DeoxyriboseOH", G4DNA_DamagedDeoxyriboseOH::Definition(), 0, 1E-150 * (m2 / s));
0213
0214 G4MoleculeTable::Instance()->CreateConfiguration(
0215 "Damaged_DeoxyriboseH", G4DNA_DamagedDeoxyriboseH::Definition(), 0, 1E-150 * (m2 / s));
0216
0217 G4MoleculeTable::Instance()->CreateConfiguration(
0218 "Damaged_DeoxyriboseEAQ", G4DNA_DamagedDeoxyriboseEAQ::Definition(), 0, 1E-150 * (m2 / s));
0219 }
0220
0221
0222
0223 void G4EmDNAChemistryForPlasmids::ConstructDissociationChannels()
0224 {
0225
0226
0227 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0228 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0229 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0230 G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0231 G4MolecularConfiguration* H3O = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0232 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0233
0234
0235
0236 G4MoleculeDefinition* water = G4H2O::Definition();
0237 G4MolecularDissociationChannel* decCh1;
0238 G4MolecularDissociationChannel* decCh2;
0239 G4MolecularDissociationChannel* decCh3;
0240 G4MolecularDissociationChannel* decCh4;
0241 G4MolecularDissociationChannel* decCh5;
0242
0243 G4ElectronOccupancy* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
0244
0245
0246
0247
0248 G4DNAWaterExcitationStructure waterExcitation;
0249
0250
0251
0252 decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
0253 decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0254
0255 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
0256 decCh1->SetProbability(0.35);
0257 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
0258
0259 decCh2->AddProduct(OH);
0260 decCh2->AddProduct(H);
0261 decCh2->SetProbability(0.65);
0262 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0263
0264 occ->RemoveElectron(4, 1);
0265 occ->AddElectron(5, 1);
0266
0267 water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
0268 water->AddDecayChannel("A^1B_1", decCh1);
0269 water->AddDecayChannel("A^1B_1", decCh2);
0270
0271
0272
0273 decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
0274 decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
0275 decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
0276 decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0277 decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
0278
0279
0280 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
0281 decCh1->SetProbability(0.175);
0282
0283
0284 decCh2->AddProduct(H2);
0285 decCh2->AddProduct(OH);
0286 decCh2->AddProduct(OH);
0287 decCh2->SetProbability(0.0325);
0288 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0289
0290
0291 decCh3->AddProduct(OH);
0292 decCh3->AddProduct(H3O);
0293 decCh3->AddProduct(e_aq);
0294 decCh3->SetProbability(0.50);
0295 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0296
0297
0298 decCh4->AddProduct(H);
0299 decCh4->AddProduct(OH);
0300 decCh4->SetProbability(0.2535);
0301 decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0302
0303
0304 decCh5->AddProduct(H);
0305 decCh5->AddProduct(H);
0306 decCh5->SetProbability(0.039);
0307 decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0308
0309 *occ = *(water->GetGroundStateElectronOccupancy());
0310 occ->RemoveElectron(3);
0311 occ->AddElectron(5, 1);
0312
0313 water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
0314 water->AddDecayChannel("B^1A_1", decCh1);
0315 water->AddDecayChannel("B^1A_1", decCh2);
0316 water->AddDecayChannel("B^1A_1", decCh3);
0317 water->AddDecayChannel("B^1A_1", decCh4);
0318 water->AddDecayChannel("B^1A_1", decCh5);
0319
0320
0321
0322 decCh1 = new G4MolecularDissociationChannel("Excitation3rdLayer_AutoIonisation_Channel");
0323 decCh2 = new G4MolecularDissociationChannel("Excitation3rdLayer_Relaxation_Channel");
0324
0325
0326 decCh1->AddProduct(OH);
0327 decCh1->AddProduct(H3O);
0328 decCh1->AddProduct(e_aq);
0329
0330 decCh1->SetProbability(0.5);
0331 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0332
0333
0334 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
0335 decCh2->SetProbability(0.5);
0336
0337
0338 *occ = *(water->GetGroundStateElectronOccupancy());
0339 occ->RemoveElectron(2, 1);
0340 occ->AddElectron(5, 1);
0341
0342
0343 water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
0344 water->AddDecayChannel("Excitation3rdLayer", decCh1);
0345 water->AddDecayChannel("Excitation3rdLayer", decCh2);
0346
0347
0348
0349 decCh1 = new G4MolecularDissociationChannel("Excitation2ndLayer_AutoIonisation_Channel");
0350 decCh2 = new G4MolecularDissociationChannel("Excitation2ndLayer_Relaxation_Channel");
0351
0352
0353 decCh1->AddProduct(OH);
0354 decCh1->AddProduct(H3O);
0355 decCh1->AddProduct(e_aq);
0356
0357 decCh1->SetProbability(0.5);
0358 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0359
0360
0361 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
0362 decCh2->SetProbability(0.5);
0363
0364 *occ = *(water->GetGroundStateElectronOccupancy());
0365 occ->RemoveElectron(1, 1);
0366 occ->AddElectron(5, 1);
0367
0368 water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
0369 water->AddDecayChannel("Excitation2ndLayer", decCh1);
0370 water->AddDecayChannel("Excitation2ndLayer", decCh2);
0371
0372
0373
0374 decCh1 = new G4MolecularDissociationChannel("Excitation1stLayer_AutoIonisation_Channel");
0375 decCh2 = new G4MolecularDissociationChannel("Excitation1stLayer_Relaxation_Channel");
0376
0377 *occ = *(water->GetGroundStateElectronOccupancy());
0378 occ->RemoveElectron(0, 1);
0379 occ->AddElectron(5, 1);
0380
0381
0382 decCh1->AddProduct(OH);
0383 decCh1->AddProduct(H3O);
0384 decCh1->AddProduct(e_aq);
0385 decCh1->SetProbability(0.5);
0386 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0387
0388
0389 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
0390 decCh2->SetProbability(0.5);
0391
0392 water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
0393 water->AddDecayChannel("Excitation1stLayer", decCh1);
0394 water->AddDecayChannel("Excitation1stLayer", decCh2);
0395
0396
0397
0398
0399
0400
0401
0402 decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
0403
0404
0405 decCh1->AddProduct(H3O);
0406 decCh1->AddProduct(OH);
0407 decCh1->SetProbability(1);
0408 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
0409
0410 *occ = *(water->GetGroundStateElectronOccupancy());
0411 occ->RemoveElectron(4, 1);
0412
0413 water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
0414 water->AddDecayChannel("Ionisation5", decCh1);
0415
0416 *occ = *(water->GetGroundStateElectronOccupancy());
0417 occ->RemoveElectron(3, 1);
0418 water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
0419 water->AddDecayChannel("Ionisation4", new G4MolecularDissociationChannel(*decCh1));
0420
0421 *occ = *(water->GetGroundStateElectronOccupancy());
0422 occ->RemoveElectron(2, 1);
0423 water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
0424 water->AddDecayChannel("Ionisation3", new G4MolecularDissociationChannel(*decCh1));
0425
0426 *occ = *(water->GetGroundStateElectronOccupancy());
0427 occ->RemoveElectron(1, 1);
0428 water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
0429 water->AddDecayChannel("Ionisation2", new G4MolecularDissociationChannel(*decCh1));
0430
0431 *occ = *(water->GetGroundStateElectronOccupancy());
0432 occ->RemoveElectron(0, 1);
0433 water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
0434 water->AddDecayChannel("Ionisation1", new G4MolecularDissociationChannel(*decCh1));
0435
0436
0437
0438
0439 decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
0440
0441
0442 decCh1->AddProduct(H2);
0443 decCh1->AddProduct(OHm);
0444 decCh1->AddProduct(OH);
0445 decCh1->SetProbability(1);
0446 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
0447
0448 *occ = *(water->GetGroundStateElectronOccupancy());
0449 occ->AddElectron(5, 1);
0450
0451 water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
0452 water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
0453
0454
0455
0456
0457 decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
0458 decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
0459 decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
0460 decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
0461
0462
0463 decCh1->AddProduct(H2);
0464 decCh1->AddProduct(OH);
0465 decCh1->AddProduct(OH);
0466 decCh1->SetProbability(0.1365);
0467 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0468
0469
0470 decCh2->AddProduct(OH);
0471 decCh2->AddProduct(H);
0472 decCh2->SetProbability(0.3575);
0473 decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0474
0475
0476 decCh3->AddProduct(H);
0477 decCh3->AddProduct(H);
0478 decCh3->SetProbability(0.156);
0479 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0480
0481
0482 decCh4->SetProbability(0.35);
0483
0484 const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
0485 assert(pH2Ovib != nullptr);
0486
0487 water->AddDecayChannel(pH2Ovib, decCh1);
0488 water->AddDecayChannel(pH2Ovib, decCh2);
0489 water->AddDecayChannel(pH2Ovib, decCh3);
0490 water->AddDecayChannel(pH2Ovib, decCh4);
0491
0492 delete occ;
0493 }
0494
0495
0496
0497 void G4EmDNAChemistryForPlasmids::ConstructReactionTable(
0498 G4DNAMolecularReactionTable* theReactionTable)
0499 {
0500
0501
0502
0503
0504 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0505 G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0506 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0507 G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0508 G4MolecularConfiguration* H3Op = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0509 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0510 G4MolecularConfiguration* H2O2 = G4MoleculeTable::Instance()->GetConfiguration("H2O2");
0511
0512
0513
0514
0515
0516 G4DNAMolecularReactionData* reactionData =
0517 new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0518 reactionData->AddProduct(OHm);
0519 reactionData->SetReactionType(1);
0520 theReactionTable->SetReaction(reactionData);
0521
0522
0523 reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0524 reactionData->AddProduct(OHm);
0525 reactionData->AddProduct(OH);
0526 reactionData->SetReactionType(1);
0527 theReactionTable->SetReaction(reactionData);
0528
0529
0530 reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0531 reactionData->SetReactionType(1);
0532 theReactionTable->SetReaction(reactionData);
0533
0534
0535 reactionData = new G4DNAMolecularReactionData(0.009e10 * (1e-3 * m3 / (mole * s)), H, H2O2);
0536 reactionData->AddProduct(OH);
0537 reactionData->SetReactionType(1);
0538 theReactionTable->SetReaction(reactionData);
0539
0540
0541 reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0542 reactionData->AddProduct(H2O2);
0543 reactionData->SetReactionType(1);
0544 theReactionTable->SetReaction(reactionData);
0545
0546
0547
0548
0549
0550
0551 reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0552 reactionData->AddProduct(OHm);
0553 reactionData->AddProduct(OHm);
0554 reactionData->AddProduct(H2);
0555 reactionData->SetReactionType(0);
0556 theReactionTable->SetReaction(reactionData);
0557
0558
0559 reactionData = new G4DNAMolecularReactionData(11.3e10 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0560 reactionData->SetReactionType(0);
0561 theReactionTable->SetReaction(reactionData);
0562
0563
0564
0565
0566
0567
0568 reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0569 reactionData->AddProduct(H);
0570 reactionData->SetReactionType(1);
0571 theReactionTable->SetReaction(reactionData);
0572
0573
0574
0575
0576
0577
0578
0579 reactionData = new G4DNAMolecularReactionData(2.5e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0580 reactionData->AddProduct(OHm);
0581 reactionData->AddProduct(H2);
0582 reactionData->SetReactionType(0);
0583 theReactionTable->SetReaction(reactionData);
0584
0585
0586 reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0587 reactionData->AddProduct(H2);
0588 reactionData->SetReactionType(0);
0589 theReactionTable->SetReaction(reactionData);
0590
0591 if (fDMSO > 0) DeclareDMSOAndDNAReactions(theReactionTable);
0592
0593 if (fOxygen > 0) DeclareOxygenReactions(theReactionTable);
0594 }
0595
0596
0597
0598 void G4EmDNAChemistryForPlasmids::ConstructProcess()
0599 {
0600 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0601
0602
0603
0604
0605
0606
0607 G4VProcess* process =
0608 G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAVibExcitation", "e-");
0609
0610 if (process) {
0611 G4DNAVibExcitation* vibExcitation = (G4DNAVibExcitation*)process;
0612 G4VEmModel* model = vibExcitation->EmModel();
0613 G4DNASancheExcitationModel* sancheExcitationMod =
0614 dynamic_cast<G4DNASancheExcitationModel*>(model);
0615 if (sancheExcitationMod) {
0616 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
0617 }
0618 }
0619
0620
0621
0622
0623 process = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
0624
0625 if (process == 0) {
0626 ph->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
0627 G4Electron::Definition());
0628 }
0629
0630
0631
0632
0633 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
0634 G4MoleculeDefinitionIterator iterator = theMoleculeTable->GetDefintionIterator();
0635 iterator.reset();
0636 while (iterator()) {
0637 G4MoleculeDefinition* moleculeDef = iterator.value();
0638
0639 if (moleculeDef != G4H2O::Definition()) {
0640
0641
0642
0643 }
0644 else {
0645 moleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
0646 G4DNAMolecularDissociation* dissociationProcess =
0647 new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
0648 dissociationProcess->SetDisplacer(moleculeDef, new G4DNAWaterDissociationDisplacer);
0649 dissociationProcess->SetVerboseLevel(3);
0650
0651 moleculeDef->GetProcessManager()->AddRestProcess(dissociationProcess, 1);
0652 }
0653
0654
0655
0656
0657 }
0658
0659 G4DNAChemistryManager::Instance()->Initialize();
0660 }
0661
0662
0663
0664 void G4EmDNAChemistryForPlasmids::ConstructTimeStepModel(G4DNAMolecularReactionTable*
0665 )
0666 {
0667 RegisterTimeStepModel(new G4DNAMolecularIRTModel(), 0);
0668 }
0669
0670
0671
0672 void G4EmDNAChemistryForPlasmids::DeclareDMSOAndDNAReactions(
0673 G4DNAMolecularReactionTable* theReactionTable)
0674 {
0675 G4MolecularConfiguration* DMSO = G4MoleculeTable::Instance()->GetConfiguration("DMSO");
0676
0677 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0678
0679 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0680
0681 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0682
0683 G4MolecularConfiguration* deoxyribose =
0684 G4MoleculeTable::Instance()->GetConfiguration("Deoxyribose");
0685
0686 G4MolecularConfiguration* damage_deoxyribose_OH =
0687 G4MoleculeTable::Instance()->GetConfiguration("Damaged_DeoxyriboseOH");
0688
0689 G4MolecularConfiguration* damage_deoxyribose_H =
0690 G4MoleculeTable::Instance()->GetConfiguration("Damaged_DeoxyriboseH");
0691
0692 G4MolecularConfiguration* damage_deoxyribose_eaq =
0693 G4MoleculeTable::Instance()->GetConfiguration("Damaged_DeoxyriboseEAQ");
0694
0695 G4double DNA_OH_Rate = 1.32E7 * std::pow(fDMSO * 7.1E9, 0.29);
0696
0697
0698
0699 G4DNAMolecularReactionData* reactionData =
0700 new G4DNAMolecularReactionData(fDMSO * 7.1E9 / s, OH, DMSO);
0701 theReactionTable->SetReaction(reactionData);
0702
0703
0704 reactionData = new G4DNAMolecularReactionData(fDMSO * 2.7E7 / s, H, DMSO);
0705 theReactionTable->SetReaction(reactionData);
0706
0707
0708 reactionData = new G4DNAMolecularReactionData(fDMSO * 3.8E6 / s, e_aq, DMSO);
0709 theReactionTable->SetReaction(reactionData);
0710
0711
0712
0713
0714
0715
0716 reactionData =
0717 new G4DNAMolecularReactionData(DNA_OH_Rate * (1e-3 * m3 / (mole * s)), deoxyribose, OH);
0718 reactionData->AddProduct(damage_deoxyribose_OH);
0719 theReactionTable->SetReaction(reactionData);
0720
0721
0722 reactionData = new G4DNAMolecularReactionData(0.03e9 * (1e-3 * m3 / (mole * s)), deoxyribose, H);
0723 reactionData->AddProduct(damage_deoxyribose_H);
0724 theReactionTable->SetReaction(reactionData);
0725
0726
0727 reactionData =
0728 new G4DNAMolecularReactionData(0.01e9 * (1e-3 * m3 / (mole * s)), deoxyribose, e_aq);
0729 reactionData->AddProduct(damage_deoxyribose_eaq);
0730 theReactionTable->SetReaction(reactionData);
0731
0732 }
0733
0734
0735
0736 void G4EmDNAChemistryForPlasmids::DeclareOxygenReactions(
0737 G4DNAMolecularReactionTable* theReactionTable)
0738 {
0739 G4MolecularConfiguration* Oxygen = G4MoleculeTable::Instance()->GetConfiguration("Oxygen");
0740
0741 G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0742
0743 G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0744
0745 G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->GetConfiguration("O2m");
0746
0747 G4MolecularConfiguration* HO2 = G4MoleculeTable::Instance()->GetConfiguration("HO2");
0748
0749 G4MolecularConfiguration* O2 = G4MoleculeTable::Instance()->GetConfiguration("O2");
0750
0751 G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0752
0753
0754
0755 G4DNAMolecularReactionData* reactionData =
0756 new G4DNAMolecularReactionData((fOxygen * 1.9E10) / s, e_aq, Oxygen);
0757 reactionData->AddProduct(O2m);
0758 theReactionTable->SetReaction(reactionData);
0759
0760
0761 reactionData = new G4DNAMolecularReactionData((fOxygen * 2.1E10) / s, H, Oxygen);
0762 reactionData->AddProduct(HO2);
0763 theReactionTable->SetReaction(reactionData);
0764
0765
0766 reactionData = new G4DNAMolecularReactionData(1.9E10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0767 reactionData->AddProduct(O2m);
0768 reactionData->SetReactionType(1);
0769 theReactionTable->SetReaction(reactionData);
0770
0771
0772 reactionData = new G4DNAMolecularReactionData(2.1E10 * (1e-3 * m3 / (mole * s)), H, O2);
0773 reactionData->AddProduct(HO2);
0774 reactionData->SetReactionType(1);
0775 theReactionTable->SetReaction(reactionData);
0776
0777
0778 reactionData = new G4DNAMolecularReactionData(7.9E9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0779 reactionData->AddProduct(O2);
0780 reactionData->SetReactionType(1);
0781 theReactionTable->SetReaction(reactionData);
0782
0783 }
0784
0785