Geant4 10.7.0
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4EmDNAChemistry_option3.cc
Go to the documentation of this file.
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*/
33
35
37#include "G4SystemOfUnits.hh"
38
42#include "G4ProcessManager.hh"
43
45
46// *** Processes and models for Geant4-DNA
47
49
50#include "G4DNAAttachment.hh"
51#include "G4DNAVibExcitation.hh"
52
53#include "G4DNAElastic.hh"
57
61
64
67
68#include "G4DNAIRT.hh"
69
71
72// particles
73
74#include "G4Electron.hh"
75#include "G4Proton.hh"
76#include "G4GenericIon.hh"
77
78#include "G4MoleculeTable.hh"
79#include "G4H2O.hh"
80#include "G4H2.hh"
81#include "G4Hydrogen.hh"
82#include "G4OH.hh"
83#include "G4H3O.hh"
84#include "G4Electron_aq.hh"
85
86#include "G4Oxygen.hh"
87#include "G4H2O2.hh"
88#include "G4O2.hh"
89#include "G4HO2.hh"
90#include "G4O3.hh"
91#include "G4FakeMolecule.hh"
92
94#include "G4BuilderType.hh"
95
96/****/
98#include "G4ProcessVector.hh"
99#include "G4ProcessTable.hh"
102/****/
103
104#include "G4Scheduler.hh"
105
106// factory
108
110
111#include "G4Threading.hh"
112
115{
117}
118
119//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
120
122{
123}
124
125//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
126
128{
129 //-----------------------------------
130 // G4Electron::Definition(); // safety
131
132 //-----------------------------------
133 // Create the definition
134
141 G4H2::Definition();
142
147
148 //____________________________________________________________________________
149
152 9.46e-9 * (m2/s));
154
157 2.2e-9 * (m2/s));
159
161 CreateConfiguration("OHm", // just a tag to store and retrieve from
162 // G4MoleculeTable
164 -1, // charge
165 5.3e-9 * (m2 / s));
166 OHm->SetMass(17.0079 * g / Avogadro * c_squared);
167 OHm->SetVanDerVaalsRadius(0.33*nm);
168
169
170
171
175
179
180 G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
182 4.8e-9 * (m2/s));
184
185
188 2.3e-9 * (m2/s));
190
191 // molecules extension (RITRACKS)
192
195
197 CreateConfiguration("HO2m", // just a tag to store and retrieve from
198 // G4MoleculeTable
200 -1, // charge
201 1.4e-9 * (m2 / s));
202 HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
203 HO2m->SetVanDerVaalsRadius(0.25*nm);
204
207
209 CreateConfiguration("Om", // just a tag to store and retrieve from
210 // G4MoleculeTable
212 -1, // charge
213 2.0e-9 * (m2 / s));
214 Om->SetMass(15.99829 * g / Avogadro * c_squared);
215 Om->SetVanDerVaalsRadius(0.25*nm);
216
219
221 CreateConfiguration("O2m", // just a tag to store and retrieve from
222 // G4MoleculeTable
224 -1, // charge
225 1.75e-9 * (m2 / s));
226 O2m->SetMass(31.99602 * g / Avogadro * c_squared);
227 O2m->SetVanDerVaalsRadius(0.22*nm);
228
231
233 CreateConfiguration("O3m", // just a tag to store and retrieve from
234 // G4MoleculeTable
236 -1, // charge
237 2.0e-9 * (m2 / s));
238 O3m->SetMass(47.99375 * g / Avogadro * c_squared);
239 O3m->SetVanDerVaalsRadius(0.20*nm);
240
242 CreateConfiguration("H2O(B)", // just a tag to store and retrieve from
243 // G4MoleculeTable
245 0, // charge
246 0 * (m2 / s));
247
249 CreateConfiguration("H3Op(B)", // just a tag to store and retrieve from
250 // G4MoleculeTable
252 1, // charge
253 0 * (m2 / s));
254
256 CreateConfiguration("OHm(B)", // just a tag to store and retrieve from
257 // G4MoleculeTable
259 -1, // charge
260 0 * (m2 / s));
261
263
264}
265
266//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
267
269{
270 //-----------------------------------
271 //Get the molecular configuration
284
285 //-------------------------------------
286 //Define the decay channels
290
293
294 //////////////////////////////////////////////////////////
295 // EXCITATIONS //
296 //////////////////////////////////////////////////////////
297 G4DNAWaterExcitationStructure waterExcitation;
298 //--------------------------------------------------------
299 //---------------Excitation on the fifth layer------------
300
301 decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
302 decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
303 //Decay 1 : OH + H
304 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
305 decCh1->SetProbability(0.35);
306 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
307
308 decCh2->AddProduct(OH);
309 decCh2->AddProduct(H);
310 decCh2->SetProbability(0.65);
311 decCh2->SetDisplacementType(
312 G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
313
314// water->AddExcitedState("A^1B_1");
315 occ->RemoveElectron(4, 1); // this is the transition form ground state to
316 occ->AddElectron(5, 1); // the first unoccupied orbital: A^1B_1
317
318 water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
319 water->AddDecayChannel("A^1B_1", decCh1);
320 water->AddDecayChannel("A^1B_1", decCh2);
321
322 //--------------------------------------------------------
323 //---------------Excitation on the fourth layer-----------
324 decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
325 decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
327 "B^1A_1_AutoIonisation_Channel");
328
329 //Decay 1 : energy
330 decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
331 decCh1->SetProbability(0.3);
332
333 //Decay 2 : 2OH + H_2
334 decCh2->AddProduct(H2);
335 decCh2->AddProduct(OH);
336 decCh2->AddProduct(OH);
337 decCh2->SetProbability(0.15);
338 decCh2->SetDisplacementType(
339 G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
340
341 //Decay 3 : OH + H_3Op + e_aq
342 decCh3->AddProduct(OH);
343 decCh3->AddProduct(H3O);
344 decCh3->AddProduct(e_aq);
345 decCh3->SetProbability(0.55);
346 decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
347
348 *occ = *(water->GetGroundStateElectronOccupancy());
349 occ->RemoveElectron(3); // this is the transition form ground state to
350 occ->AddElectron(5, 1); // the first unoccupied orbital: B^1A_1
351
352 water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
353 water->AddDecayChannel("B^1A_1", decCh1);
354 water->AddDecayChannel("B^1A_1", decCh2);
355 water->AddDecayChannel("B^1A_1", decCh3);
356
357 //-------------------------------------------------------
358 //-------------------Excitation of 3rd layer-----------------
360 "Excitation3rdLayer_AutoIonisation_Channel");
362 "Excitation3rdLayer_Relaxation_Channel");
363
364 //Decay channel 1 : : OH + H_3Op + e_aq
365 decCh1->AddProduct(OH);
366 decCh1->AddProduct(H3O);
367 decCh1->AddProduct(e_aq);
368
369 decCh1->SetProbability(0.5);
370 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
371
372 //Decay channel 2 : energy
373 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
374 decCh2->SetProbability(0.5);
375
376 //Electronic configuration of this decay
377 *occ = *(water->GetGroundStateElectronOccupancy());
378 occ->RemoveElectron(2, 1);
379 occ->AddElectron(5, 1);
380
381 //Configure the water molecule
382 water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
383 water->AddDecayChannel("Excitation3rdLayer", decCh1);
384 water->AddDecayChannel("Excitation3rdLayer", decCh2);
385
386 //-------------------------------------------------------
387 //-------------------Excitation of 2nd layer-----------------
389 "Excitation2ndLayer_AutoIonisation_Channel");
391 "Excitation2ndLayer_Relaxation_Channel");
392
393 //Decay Channel 1 : : OH + H_3Op + e_aq
394 decCh1->AddProduct(OH);
395 decCh1->AddProduct(H3O);
396 decCh1->AddProduct(e_aq);
397
398 decCh1->SetProbability(0.5);
399 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
400
401 //Decay channel 2 : energy
402 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
403 decCh2->SetProbability(0.5);
404
405 *occ = *(water->GetGroundStateElectronOccupancy());
406 occ->RemoveElectron(1, 1);
407 occ->AddElectron(5, 1);
408
409 water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
410 water->AddDecayChannel("Excitation2ndLayer", decCh1);
411 water->AddDecayChannel("Excitation2ndLayer", decCh2);
412
413 //-------------------------------------------------------
414 //-------------------Excitation of 1st layer-----------------
416 "Excitation1stLayer_AutoIonisation_Channel");
418 "Excitation1stLayer_Relaxation_Channel");
419
420 *occ = *(water->GetGroundStateElectronOccupancy());
421 occ->RemoveElectron(0, 1);
422 occ->AddElectron(5, 1);
423
424 //Decay Channel 1 : : OH + H_3Op + e_aq
425 decCh1->AddProduct(OH);
426 decCh1->AddProduct(H3O);
427 decCh1->AddProduct(e_aq);
428 decCh1->SetProbability(0.5);
429 decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
430
431 //Decay channel 2 : energy
432 decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
433 decCh2->SetProbability(0.5);
434
435 water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
436 water->AddDecayChannel("Excitation1stLayer", decCh1);
437 water->AddDecayChannel("Excitation1stLayer", decCh2);
438
439 /////////////////////////////////////////////////////////
440 // IONISATION //
441 /////////////////////////////////////////////////////////
442 //--------------------------------------------------------
443 //------------------- Ionisation -------------------------
444
445 decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
446
447 //Decay Channel 1 : : OH + H_3Op
448 decCh1->AddProduct(H3O);
449 decCh1->AddProduct(OH);
450 decCh1->SetProbability(1);
451 decCh1->SetDisplacementType(
452 G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
453
454 *occ = *(water->GetGroundStateElectronOccupancy());
455 occ->RemoveElectron(4, 1);
456 // this is a ionized h2O with a hole in its last orbital
457 water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
458 water->AddDecayChannel("Ionisation5",
459 decCh1);
460
461 *occ = *(water->GetGroundStateElectronOccupancy());
462 occ->RemoveElectron(3, 1);
463 water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
464 water->AddDecayChannel("Ionisation4",
465 new G4MolecularDissociationChannel(*decCh1));
466
467 *occ = *(water->GetGroundStateElectronOccupancy());
468 occ->RemoveElectron(2, 1);
469 water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
470 water->AddDecayChannel("Ionisation3",
471 new G4MolecularDissociationChannel(*decCh1));
472
473 *occ = *(water->GetGroundStateElectronOccupancy());
474 occ->RemoveElectron(1, 1);
475 water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
476 water->AddDecayChannel("Ionisation2",
477 new G4MolecularDissociationChannel(*decCh1));
478
479 *occ = *(water->GetGroundStateElectronOccupancy());
480 occ->RemoveElectron(0, 1);
481 water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
482 water->AddDecayChannel("Ionisation1",
483 new G4MolecularDissociationChannel(*decCh1));
484
485 //////////////////////////////////////////////////////////
486 // Dissociative Attachment //
487 //////////////////////////////////////////////////////////
488 decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
489
490 //Decay 1 : OHm + H
491 decCh1->AddProduct(H2);
492 decCh1->AddProduct(OHm);
493 decCh1->AddProduct(OH);
494 decCh1->SetProbability(1);
496 DissociativeAttachment);
497
498 *occ = *(water->GetGroundStateElectronOccupancy());
499 occ->AddElectron(5,1); // H_2O^-
500
501 water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
502 water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
503
504 delete occ;
505}
506
507//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
508
510 theReactionTable)
511{
512 //-----------------------------------
513 //Get the molecular configuration
544
551
554
555 // Type I //
556 //------------------------------------------------------------------
557 // *H + *H -> H2
559 0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
560 reactionData->AddProduct(H2);
561 theReactionTable->SetReaction(reactionData);
562 //------------------------------------------------------------------
563 // e_aq + H* + H2O -> H2 + OH-
564 reactionData = new G4DNAMolecularReactionData(
565 2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
566 reactionData->AddProduct(OHm);
567 reactionData->AddProduct(H2);
568 theReactionTable->SetReaction(reactionData);
569
570 // H + O(3p) -> OH
571 reactionData = new G4DNAMolecularReactionData(
572 2.02e10 * (1e-3 * m3 / (mole * s)), H, O);
573 reactionData->AddProduct(OH);
574 theReactionTable->SetReaction(reactionData);
575 //------------------------------------------------------------------
576 // H + O- -> OH-
577 reactionData = new G4DNAMolecularReactionData(
578 2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
579 reactionData->AddProduct(OHm);
580 theReactionTable->SetReaction(reactionData);
581 //------------------------------------------------------------------
582 // OH + O(3p) -> HO2
583 reactionData = new G4DNAMolecularReactionData(
584 2.02e10 * (1e-3 * m3 / (mole * s)), OH, O);
585 reactionData->AddProduct(HO2);
586 theReactionTable->SetReaction(reactionData);
587 //------------------------------------------------------------------
588 // HO2 + O(3p) -> O2
589 reactionData = new G4DNAMolecularReactionData(
590 2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O);
591 reactionData->AddProduct(O2);
592 reactionData->AddProduct(OH);
593 theReactionTable->SetReaction(reactionData);
594 //------------------------------------------------------------------
595 // O(3p) + O(3p) -> O2
596 reactionData = new G4DNAMolecularReactionData(
597 2.20e10 * (1e-3 * m3 / (mole * s)), O, O);
598 reactionData->AddProduct(O2);
599 theReactionTable->SetReaction(reactionData);
600
601 // Type III //
602 //------------------------------------------------------------------
603 // e_aq + e_aq + 2H2O -> H2 + 2OH-
604 reactionData = new G4DNAMolecularReactionData(
605 0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
606 reactionData->AddProduct(OHm);
607 reactionData->AddProduct(OHm);
608 reactionData->AddProduct(H2);
609 theReactionTable->SetReaction(reactionData);
610 //------------------------------------------------------------------
611 // H3O+ + OH- -> 2H2O
612 reactionData = new G4DNAMolecularReactionData(
613 1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
614 theReactionTable->SetReaction(reactionData);
615 //------------------------------------------------------------------
616 // H3O+ + O3- -> OH + O2
617 reactionData = new G4DNAMolecularReactionData(
618 9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
619 reactionData->AddProduct(OH);
620 reactionData->AddProduct(O2);
621 theReactionTable->SetReaction(reactionData);
622
623 // Type II //
624
625 //------------------------------------------------------------------
626 // *OH + *H -> H2O
627 reactionData = new G4DNAMolecularReactionData(
628 1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
629 reactionData->SetReactionType(1);
630 theReactionTable->SetReaction(reactionData);
631 //------------------------------------------------------------------
632 // H + H2O2 -> OH
633 reactionData = new G4DNAMolecularReactionData(
634 3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
635 reactionData->AddProduct(OH);
636 reactionData->SetReactionType(1);
637 theReactionTable->SetReaction(reactionData);
638 //------------------------------------------------------------------
639 // H + OH- -> eaq-
640 reactionData = new G4DNAMolecularReactionData(
641 2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
642 reactionData->AddProduct(e_aq);
643 reactionData->SetReactionType(1);
644 theReactionTable->SetReaction(reactionData);
645 //------------------------------------------------------------------
646 // H + O2 -> HO2
647 reactionData = new G4DNAMolecularReactionData(
648 2.10e10 * (1e-3 * m3 / (mole * s)), H, O2);
649 reactionData->AddProduct(HO2);
650 reactionData->SetReactionType(1);
651 theReactionTable->SetReaction(reactionData);
652 //------------------------------------------------------------------
653 // H + HO2 -> H2O2
654 reactionData = new G4DNAMolecularReactionData(
655 1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
656 reactionData->AddProduct(H2O2);
657 reactionData->SetReactionType(1);
658 theReactionTable->SetReaction(reactionData);
659 //------------------------------------------------------------------
660 // H + O2- -> HO2-
661 reactionData = new G4DNAMolecularReactionData(
662 1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
663 reactionData->AddProduct(HO2m);
664 reactionData->SetReactionType(1);
665 theReactionTable->SetReaction(reactionData);
666 //------------------------------------------------------------------
667 // *OH + *OH -> H2O2
668 reactionData = new G4DNAMolecularReactionData(
669 0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
670 reactionData->AddProduct(H2O2);
671 reactionData->SetReactionType(1);
672 theReactionTable->SetReaction(reactionData);
673 //------------------------------------------------------------------
674 // OH + H2O2 -> HO2
675 reactionData = new G4DNAMolecularReactionData(
676 2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
677 reactionData->AddProduct(HO2);
678 reactionData->SetReactionType(1);
679 theReactionTable->SetReaction(reactionData);
680 //------------------------------------------------------------------
681 // OH + H2 -> H
682 reactionData = new G4DNAMolecularReactionData(
683 3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
684 reactionData->AddProduct(H);
685 reactionData->SetReactionType(1);
686 theReactionTable->SetReaction(reactionData);
687 //------------------------------------------------------------------
688 // e_aq + *OH -> OH-
689 reactionData = new G4DNAMolecularReactionData(
690 2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
691 reactionData->AddProduct(OHm);
692 reactionData->SetReactionType(1);
693 theReactionTable->SetReaction(reactionData);
694 //------------------------------------------------------------------
695 // OH + OH- -> O-
696 reactionData = new G4DNAMolecularReactionData(
697 6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm);
698 reactionData->AddProduct(Om);
699 reactionData->SetReactionType(1);
700 theReactionTable->SetReaction(reactionData);
701 //------------------------------------------------------------------
702 // OH + HO2 -> O2
703 reactionData = new G4DNAMolecularReactionData(
704 7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
705 reactionData->AddProduct(O2);
706 reactionData->SetReactionType(1);
707 theReactionTable->SetReaction(reactionData);
708 //------------------------------------------------------------------
709 // OH + O2- -> O2 + OH-
710 reactionData = new G4DNAMolecularReactionData(
711 1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
712 reactionData->AddProduct(O2);
713 reactionData->AddProduct(OHm);
714 reactionData->SetReactionType(1);
715 theReactionTable->SetReaction(reactionData);
716 //------------------------------------------------------------------
717 // OH + HO2- -> HO2 + OH-
718 reactionData = new G4DNAMolecularReactionData(
719 8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
720 reactionData->AddProduct(HO2);
721 reactionData->AddProduct(OHm);
722 reactionData->SetReactionType(1);
723 theReactionTable->SetReaction(reactionData);
724 //------------------------------------------------------------------
725 // OH + O- -> HO2-
726 reactionData = new G4DNAMolecularReactionData(
727 1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
728 reactionData->AddProduct(HO2m);
729 reactionData->SetReactionType(1);
730 theReactionTable->SetReaction(reactionData);
731 //------------------------------------------------------------------
732 // OH + O3- -> O2- + HO2
733 reactionData = new G4DNAMolecularReactionData(
734 8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
735 reactionData->AddProduct(O2m);
736 reactionData->AddProduct(HO2);
737 reactionData->SetReactionType(1);
738 theReactionTable->SetReaction(reactionData);
739 //------------------------------------------------------------------
740 // e_aq + H2O2 -> OH- + *OH
741 reactionData = new G4DNAMolecularReactionData(
742 1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
743 reactionData->AddProduct(OHm);
744 reactionData->AddProduct(OH);
745 reactionData->SetReactionType(1);
746 theReactionTable->SetReaction(reactionData);
747 //------------------------------------------------------------------
748 // H2O2 + OH- -> HO2-
749 reactionData = new G4DNAMolecularReactionData(
750 4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm);
751 reactionData->AddProduct(HO2m);
752 reactionData->SetReactionType(1);
753 theReactionTable->SetReaction(reactionData);
754 //------------------------------------------------------------------
755 // H2O2 + O(3p) -> HO2 + OH
756 reactionData = new G4DNAMolecularReactionData(
757 1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O);
758 reactionData->AddProduct(HO2);
759 reactionData->AddProduct(OH);
760 reactionData->SetReactionType(1);
761 theReactionTable->SetReaction(reactionData);
762 //------------------------------------------------------------------
763 // H2O2 + O- -> HO2 + OH-
764 reactionData = new G4DNAMolecularReactionData(
765 5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
766 reactionData->AddProduct(HO2);
767 reactionData->AddProduct(OHm);
768 reactionData->SetReactionType(1);
769 theReactionTable->SetReaction(reactionData);
770 //------------------------------------------------------------------
771 // H2 + O(3p) -> H + OH
772 reactionData = new G4DNAMolecularReactionData(
773 4.77e3 * (1e-3 * m3 / (mole * s)), H2, O);
774 reactionData->AddProduct(H);
775 reactionData->AddProduct(OH);
776 reactionData->SetReactionType(1);
777 theReactionTable->SetReaction(reactionData);
778 //------------------------------------------------------------------
779 // H2 + O- -> H + OH-
780 reactionData = new G4DNAMolecularReactionData(
781 1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
782 reactionData->AddProduct(H);
783 reactionData->AddProduct(OHm);
784 reactionData->SetReactionType(1);
785 theReactionTable->SetReaction(reactionData);
786 //------------------------------------------------------------------
787 // eaq- + O2 -> O2-
788 reactionData = new G4DNAMolecularReactionData(
789 1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
790 reactionData->AddProduct(O2m);
791 reactionData->SetReactionType(1);
792 theReactionTable->SetReaction(reactionData);
793 //------------------------------------------------------------------
794 // eaq + HO2 -> HO2-
795 reactionData = new G4DNAMolecularReactionData(
796 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
797 reactionData->AddProduct(HO2m);
798 reactionData->SetReactionType(1);
799 theReactionTable->SetReaction(reactionData);
800 //------------------------------------------------------------------
801 // OH- + HO2 -> O2-
802 reactionData = new G4DNAMolecularReactionData(
803 6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2);
804 reactionData->AddProduct(O2m);
805 reactionData->SetReactionType(1);
806 theReactionTable->SetReaction(reactionData);
807 //------------------------------------------------------------------
808 // OH- + O(3p) -> HO2-
809 reactionData = new G4DNAMolecularReactionData(
810 4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O);
811 reactionData->AddProduct(HO2m);
812 reactionData->SetReactionType(1);
813 theReactionTable->SetReaction(reactionData);
814 //------------------------------------------------------------------
815 // O2 + O(3p) -> O3
816 reactionData = new G4DNAMolecularReactionData(
817 4.00e9 * (1e-3 * m3 / (mole * s)), O2, O);
818 reactionData->AddProduct(O3);
819 reactionData->SetReactionType(1);
820 theReactionTable->SetReaction(reactionData);
821 //------------------------------------------------------------------
822 // O2 + O- -> O3-
823 reactionData = new G4DNAMolecularReactionData(
824 3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om);
825 reactionData->AddProduct(O3m);
826 reactionData->SetReactionType(1);
827 theReactionTable->SetReaction(reactionData);
828 //------------------------------------------------------------------
829 // HO2 + HO2 -> H2O2 + O2
830 reactionData = new G4DNAMolecularReactionData(
831 9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
832 reactionData->AddProduct(H2O2);
833 reactionData->AddProduct(O2);
834 reactionData->SetReactionType(1);
835 theReactionTable->SetReaction(reactionData);
836 //------------------------------------------------------------------
837 // HO2 + O2- -> HO2- + O2
838 reactionData = new G4DNAMolecularReactionData(
839 9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
840 reactionData->AddProduct(HO2m);
841 reactionData->AddProduct(O2);
842 reactionData->SetReactionType(1);
843 theReactionTable->SetReaction(reactionData);
844 //------------------------------------------------------------------
845 // HO2- + O(3p) -> O2- + OH
846 reactionData = new G4DNAMolecularReactionData(
847 5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O);
848 reactionData->AddProduct(O2m);
849 reactionData->AddProduct(OH);
850 reactionData->SetReactionType(1);
851 theReactionTable->SetReaction(reactionData);
852
853 // Type IV //
854 //------------------------------------------------------------------
855 // e_aq + H3O+ -> H* + H2O
856 reactionData = new G4DNAMolecularReactionData(
857 2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
858 reactionData->AddProduct(H);
859 reactionData->SetReactionType(1);
860 theReactionTable->SetReaction(reactionData);
861 //------------------------------------------------------------------
862 // e_aq + O2- -> H2O2 + OH- + OH-
863 reactionData = new G4DNAMolecularReactionData(
864 1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
865 reactionData->AddProduct(H2O2);
866 reactionData->AddProduct(OHm);
867 reactionData->AddProduct(OHm);
868 reactionData->SetReactionType(1);
869 theReactionTable->SetReaction(reactionData);
870 //------------------------------------------------------------------
871 // e_aq + HO2- -> O- + OH-
872 reactionData = new G4DNAMolecularReactionData(
873 3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
874 reactionData->AddProduct(Om);
875 reactionData->AddProduct(OHm);
876 reactionData->SetReactionType(1);
877 theReactionTable->SetReaction(reactionData);
878 //------------------------------------------------------------------
879 // e_aq + O- -> OH- + OH-
880 reactionData = new G4DNAMolecularReactionData(
881 2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
882 reactionData->AddProduct(OHm);
883 reactionData->AddProduct(OHm);
884 reactionData->SetReactionType(1);
885 theReactionTable->SetReaction(reactionData);
886 //------------------------------------------------------------------
887 // H3O+ + O2- -> HO2
888 reactionData = new G4DNAMolecularReactionData(
889 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
890 reactionData->AddProduct(HO2);
891 reactionData->SetReactionType(1);
892 theReactionTable->SetReaction(reactionData);
893 //------------------------------------------------------------------
894 // H3O+ + HO2- -> H2O2
895 reactionData = new G4DNAMolecularReactionData(
896 5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
897 reactionData->AddProduct(H2O2);
898 reactionData->SetReactionType(1);
899 theReactionTable->SetReaction(reactionData);
900 //------------------------------------------------------------------
901 // H3O+ + O- -> OH
902 reactionData = new G4DNAMolecularReactionData(
903 4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
904 reactionData->AddProduct(OH);
905 reactionData->SetReactionType(1);
906 theReactionTable->SetReaction(reactionData);
907 //------------------------------------------------------------------
908 // O2- + O- -> O2 + OH- + OH-
909 reactionData = new G4DNAMolecularReactionData(
910 6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
911 reactionData->AddProduct(O2);
912 reactionData->AddProduct(OHm);
913 reactionData->AddProduct(OHm);
914 reactionData->SetReactionType(1);
915 theReactionTable->SetReaction(reactionData);
916 //------------------------------------------------------------------
917 // HO2- + O- -> O2- + OH-
918 reactionData = new G4DNAMolecularReactionData(
919 3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
920 reactionData->AddProduct(O2m);
921 reactionData->AddProduct(OHm);
922 reactionData->SetReactionType(1);
923 theReactionTable->SetReaction(reactionData);
924 //------------------------------------------------------------------
925 // O- + O- -> H2O2 + OH- + OH-
926 reactionData = new G4DNAMolecularReactionData(
927 1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
928 reactionData->AddProduct(H2O2);
929 reactionData->AddProduct(OHm);
930 reactionData->AddProduct(OHm);
931 reactionData->SetReactionType(1);
932 theReactionTable->SetReaction(reactionData);
933 //------------------------------------------------------------------
934 // O- + O3- -> O2- + O2-
935 reactionData = new G4DNAMolecularReactionData(
936 7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
937 reactionData->AddProduct(O2m);
938 reactionData->AddProduct(O2m);
939 reactionData->SetReactionType(1);
940 theReactionTable->SetReaction(reactionData);
941
942 // Type VI
943 // First order reaction
944 //------------------------------------------------------------------
945 // O3- -> O- + O2
946 reactionData = new G4DNAMolecularReactionData(
947 2.66e3 / s, O3m,None);
948 reactionData->AddProduct(H3Op);
949 reactionData->AddProduct(O2m);
950 theReactionTable->SetReaction(reactionData);
951
952 // Scavenging reactions
953
954 //------------------------------------------------------------------
955 // HO2 + H2O -> H3O+ + O2-
956 reactionData = new G4DNAMolecularReactionData(
957 7.15e5 / s, HO2,H2OB);
958 reactionData->AddProduct(H3Op);
959 reactionData->AddProduct(O2m);
960 theReactionTable->SetReaction(reactionData);
961 //------------------------------------------------------------------
962 // H + H2O -> eaq- + H3O+ 5.94 / s
963 reactionData = new G4DNAMolecularReactionData(
964 5.94e0 / s, H,H2OB);
965 reactionData->AddProduct(e_aq);
966 reactionData->AddProduct(H3Op);
967 theReactionTable->SetReaction(reactionData);
968 //------------------------------------------------------------------
969 // eaq- + H2O -> H + OH- 15.8 / s
970 reactionData = new G4DNAMolecularReactionData(
971 1.58e1 / s, e_aq,H2OB);
972 reactionData->AddProduct(H);
973 reactionData->AddProduct(OHm);
974 theReactionTable->SetReaction(reactionData);
975 //------------------------------------------------------------------
976 // O2- + H2O -> HO2 + OH- 0.15 / s
977 reactionData = new G4DNAMolecularReactionData(
978 1.50e-1 / s, O2m,H2OB);
979 reactionData->AddProduct(HO2);
980 reactionData->AddProduct(OHm);
981 theReactionTable->SetReaction(reactionData);
982 //------------------------------------------------------------------
983 // HO2- + H2O -> H2O2 + OH- 1.36e6 / s
984 reactionData = new G4DNAMolecularReactionData(
985 1.36e6 / s, HO2m,H2OB);
986 reactionData->AddProduct(H2O2);
987 reactionData->AddProduct(OHm);
988 theReactionTable->SetReaction(reactionData);
989 //------------------------------------------------------------------
990 // O(3p) + H2O -> OH + OH 1.90e3 / s
991 reactionData = new G4DNAMolecularReactionData(
992 1.00e3 / s, O,H2OB);
993 reactionData->AddProduct(OH);
994 reactionData->AddProduct(OH);
995 theReactionTable->SetReaction(reactionData);
996 //------------------------------------------------------------------
997 // O- + H2O -> OH + OH- 1.36e6 / s
998 reactionData = new G4DNAMolecularReactionData(
999 1.36e6 / s, Om,H2OB);
1000 reactionData->AddProduct(OH);
1001 reactionData->AddProduct(OHm);
1002 theReactionTable->SetReaction(reactionData);
1003 //------------------------------------------------------------------
1004 // eaq- + H3O+(B) -> H + H2O 2.09e3 / s
1005 reactionData = new G4DNAMolecularReactionData(
1006 2.09e3 / s, e_aq,H3OpB);
1007 reactionData->AddProduct(H);
1008 theReactionTable->SetReaction(reactionData);
1009 //------------------------------------------------------------------
1010 // O2- + H3O+(B) -> HO2 + H2O 4.73e3 / s
1011 reactionData = new G4DNAMolecularReactionData(
1012 4.73e3 / s, O2m,H3OpB);
1013 reactionData->AddProduct(HO2);
1014 theReactionTable->SetReaction(reactionData);
1015 //------------------------------------------------------------------
1016 // OH- + H3O+(B) -> 2H2O 1.11e4 / s
1017 reactionData = new G4DNAMolecularReactionData(
1018 1.12e4 / s, OHm,H3OpB);
1019 theReactionTable->SetReaction(reactionData);
1020
1021 //------------------------------------------------------------------
1022 // H3O+ + OH-(B) -> 2H2O 1.11e4 / s
1023 // opposite description of OH- + H3O+(B) -> 2H2O
1024 reactionData = new G4DNAMolecularReactionData(
1025 1.12e4 / s, H3Op,OHmB);
1026 theReactionTable->SetReaction(reactionData);
1027 //------------------------------------------------------------------
1028 // HO2- + H3O+(B) -> H2O2 + H2O 4.98e3 / s
1029 reactionData = new G4DNAMolecularReactionData(
1030 4.95e3 / s, HO2m,H3OpB);
1031 reactionData->AddProduct(H2O2);
1032 theReactionTable->SetReaction(reactionData);
1033 //------------------------------------------------------------------
1034 // O- + H3O+(B) -> OH + H2O 4.73e3 / s
1035 reactionData = new G4DNAMolecularReactionData(
1036 4.73e3 / s, Om,H3OpB);
1037 reactionData->AddProduct(OH);
1038 theReactionTable->SetReaction(reactionData);
1039 //------------------------------------------------------------------
1040 // O3- + H3O+(B) -> OH + O2 + H2O 8.91e3 / s
1041 reactionData = new G4DNAMolecularReactionData(
1042 8.91e3 / s, O3m,H3OpB);
1043 reactionData->AddProduct(OH);
1044 reactionData->AddProduct(O2);
1045 theReactionTable->SetReaction(reactionData);
1046 //------------------------------------------------------------------
1047 // H + OH-(B) -> H2O + eaq- 2.49e3 / s
1048 reactionData = new G4DNAMolecularReactionData(
1049 2.48e0 / s, H,OHmB);
1050 reactionData->AddProduct(e_aq);
1051 theReactionTable->SetReaction(reactionData);
1052 //------------------------------------------------------------------
1053 // OH + OH-(B) -> O- + H2O 6.24e2 / s
1054 reactionData = new G4DNAMolecularReactionData(
1055 6.24e2 / s, OH,OHmB);
1056 reactionData->AddProduct(Om);
1057 theReactionTable->SetReaction(reactionData);
1058 //------------------------------------------------------------------
1059 // H2O2 + OH-(B) -> HO2- + H2O 4.66e2 / s
1060 reactionData = new G4DNAMolecularReactionData(
1061 4.66e1 / s, H2O2,OHmB);
1062 reactionData->AddProduct(HO2m);
1063 theReactionTable->SetReaction(reactionData);
1064 //------------------------------------------------------------------
1065 // HO2 + OH-(B) -> O2- + H2O 6.24e2 / s
1066 reactionData = new G4DNAMolecularReactionData(
1067 6.24e2 / s, HO2,OHmB);
1068 reactionData->AddProduct(O2m);
1069 theReactionTable->SetReaction(reactionData);
1070 //------------------------------------------------------------------
1071 // O(3p) + OH-(B) -> HO2- 4.16e1 / s
1072 reactionData = new G4DNAMolecularReactionData(
1073 4.16e1 / s, O,OHmB);
1074 reactionData->AddProduct(HO2m);
1075 theReactionTable->SetReaction(reactionData);
1076 //------------------------------------------------------------------
1077
1078}
1079
1080//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
1081
1083{
1085
1086 //===============================================================
1087 // Extend vibrational to low energy
1088 // Anyway, solvation of electrons is taken into account from 7.4 eV
1089 // So below this threshold, for now, no accurate modeling is done
1090 //
1091 G4VProcess* process =
1093 FindProcess("e-_G4DNAVibExcitation", "e-");
1094
1095 if (process)
1096 {
1097 G4DNAVibExcitation* vibExcitation = (G4DNAVibExcitation*) process;
1098 G4VEmModel* model = vibExcitation->EmModel();
1099 G4DNASancheExcitationModel* sancheExcitationMod =
1100 dynamic_cast<G4DNASancheExcitationModel*>(model);
1101 if(sancheExcitationMod)
1102 {
1103 sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
1104 }
1105 }
1106
1107 //===============================================================
1108 // *** Electron Solvatation ***
1109 //
1110 process =
1112 FindProcess("e-_G4DNAElectronSolvation", "e-");
1113
1114 if (process == 0)
1115 {
1116 ph->RegisterProcess(
1117 new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
1119 }
1120
1121
1122 //===============================================================
1123 // Define processes for molecules
1124 //
1125 G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
1127 theMoleculeTable->GetDefintionIterator();
1128 iterator.reset();
1129 while (iterator())
1130 {
1131 G4MoleculeDefinition* moleculeDef = iterator.value();
1132
1133 if (moleculeDef != G4H2O::Definition())
1134 {
1135 // G4cout << "Brownian motion added for: "<< moleculeDef->GetName() << G4endl;
1136// G4DNABrownianTransportation* brown = new G4DNABrownianTransportation();
1137// ph->RegisterProcess(brown, moleculeDef);
1138 }
1139 else
1140 {
1141 moleculeDef->GetProcessManager()
1143 G4DNAMolecularDissociation* dissociationProcess =
1144 new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
1145 dissociationProcess->SetDisplacer(
1146 moleculeDef, new G4DNAWaterDissociationDisplacer);
1147 dissociationProcess->SetVerboseLevel(3);
1148
1149 moleculeDef->GetProcessManager()
1150 ->AddRestProcess(dissociationProcess, 1);
1151 }
1152 /*
1153 * Warning : end of particles and processes are needed by
1154 * EM Physics builders
1155 */
1156 }
1157
1159}
1160
1161//....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
1162
1164 /*reactionTable*/)
1165{
1166
1169/*
1170 G4DNAMolecularStepByStepModel* sbs =
1171 new G4DNAMolecularStepByStepModel();
1172*/
1173 RegisterTimeStepModel(irt, 0);
1174}
#define G4_DECLARE_PHYSCONSTR_FACTORY(physics_constructor)
static G4DNAChemistryManager * Instance()
void SetChemistryList(G4VUserChemistryList &)
void SetDisplacer(Species *, Displacer *)
void SetReaction(G4double observedReactionRate, Reactant *reactive1, Reactant *reactive2)
G4int AddElectron(G4int orbit, G4int number=1)
G4int RemoveElectron(G4int orbit, G4int number=1)
static G4Electron_aq * Definition()
static G4Electron * Definition()
Definition: G4Electron.cc:48
virtual void ConstructTimeStepModel(G4DNAMolecularReactionTable *reactionTable)
virtual void ConstructReactionTable(G4DNAMolecularReactionTable *reactionTable)
static G4FakeMolecule * Definition()
static G4H2O2 * Definition()
Definition: G4H2O2.cc:45
static G4H2O * Definition()
Definition: G4H2O.cc:42
static G4H3O * Definition()
Definition: G4H3O.cc:46
static G4HO2 * Definition()
Definition: G4HO2.cc:45
static G4Hydrogen * Definition()
Definition: G4Hydrogen.cc:45
void AddProduct(Product *, G4double displacement=0.)
const G4ElectronOccupancy * GetGroundStateElectronOccupancy() const
void AddDecayChannel(const G4MolecularConfiguration *molConf, const G4MolecularDissociationChannel *channel)
G4MolecularConfiguration * NewConfigurationWithElectronOccupancy(const G4String &excitedStateLabel, const G4ElectronOccupancy &, double decayTime=0.)
G4MolecularConfiguration * GetConfiguration(const G4String &, bool mustExist=true)
G4MolecularConfiguration * CreateConfiguration(const G4String &userIdentifier, const G4MoleculeDefinition *molDef, const G4String &configurationLabel, const G4ElectronOccupancy &eOcc)
G4MoleculeDefinitionIterator GetDefintionIterator()
static G4MoleculeTable * Instance()
static G4O2 * Definition()
Definition: G4O2.cc:45
static G4O3 * Definition()
Definition: G4O3.cc:45
static G4OH * Definition()
Definition: G4OH.cc:45
static G4Oxygen * Definition()
Definition: G4Oxygen.cc:44
G4ProcessManager * GetProcessManager() const
G4bool RegisterProcess(G4VProcess *process, G4ParticleDefinition *particle)
static G4PhysicsListHelper * GetPhysicsListHelper()
G4int AddRestProcess(G4VProcess *aProcess, G4int ord=ordDefault)
static G4ProcessTable * GetProcessTable()
G4VEmModel * EmModel(size_t index=0) const
void SetVerboseLevel(G4int value)
Definition: G4VProcess.hh:412
void RegisterTimeStepModel(G4VITStepModel *timeStepModel, double startingTime=0)