Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 /* 27 * G4EmDNAChemistry_option3.cc 28 * 29 * Created on: Jul 23, 2019 30 * Author: W. G. Shin 31 * J. Ramos-Mendez and B. Faddegon 32 * Updated: Hoang Tran : add SBS and IRT_syn models 33 */ 34 35 #include "G4EmDNAChemistry_option3.hh" 36 #include "G4SystemOfUnits.hh" 37 #include "G4DNAWaterDissociationDisplacer.hh" 38 #include "G4DNAChemistryManager.hh" 39 #include "G4ProcessManager.hh" 40 // *** Processes and models for Geant4-DNA 41 42 #include "G4DNAElectronSolvation.hh" 43 44 #include "G4DNAVibExcitation.hh" 45 #include "G4DNASancheExcitationModel.hh" 46 #include "G4DNAMolecularDissociation.hh" 47 #include "G4DNABrownianTransportation.hh" 48 #include "G4DNAMolecularReactionTable.hh" 49 #include "G4DNAMolecularStepByStepModel.hh" 50 #include "G4DNAMolecularIRTModel.hh" 51 #include "G4DNAIndependentReactionTimeModel.hh" 52 #include "G4VDNAReactionModel.hh" 53 #include "G4DNAIRT.hh" 54 #include "G4DNAElectronHoleRecombination.hh" 55 // particles 56 #include "G4Electron.hh" 57 #include "G4MoleculeTable.hh" 58 #include "G4H2O.hh" 59 #include "G4PhysicsListHelper.hh" 60 61 /****/ 62 #include "G4DNAMoleculeEncounterStepper.hh" 63 #include "G4ProcessTable.hh" 64 #include "G4MolecularConfiguration.hh" 65 /****/ 66 // factory 67 #include "G4PhysicsConstructorFactory.hh" 68 #include "G4ChemDissociationChannels_option1.hh" 69 //Parameter 70 #include "G4EmParameters.hh" 71 72 G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option3); 73 74 G4EmDNAChemistry_option3::G4EmDNAChemistry_option3() : 75 G4VUserChemistryList(true) 76 { 77 G4DNAChemistryManager::Instance()->SetChemistryList(this); 78 } 79 80 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 81 82 void G4EmDNAChemistry_option3::ConstructMolecule() 83 { 84 G4ChemDissociationChannels_option1::ConstructMolecule(); 85 } 86 87 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 88 89 void G4EmDNAChemistry_option3::ConstructDissociationChannels() 90 { 91 G4ChemDissociationChannels_option1::ConstructDissociationChannels(); 92 } 93 94 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 95 96 void G4EmDNAChemistry_option3::ConstructReactionTable(G4DNAMolecularReactionTable* 97 theReactionTable) 98 { 99 auto model = G4EmParameters::Instance()->GetTimeStepModel(); 100 //----------------------------------- 101 //Get the molecular configuration 102 G4MolecularConfiguration* OH = 103 G4MoleculeTable::Instance()->GetConfiguration("°OH"); 104 G4MolecularConfiguration* OHm = 105 G4MoleculeTable::Instance()->GetConfiguration("OHm"); 106 G4MolecularConfiguration* e_aq = 107 G4MoleculeTable::Instance()->GetConfiguration("e_aq"); 108 G4MolecularConfiguration* H2 = 109 G4MoleculeTable::Instance()->GetConfiguration("H2"); 110 G4MolecularConfiguration* H3Op = 111 G4MoleculeTable::Instance()->GetConfiguration("H3Op"); 112 G4MolecularConfiguration* H = 113 G4MoleculeTable::Instance()->GetConfiguration("H"); 114 G4MolecularConfiguration* H2O2 = 115 G4MoleculeTable::Instance()->GetConfiguration("H2O2"); 116 G4MolecularConfiguration* HO2 = 117 G4MoleculeTable::Instance()->GetConfiguration("HO2°"); 118 G4MolecularConfiguration* HO2m = 119 G4MoleculeTable::Instance()->GetConfiguration("HO2m"); 120 G4MolecularConfiguration* O = 121 G4MoleculeTable::Instance()->GetConfiguration("Oxy"); 122 G4MolecularConfiguration* Om = 123 G4MoleculeTable::Instance()->GetConfiguration("Om"); 124 G4MolecularConfiguration* O2 = 125 G4MoleculeTable::Instance()->GetConfiguration("O2"); 126 G4MolecularConfiguration* O2m = 127 G4MoleculeTable::Instance()->GetConfiguration("O2m"); 128 G4MolecularConfiguration* O3 = 129 G4MoleculeTable::Instance()->GetConfiguration("O3"); 130 G4MolecularConfiguration* O3m = 131 G4MoleculeTable::Instance()->GetConfiguration("O3m"); 132 133 G4MolecularConfiguration* H2OB = 134 G4MoleculeTable::Instance()->GetConfiguration("H2O(B)"); 135 G4MolecularConfiguration* H3OpB = 136 G4MoleculeTable::Instance()->GetConfiguration("H3Op(B)"); 137 G4MolecularConfiguration* OHmB = 138 G4MoleculeTable::Instance()->GetConfiguration("OHm(B)"); 139 140 G4MolecularConfiguration* None = 141 G4MoleculeTable::Instance()->GetConfiguration("NoneM"); 142 143 // Type I // 144 //------------------------------------------------------------------ 145 // *H + *H -> H2 146 G4DNAMolecularReactionData* reactionData = new G4DNAMolecularReactionData( 147 0.503e10 * (1e-3 * m3 / (mole * s)), H, H); 148 reactionData->AddProduct(H2); 149 theReactionTable->SetReaction(reactionData); 150 //------------------------------------------------------------------ 151 // e_aq + H* + H2O -> H2 + OH- 152 reactionData = new G4DNAMolecularReactionData( 153 2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H); 154 reactionData->AddProduct(OHm); 155 reactionData->AddProduct(H2); 156 theReactionTable->SetReaction(reactionData); 157 158 // H + O(3p) -> OH 159 reactionData = new G4DNAMolecularReactionData( 160 2.02e10 * (1e-3 * m3 / (mole * s)), H, O); 161 reactionData->AddProduct(OH); 162 theReactionTable->SetReaction(reactionData); 163 //------------------------------------------------------------------ 164 // H + O- -> OH- 165 reactionData = new G4DNAMolecularReactionData( 166 2.00e10 * (1e-3 * m3 / (mole * s)), H, Om); 167 reactionData->AddProduct(OHm); 168 theReactionTable->SetReaction(reactionData); 169 //------------------------------------------------------------------ 170 // OH + O(3p) -> HO2 171 reactionData = new G4DNAMolecularReactionData( 172 2.02e10 * (1e-3 * m3 / (mole * s)), OH, O); 173 reactionData->AddProduct(HO2); 174 theReactionTable->SetReaction(reactionData); 175 //------------------------------------------------------------------ 176 // HO2 + O(3p) -> O2 177 reactionData = new G4DNAMolecularReactionData( 178 2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O); 179 reactionData->AddProduct(O2); 180 reactionData->AddProduct(OH); 181 theReactionTable->SetReaction(reactionData); 182 //------------------------------------------------------------------ 183 // O(3p) + O(3p) -> O2 184 reactionData = new G4DNAMolecularReactionData( 185 2.20e10 * (1e-3 * m3 / (mole * s)), O, O); 186 reactionData->AddProduct(O2); 187 theReactionTable->SetReaction(reactionData); 188 189 // Type III // 190 //------------------------------------------------------------------ 191 // e_aq + e_aq + 2H2O -> H2 + 2OH- 192 reactionData = new G4DNAMolecularReactionData( 193 0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq); 194 reactionData->AddProduct(OHm); 195 reactionData->AddProduct(OHm); 196 reactionData->AddProduct(H2); 197 theReactionTable->SetReaction(reactionData); 198 //------------------------------------------------------------------ 199 // H3O+ + OH- -> 2H2O 200 reactionData = new G4DNAMolecularReactionData( 201 1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm); 202 theReactionTable->SetReaction(reactionData); 203 //------------------------------------------------------------------ 204 // H3O+ + O3- -> OH + O2 205 reactionData = new G4DNAMolecularReactionData( 206 9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m); 207 reactionData->AddProduct(OH); 208 reactionData->AddProduct(O2); 209 theReactionTable->SetReaction(reactionData); 210 211 // Type II // 212 213 //------------------------------------------------------------------ 214 // *OH + *H -> H2O 215 reactionData = new G4DNAMolecularReactionData( 216 1.55e10 * (1e-3 * m3 / (mole * s)), OH, H); 217 SetReactionType(reactionData,model);//partially diffusion-controlled 218 theReactionTable->SetReaction(reactionData); 219 //------------------------------------------------------------------ 220 // H + H2O2 -> OH 221 reactionData = new G4DNAMolecularReactionData( 222 3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2); 223 reactionData->AddProduct(OH); 224 SetReactionType(reactionData,model);//partially diffusion-controlled 225 theReactionTable->SetReaction(reactionData); 226 //------------------------------------------------------------------ 227 // H + OH- -> eaq- 228 reactionData = new G4DNAMolecularReactionData( 229 2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm); 230 reactionData->AddProduct(e_aq); 231 SetReactionType(reactionData,model);//partially diffusion-controlled 232 theReactionTable->SetReaction(reactionData); 233 //------------------------------------------------------------------ 234 // H + O2 -> HO2 235 reactionData = new G4DNAMolecularReactionData( 236 2.10e10 * (1e-3 * m3 / (mole * s)), H, O2); 237 reactionData->AddProduct(HO2); 238 SetReactionType(reactionData,model);//partially diffusion-controlled 239 theReactionTable->SetReaction(reactionData); 240 //------------------------------------------------------------------ 241 // H + HO2 -> H2O2 242 reactionData = new G4DNAMolecularReactionData( 243 1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2); 244 reactionData->AddProduct(H2O2); 245 SetReactionType(reactionData,model);//partially diffusion-controlled 246 theReactionTable->SetReaction(reactionData); 247 //------------------------------------------------------------------ 248 // H + O2- -> HO2- 249 reactionData = new G4DNAMolecularReactionData( 250 1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m); 251 reactionData->AddProduct(HO2m); 252 SetReactionType(reactionData,model);//partially diffusion-controlled 253 theReactionTable->SetReaction(reactionData); 254 //------------------------------------------------------------------ 255 // *OH + *OH -> H2O2 256 reactionData = new G4DNAMolecularReactionData( 257 0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH); 258 reactionData->AddProduct(H2O2); 259 SetReactionType(reactionData,model);//partially diffusion-controlled 260 theReactionTable->SetReaction(reactionData); 261 //------------------------------------------------------------------ 262 // OH + H2O2 -> HO2 263 reactionData = new G4DNAMolecularReactionData( 264 2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2); 265 reactionData->AddProduct(HO2); 266 SetReactionType(reactionData,model);//partially diffusion-controlled 267 theReactionTable->SetReaction(reactionData); 268 //------------------------------------------------------------------ 269 // OH + H2 -> H 270 reactionData = new G4DNAMolecularReactionData( 271 3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2); 272 reactionData->AddProduct(H); 273 SetReactionType(reactionData,model);//partially diffusion-controlled 274 theReactionTable->SetReaction(reactionData); 275 //------------------------------------------------------------------ 276 // e_aq + *OH -> OH- 277 reactionData = new G4DNAMolecularReactionData( 278 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH); 279 reactionData->AddProduct(OHm); 280 SetReactionType(reactionData,model);//partially diffusion-controlled 281 theReactionTable->SetReaction(reactionData); 282 //------------------------------------------------------------------ 283 // OH + OH- -> O- 284 reactionData = new G4DNAMolecularReactionData( 285 6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm); 286 reactionData->AddProduct(Om); 287 SetReactionType(reactionData,model);//partially diffusion-controlled 288 theReactionTable->SetReaction(reactionData); 289 //------------------------------------------------------------------ 290 // OH + HO2 -> O2 291 reactionData = new G4DNAMolecularReactionData( 292 7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2); 293 reactionData->AddProduct(O2); 294 SetReactionType(reactionData,model);//partially diffusion-controlled 295 theReactionTable->SetReaction(reactionData); 296 //------------------------------------------------------------------ 297 // OH + O2- -> O2 + OH- 298 reactionData = new G4DNAMolecularReactionData( 299 1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m); 300 reactionData->AddProduct(O2); 301 reactionData->AddProduct(OHm); 302 SetReactionType(reactionData,model);//partially diffusion-controlled 303 theReactionTable->SetReaction(reactionData); 304 //------------------------------------------------------------------ 305 // OH + HO2- -> HO2 + OH- 306 reactionData = new G4DNAMolecularReactionData( 307 8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m); 308 reactionData->AddProduct(HO2); 309 reactionData->AddProduct(OHm); 310 SetReactionType(reactionData,model);//partially diffusion-controlled 311 theReactionTable->SetReaction(reactionData); 312 //------------------------------------------------------------------ 313 // OH + O- -> HO2- 314 reactionData = new G4DNAMolecularReactionData( 315 1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om); 316 reactionData->AddProduct(HO2m); 317 SetReactionType(reactionData,model);//partially diffusion-controlled 318 theReactionTable->SetReaction(reactionData); 319 //------------------------------------------------------------------ 320 // OH + O3- -> O2- + HO2 321 reactionData = new G4DNAMolecularReactionData( 322 8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m); 323 reactionData->AddProduct(O2m); 324 reactionData->AddProduct(HO2); 325 SetReactionType(reactionData,model);//partially diffusion-controlled 326 theReactionTable->SetReaction(reactionData); 327 //------------------------------------------------------------------ 328 // e_aq + H2O2 -> OH- + *OH 329 reactionData = new G4DNAMolecularReactionData( 330 1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2); 331 reactionData->AddProduct(OHm); 332 reactionData->AddProduct(OH); 333 SetReactionType(reactionData,model);//partially diffusion-controlled 334 theReactionTable->SetReaction(reactionData); 335 //------------------------------------------------------------------ 336 // H2O2 + OH- -> HO2- 337 reactionData = new G4DNAMolecularReactionData( 338 4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm); 339 reactionData->AddProduct(HO2m); 340 SetReactionType(reactionData,model);//partially diffusion-controlled 341 theReactionTable->SetReaction(reactionData); 342 //------------------------------------------------------------------ 343 // H2O2 + O(3p) -> HO2 + OH 344 reactionData = new G4DNAMolecularReactionData( 345 1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O); 346 reactionData->AddProduct(HO2); 347 reactionData->AddProduct(OH); 348 SetReactionType(reactionData,model);//partially diffusion-controlled 349 theReactionTable->SetReaction(reactionData); 350 //------------------------------------------------------------------ 351 // H2O2 + O- -> HO2 + OH- 352 reactionData = new G4DNAMolecularReactionData( 353 5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om); 354 reactionData->AddProduct(HO2); 355 reactionData->AddProduct(OHm); 356 SetReactionType(reactionData,model);//partially diffusion-controlled 357 theReactionTable->SetReaction(reactionData); 358 //------------------------------------------------------------------ 359 // H2 + O(3p) -> H + OH 360 reactionData = new G4DNAMolecularReactionData( 361 4.77e3 * (1e-3 * m3 / (mole * s)), H2, O); 362 reactionData->AddProduct(H); 363 reactionData->AddProduct(OH); 364 SetReactionType(reactionData,model);//partially diffusion-controlled 365 theReactionTable->SetReaction(reactionData); 366 //------------------------------------------------------------------ 367 // H2 + O- -> H + OH- 368 reactionData = new G4DNAMolecularReactionData( 369 1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om); 370 reactionData->AddProduct(H); 371 reactionData->AddProduct(OHm); 372 SetReactionType(reactionData,model);//partially diffusion-controlled 373 theReactionTable->SetReaction(reactionData); 374 //------------------------------------------------------------------ 375 // eaq- + O2 -> O2- 376 reactionData = new G4DNAMolecularReactionData( 377 1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2); 378 reactionData->AddProduct(O2m); 379 SetReactionType(reactionData,model);//partially diffusion-controlled 380 theReactionTable->SetReaction(reactionData); 381 //------------------------------------------------------------------ 382 // eaq + HO2 -> HO2- 383 reactionData = new G4DNAMolecularReactionData( 384 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2); 385 reactionData->AddProduct(HO2m); 386 SetReactionType(reactionData,model);//partially diffusion-controlled 387 theReactionTable->SetReaction(reactionData); 388 //------------------------------------------------------------------ 389 // OH- + HO2 -> O2- 390 reactionData = new G4DNAMolecularReactionData( 391 6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2); 392 reactionData->AddProduct(O2m); 393 SetReactionType(reactionData,model);//partially diffusion-controlled 394 theReactionTable->SetReaction(reactionData); 395 //------------------------------------------------------------------ 396 // OH- + O(3p) -> HO2- 397 reactionData = new G4DNAMolecularReactionData( 398 4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O); 399 reactionData->AddProduct(HO2m); 400 SetReactionType(reactionData,model);//partially diffusion-controlled 401 theReactionTable->SetReaction(reactionData); 402 //------------------------------------------------------------------ 403 // O2 + O(3p) -> O3 404 reactionData = new G4DNAMolecularReactionData( 405 4.00e9 * (1e-3 * m3 / (mole * s)), O2, O); 406 reactionData->AddProduct(O3); 407 SetReactionType(reactionData,model);//partially diffusion-controlled 408 theReactionTable->SetReaction(reactionData); 409 //------------------------------------------------------------------ 410 // O2 + O- -> O3- 411 reactionData = new G4DNAMolecularReactionData( 412 3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om); 413 reactionData->AddProduct(O3m); 414 SetReactionType(reactionData,model);//partially diffusion-controlled 415 theReactionTable->SetReaction(reactionData); 416 //------------------------------------------------------------------ 417 // HO2 + HO2 -> H2O2 + O2 418 reactionData = new G4DNAMolecularReactionData( 419 9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2); 420 reactionData->AddProduct(H2O2); 421 reactionData->AddProduct(O2); 422 SetReactionType(reactionData,model);//partially diffusion-controlled 423 theReactionTable->SetReaction(reactionData); 424 //------------------------------------------------------------------ 425 // HO2 + O2- -> HO2- + O2 426 reactionData = new G4DNAMolecularReactionData( 427 9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m); 428 reactionData->AddProduct(HO2m); 429 reactionData->AddProduct(O2); 430 SetReactionType(reactionData,model);//partially diffusion-controlled 431 theReactionTable->SetReaction(reactionData); 432 //------------------------------------------------------------------ 433 // HO2- + O(3p) -> O2- + OH 434 reactionData = new G4DNAMolecularReactionData( 435 5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O); 436 reactionData->AddProduct(O2m); 437 reactionData->AddProduct(OH); 438 SetReactionType(reactionData,model);//partially diffusion-controlled 439 theReactionTable->SetReaction(reactionData); 440 441 // Type IV // 442 //------------------------------------------------------------------ 443 // e_aq + H3O+ -> H* + H2O 444 reactionData = new G4DNAMolecularReactionData( 445 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op); 446 reactionData->AddProduct(H); 447 SetReactionType(reactionData,model);//partially diffusion-controlled 448 theReactionTable->SetReaction(reactionData); 449 //------------------------------------------------------------------ 450 // e_aq + O2- -> H2O2 + OH- + OH- 451 reactionData = new G4DNAMolecularReactionData( 452 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m); 453 reactionData->AddProduct(H2O2); 454 reactionData->AddProduct(OHm); 455 reactionData->AddProduct(OHm); 456 SetReactionType(reactionData,model);//partially diffusion-controlled 457 theReactionTable->SetReaction(reactionData); 458 //------------------------------------------------------------------ 459 // e_aq + HO2- -> O- + OH- 460 reactionData = new G4DNAMolecularReactionData( 461 3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m); 462 reactionData->AddProduct(Om); 463 reactionData->AddProduct(OHm); 464 SetReactionType(reactionData,model);//partially diffusion-controlled 465 theReactionTable->SetReaction(reactionData); 466 //------------------------------------------------------------------ 467 // e_aq + O- -> OH- + OH- 468 reactionData = new G4DNAMolecularReactionData( 469 2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om); 470 reactionData->AddProduct(OHm); 471 reactionData->AddProduct(OHm); 472 SetReactionType(reactionData,model);//partially diffusion-controlled 473 theReactionTable->SetReaction(reactionData); 474 //------------------------------------------------------------------ 475 // H3O+ + O2- -> HO2 476 reactionData = new G4DNAMolecularReactionData( 477 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m); 478 reactionData->AddProduct(HO2); 479 SetReactionType(reactionData,model);//partially diffusion-controlled 480 theReactionTable->SetReaction(reactionData); 481 //------------------------------------------------------------------ 482 // H3O+ + HO2- -> H2O2 483 reactionData = new G4DNAMolecularReactionData( 484 5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m); 485 reactionData->AddProduct(H2O2); 486 SetReactionType(reactionData,model);//partially diffusion-controlled 487 theReactionTable->SetReaction(reactionData); 488 //------------------------------------------------------------------ 489 // H3O+ + O- -> OH 490 reactionData = new G4DNAMolecularReactionData( 491 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om); 492 reactionData->AddProduct(OH); 493 SetReactionType(reactionData,model);//partially diffusion-controlled 494 theReactionTable->SetReaction(reactionData); 495 //------------------------------------------------------------------ 496 // O2- + O- -> O2 + OH- + OH- 497 reactionData = new G4DNAMolecularReactionData( 498 6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om); 499 reactionData->AddProduct(O2); 500 reactionData->AddProduct(OHm); 501 reactionData->AddProduct(OHm); 502 SetReactionType(reactionData,model);//partially diffusion-controlled 503 theReactionTable->SetReaction(reactionData); 504 //------------------------------------------------------------------ 505 // HO2- + O- -> O2- + OH- 506 reactionData = new G4DNAMolecularReactionData( 507 3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om); 508 reactionData->AddProduct(O2m); 509 reactionData->AddProduct(OHm); 510 SetReactionType(reactionData,model);//partially diffusion-controlled 511 theReactionTable->SetReaction(reactionData); 512 //------------------------------------------------------------------ 513 // O- + O- -> H2O2 + OH- + OH- 514 reactionData = new G4DNAMolecularReactionData( 515 1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om); 516 reactionData->AddProduct(H2O2); 517 reactionData->AddProduct(OHm); 518 reactionData->AddProduct(OHm); 519 SetReactionType(reactionData,model);//partially diffusion-controlled 520 theReactionTable->SetReaction(reactionData); 521 //------------------------------------------------------------------ 522 // O- + O3- -> O2- + O2- 523 reactionData = new G4DNAMolecularReactionData( 524 7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m); 525 reactionData->AddProduct(O2m); 526 reactionData->AddProduct(O2m); 527 SetReactionType(reactionData,model);//partially diffusion-controlled 528 theReactionTable->SetReaction(reactionData); 529 530 // Type VI 531 // First order reaction 532 //------------------------------------------------------------------ 533 // O3- -> O- + O2 534 reactionData = new G4DNAMolecularReactionData( 535 2.66e3 / s, O3m,None); 536 reactionData->AddProduct(H3Op); 537 reactionData->AddProduct(O2m); 538 theReactionTable->SetReaction(reactionData); 539 540 // Scavenging reactions 541 542 //------------------------------------------------------------------ 543 // HO2 + H2O -> H3O+ + O2- 544 reactionData = new G4DNAMolecularReactionData( 545 7.15e5 / s, HO2,H2OB); 546 reactionData->AddProduct(H3Op); 547 reactionData->AddProduct(O2m); 548 theReactionTable->SetReaction(reactionData); 549 //------------------------------------------------------------------ 550 // H + H2O -> eaq- + H3O+ 5.94 / s 551 reactionData = new G4DNAMolecularReactionData( 552 5.94e0 / s, H,H2OB); 553 reactionData->AddProduct(e_aq); 554 reactionData->AddProduct(H3Op); 555 theReactionTable->SetReaction(reactionData); 556 //------------------------------------------------------------------ 557 // eaq- + H2O -> H + OH- 15.8 / s 558 reactionData = new G4DNAMolecularReactionData( 559 1.58e1 / s, e_aq,H2OB); 560 reactionData->AddProduct(H); 561 reactionData->AddProduct(OHm); 562 theReactionTable->SetReaction(reactionData); 563 //------------------------------------------------------------------ 564 // O2- + H2O -> HO2 + OH- 0.15 / s 565 reactionData = new G4DNAMolecularReactionData( 566 1.50e-1 / s, O2m,H2OB); 567 reactionData->AddProduct(HO2); 568 reactionData->AddProduct(OHm); 569 theReactionTable->SetReaction(reactionData); 570 //------------------------------------------------------------------ 571 // HO2- + H2O -> H2O2 + OH- 1.36e6 / s 572 reactionData = new G4DNAMolecularReactionData( 573 1.36e6 / s, HO2m,H2OB); 574 reactionData->AddProduct(H2O2); 575 reactionData->AddProduct(OHm); 576 theReactionTable->SetReaction(reactionData); 577 //------------------------------------------------------------------ 578 // O(3p) + H2O -> OH + OH 1.90e3 / s 579 reactionData = new G4DNAMolecularReactionData( 580 1.00e3 / s, O,H2OB); 581 reactionData->AddProduct(OH); 582 reactionData->AddProduct(OH); 583 theReactionTable->SetReaction(reactionData); 584 //------------------------------------------------------------------ 585 // O- + H2O -> OH + OH- 1.36e6 / s 586 reactionData = new G4DNAMolecularReactionData( 587 1.36e6 / s, Om,H2OB); 588 reactionData->AddProduct(OH); 589 reactionData->AddProduct(OHm); 590 theReactionTable->SetReaction(reactionData); 591 //------------------------------------------------------------------ 592 // eaq- + H3O+(B) -> H + H2O 2.09e3 / s 593 reactionData = new G4DNAMolecularReactionData( 594 2.09e3 / s, e_aq,H3OpB); 595 reactionData->AddProduct(H); 596 theReactionTable->SetReaction(reactionData); 597 //------------------------------------------------------------------ 598 // O2- + H3O+(B) -> HO2 + H2O 4.73e3 / s 599 reactionData = new G4DNAMolecularReactionData( 600 4.73e3 / s, O2m,H3OpB); 601 reactionData->AddProduct(HO2); 602 theReactionTable->SetReaction(reactionData); 603 //------------------------------------------------------------------ 604 // OH- + H3O+(B) -> 2H2O 1.11e4 / s 605 reactionData = new G4DNAMolecularReactionData( 606 1.12e4 / s, OHm,H3OpB); 607 theReactionTable->SetReaction(reactionData); 608 609 //------------------------------------------------------------------ 610 // H3O+ + OH-(B) -> 2H2O 1.11e4 / s 611 // opposite description of OH- + H3O+(B) -> 2H2O 612 reactionData = new G4DNAMolecularReactionData( 613 1.12e4 / s, H3Op,OHmB); 614 theReactionTable->SetReaction(reactionData); 615 //------------------------------------------------------------------ 616 // HO2- + H3O+(B) -> H2O2 + H2O 4.98e3 / s 617 reactionData = new G4DNAMolecularReactionData( 618 4.95e3 / s, HO2m,H3OpB); 619 reactionData->AddProduct(H2O2); 620 theReactionTable->SetReaction(reactionData); 621 //------------------------------------------------------------------ 622 // O- + H3O+(B) -> OH + H2O 4.73e3 / s 623 reactionData = new G4DNAMolecularReactionData( 624 4.73e3 / s, Om,H3OpB); 625 reactionData->AddProduct(OH); 626 theReactionTable->SetReaction(reactionData); 627 //------------------------------------------------------------------ 628 // O3- + H3O+(B) -> OH + O2 + H2O 8.91e3 / s 629 reactionData = new G4DNAMolecularReactionData( 630 8.91e3 / s, O3m,H3OpB); 631 reactionData->AddProduct(OH); 632 reactionData->AddProduct(O2); 633 theReactionTable->SetReaction(reactionData); 634 //------------------------------------------------------------------ 635 // H + OH-(B) -> H2O + eaq- 2.49e3 / s 636 reactionData = new G4DNAMolecularReactionData( 637 2.48e0 / s, H,OHmB); 638 reactionData->AddProduct(e_aq); 639 theReactionTable->SetReaction(reactionData); 640 //------------------------------------------------------------------ 641 // OH + OH-(B) -> O- + H2O 6.24e2 / s 642 reactionData = new G4DNAMolecularReactionData( 643 6.24e2 / s, OH,OHmB); 644 reactionData->AddProduct(Om); 645 theReactionTable->SetReaction(reactionData); 646 //------------------------------------------------------------------ 647 // H2O2 + OH-(B) -> HO2- + H2O 4.66e2 / s 648 reactionData = new G4DNAMolecularReactionData( 649 4.66e1 / s, H2O2,OHmB); 650 reactionData->AddProduct(HO2m); 651 theReactionTable->SetReaction(reactionData); 652 //------------------------------------------------------------------ 653 // HO2 + OH-(B) -> O2- + H2O 6.24e2 / s 654 reactionData = new G4DNAMolecularReactionData( 655 6.24e2 / s, HO2,OHmB); 656 reactionData->AddProduct(O2m); 657 theReactionTable->SetReaction(reactionData); 658 //------------------------------------------------------------------ 659 // O(3p) + OH-(B) -> HO2- 4.16e1 / s 660 reactionData = new G4DNAMolecularReactionData( 661 4.16e1 / s, O,OHmB); 662 reactionData->AddProduct(HO2m); 663 theReactionTable->SetReaction(reactionData); 664 //------------------------------------------------------------------ 665 666 } 667 668 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 669 670 void G4EmDNAChemistry_option3::ConstructProcess() 671 { 672 auto ChemModel = G4EmParameters::Instance()->GetTimeStepModel(); 673 G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper(); 674 675 //=============================================================== 676 // Extend vibrational to low energy 677 // Anyway, solvation of electrons is taken into account from 7.4 eV 678 // So below this threshold, for now, no accurate modeling is done 679 // 680 G4VProcess* process = 681 G4ProcessTable::GetProcessTable()-> 682 FindProcess("e-_G4DNAVibExcitation", "e-"); 683 684 if (process) 685 { 686 G4DNAVibExcitation* vibExcitation = (G4DNAVibExcitation*) process; 687 G4VEmModel* model = vibExcitation->EmModel(); 688 G4DNASancheExcitationModel* sancheExcitationMod = 689 dynamic_cast<G4DNASancheExcitationModel*>(model); 690 if(sancheExcitationMod) 691 { 692 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV); 693 } 694 } 695 696 //=============================================================== 697 // *** Electron Solvatation *** 698 // 699 process = 700 G4ProcessTable::GetProcessTable()-> 701 FindProcess("e-_G4DNAElectronSolvation", "e-"); 702 703 if (process == 0) 704 { 705 ph->RegisterProcess( 706 new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"), 707 G4Electron::Definition()); 708 } 709 710 711 //=============================================================== 712 // Define processes for molecules 713 // 714 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance(); 715 G4MoleculeDefinitionIterator iterator = 716 theMoleculeTable->GetDefintionIterator(); 717 iterator.reset(); 718 while (iterator()) 719 { 720 G4MoleculeDefinition* moleculeDef = iterator.value(); 721 722 if (moleculeDef != G4H2O::Definition()) 723 { 724 if(ChemModel != G4ChemTimeStepModel::IRT) 725 { 726 auto* brown = new G4DNABrownianTransportation(); 727 ph->RegisterProcess(brown, moleculeDef); 728 } 729 } 730 else 731 { 732 moleculeDef->GetProcessManager() 733 ->AddRestProcess(new G4DNAElectronHoleRecombination(), 2); 734 auto* dissociationProcess = 735 new G4DNAMolecularDissociation("H2O_DNAMolecularDecay"); 736 dissociationProcess->SetDisplacer( 737 moleculeDef, new G4DNAWaterDissociationDisplacer); 738 dissociationProcess->SetVerboseLevel(3); 739 740 moleculeDef->GetProcessManager() 741 ->AddRestProcess(dissociationProcess, 1); 742 } 743 /* 744 * Warning : end of particles and processes are needed by 745 * EM Physics builders 746 */ 747 } 748 749 G4DNAChemistryManager::Instance()->Initialize(); 750 } 751 752 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 753 754 void G4EmDNAChemistry_option3::ConstructTimeStepModel(G4DNAMolecularReactionTable* 755 /*reactionTable*/) 756 { 757 auto model = G4EmParameters::Instance()->GetTimeStepModel(); 758 if(model == G4ChemTimeStepModel::IRT) 759 { 760 RegisterTimeStepModel(new G4DNAMolecularIRTModel(), 0); 761 }else if(model == G4ChemTimeStepModel::SBS) 762 { 763 RegisterTimeStepModel(new G4DNAMolecularStepByStepModel(), 0); 764 }else if(model == G4ChemTimeStepModel::IRT_syn) 765 { 766 RegisterTimeStepModel(new G4DNAIndependentReactionTimeModel(), 0); 767 } 768 } 769 770 void G4EmDNAChemistry_option3::SetReactionType(G4DNAMolecularReactionData* pData, 771 G4ChemTimeStepModel model) 772 { 773 if(model != G4ChemTimeStepModel::SBS) { pData->SetReactionType(1); } 774 } 775