Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/extended/medical/dna/UHDR/src/ChemOxygenWaterBuilder.cc

Version: [ ReleaseNotes ] [ 1.0 ] [ 1.1 ] [ 2.0 ] [ 3.0 ] [ 3.1 ] [ 3.2 ] [ 4.0 ] [ 4.0.p1 ] [ 4.0.p2 ] [ 4.1 ] [ 4.1.p1 ] [ 5.0 ] [ 5.0.p1 ] [ 5.1 ] [ 5.1.p1 ] [ 5.2 ] [ 5.2.p1 ] [ 5.2.p2 ] [ 6.0 ] [ 6.0.p1 ] [ 6.1 ] [ 6.2 ] [ 6.2.p1 ] [ 6.2.p2 ] [ 7.0 ] [ 7.0.p1 ] [ 7.1 ] [ 7.1.p1 ] [ 8.0 ] [ 8.0.p1 ] [ 8.1 ] [ 8.1.p1 ] [ 8.1.p2 ] [ 8.2 ] [ 8.2.p1 ] [ 8.3 ] [ 8.3.p1 ] [ 8.3.p2 ] [ 9.0 ] [ 9.0.p1 ] [ 9.0.p2 ] [ 9.1 ] [ 9.1.p1 ] [ 9.1.p2 ] [ 9.1.p3 ] [ 9.2 ] [ 9.2.p1 ] [ 9.2.p2 ] [ 9.2.p3 ] [ 9.2.p4 ] [ 9.3 ] [ 9.3.p1 ] [ 9.3.p2 ] [ 9.4 ] [ 9.4.p1 ] [ 9.4.p2 ] [ 9.4.p3 ] [ 9.4.p4 ] [ 9.5 ] [ 9.5.p1 ] [ 9.5.p2 ] [ 9.6 ] [ 9.6.p1 ] [ 9.6.p2 ] [ 9.6.p3 ] [ 9.6.p4 ] [ 10.0 ] [ 10.0.p1 ] [ 10.0.p2 ] [ 10.0.p3 ] [ 10.0.p4 ] [ 10.1 ] [ 10.1.p1 ] [ 10.1.p2 ] [ 10.1.p3 ] [ 10.2 ] [ 10.2.p1 ] [ 10.2.p2 ] [ 10.2.p3 ] [ 10.3 ] [ 10.3.p1 ] [ 10.3.p2 ] [ 10.3.p3 ] [ 10.4 ] [ 10.4.p1 ] [ 10.4.p2 ] [ 10.4.p3 ] [ 10.5 ] [ 10.5.p1 ] [ 10.6 ] [ 10.6.p1 ] [ 10.6.p2 ] [ 10.6.p3 ] [ 10.7 ] [ 10.7.p1 ] [ 10.7.p2 ] [ 10.7.p3 ] [ 10.7.p4 ] [ 11.0 ] [ 11.0.p1 ] [ 11.0.p2 ] [ 11.0.p3, ] [ 11.0.p4 ] [ 11.1 ] [ 11.1.1 ] [ 11.1.2 ] [ 11.1.3 ] [ 11.2 ] [ 11.2.1 ] [ 11.2.2 ] [ 11.3.0 ]

  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 #include "ChemOxygenWaterBuilder.hh"
 28 
 29 #include "G4DNAMolecularReactionTable.hh"
 30 #include "G4MoleculeTable.hh"
 31 #include "G4SystemOfUnits.hh"
 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 33 
 34 void ChemOxygenWaterBuilder::OxygenScavengerReaction(G4DNAMolecularReactionTable* pReactionTable)
 35 {
 36   auto table = G4MoleculeTable::Instance();
 37   //-----------------------------------
 38   // Get the molecular configuration
 39   auto* e_aq = table->GetConfiguration("e_aq");
 40   auto* H = table->GetConfiguration("H");
 41   auto* HO2 = table->GetConfiguration("HO2°");
 42   auto* Om = table->GetConfiguration("Om");
 43   auto* O2 = table->GetConfiguration("O2");
 44   auto* O2m = table->GetConfiguration("O2m");
 45   auto* O3m = table->GetConfiguration("O3m");
 46 
 47   G4DNAMolecularReactionData* reactionData = nullptr;
 48   // Oxygen concentration
 49   // e_aq + O2(B) -> O2-
 50   reactionData = new G4DNAMolecularReactionData(2.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
 51   reactionData->AddProduct(O2m);
 52   pReactionTable->SetReaction(reactionData);
 53   //------------------------------------------------------------------
 54   // H + O2(B) -> HO2
 55   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H, O2);
 56   reactionData->AddProduct(HO2);
 57   pReactionTable->SetReaction(reactionData);
 58   //------------------------------------------------------------------
 59   // O- + O2(B) -> O3-
 60   reactionData = new G4DNAMolecularReactionData(3.7e9 * (1e-3 * m3 / (mole * s)), Om, O2);
 61   reactionData->AddProduct(O3m);
 62   pReactionTable->SetReaction(reactionData);
 63   //------------------------------------------------------------------
 64 }
 65 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
 66 
 67 void ChemOxygenWaterBuilder::SecondOrderReactionExtended(
 68   G4DNAMolecularReactionTable* pReactionTable)
 69 {
 70   //-----------------------------------
 71   // Get the molecular configuration
 72   auto table = G4MoleculeTable::Instance();
 73   auto* OH = table->GetConfiguration("°OH");
 74   auto* OHm = table->GetConfiguration("OHm");
 75   auto* e_aq = table->GetConfiguration("e_aq");
 76   auto* H2 = table->GetConfiguration("H2");
 77   auto* H3Op = table->GetConfiguration("H3Op");
 78   auto* H = table->GetConfiguration("H");
 79   auto* H2O2 = table->GetConfiguration("H2O2");
 80 
 81   auto* HO2 = table->GetConfiguration("HO2°");
 82   auto* HO2m = table->GetConfiguration("HO2m");
 83   auto* Om = table->GetConfiguration("Om");
 84   auto* O2 = table->GetConfiguration("O2");
 85   auto* O2m = table->GetConfiguration("O2m");
 86   auto* O3m = table->GetConfiguration("O3m");
 87 
 88   // second order
 89   G4DNAMolecularReactionData* reactionData = nullptr;
 90   // Type I
 91   //------------------------------------------------------------------
 92   // *H + *H -> H2
 93   reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
 94   reactionData->AddProduct(H2);
 95   pReactionTable->SetReaction(reactionData);
 96   //------------------------------------------------------------------
 97   // e_aq + H* + H2O -> H2 + OH-
 98   reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
 99   reactionData->AddProduct(OHm);
100   reactionData->AddProduct(H2);
101   pReactionTable->SetReaction(reactionData);
102   //------------------------------------------------------------------
103   // e_aq + e_aq + 2H2O -> H2 + 2OH-
104   reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
105   reactionData->AddProduct(OHm);
106   reactionData->AddProduct(OHm);
107   reactionData->AddProduct(H2);
108   pReactionTable->SetReaction(reactionData);
109   //------------------------------------------------------------------
110   // H3O+ + OH- -> 2H2O
111   reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
112   pReactionTable->SetReaction(reactionData);
113   //------------------------------------------------------------------
114   // *OH + *H -> H2O
115   reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
116   pReactionTable->SetReaction(reactionData);
117   //------------------------------------------------------------------
118   // *OH + *OH -> H2O2
119   reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
120   reactionData->AddProduct(H2O2);
121   pReactionTable->SetReaction(reactionData);
122   //------------------------------------------------------------------
123   // e_aq + *OH -> OH-
124   reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
125   reactionData->AddProduct(OHm);
126   pReactionTable->SetReaction(reactionData);
127   //------------------------------------------------------------------
128   // e_aq + H2O2 -> OH- + *OH
129   reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
130   reactionData->AddProduct(OHm);
131   reactionData->AddProduct(OH);
132   pReactionTable->SetReaction(reactionData);
133   //------------------------------------------------------------------
134   // e_aq + H3O+ -> H* + H2O
135   reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
136   reactionData->AddProduct(H);
137   pReactionTable->SetReaction(reactionData);
138 
139   // extended
140   //------------------------------------------------------------------
141   //  H + O- -> OH-
142   reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
143   reactionData->AddProduct(OHm);
144   pReactionTable->SetReaction(reactionData);
145   //------------------------------------------------------------------
146   // H3O+ + O3- -> OH + O2
147   reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
148   reactionData->AddProduct(OH);
149   reactionData->AddProduct(O2);  // add to Scavenger
150   pReactionTable->SetReaction(reactionData);
151   //------------------------------------------------------------------
152   // H + HO2 -> H2O2
153   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
154   reactionData->AddProduct(H2O2);
155   pReactionTable->SetReaction(reactionData);
156   //------------------------------------------------------------------
157   // H + O2- -> HO2-
158   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
159   reactionData->AddProduct(HO2m);
160   pReactionTable->SetReaction(reactionData);
161   //------------------------------------------------------------------
162   // OH + O2- -> O2 + OH-
163   reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
164   reactionData->AddProduct(O2);  // added to Scavenger
165   reactionData->AddProduct(OHm);
166   pReactionTable->SetReaction(reactionData);
167   //------------------------------------------------------------------
168   // e_aq + O2- -> H2O2 + OH- + OH-
169   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
170   reactionData->AddProduct(H2O2);
171   reactionData->AddProduct(OHm);
172   reactionData->AddProduct(OHm);
173   pReactionTable->SetReaction(reactionData);
174   //------------------------------------------------------------------
175   // e_aq + HO2- -> O- + OH-
176   reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
177   reactionData->AddProduct(Om);
178   reactionData->AddProduct(OHm);
179   pReactionTable->SetReaction(reactionData);
180   //------------------------------------------------------------------
181   // e_aq + O- -> OH- + OH-
182   reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
183   reactionData->AddProduct(OHm);
184   reactionData->AddProduct(OHm);
185   pReactionTable->SetReaction(reactionData);
186   //------------------------------------------------------------------
187   // H3O+ + O2- -> HO2
188   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
189   reactionData->AddProduct(HO2);
190   pReactionTable->SetReaction(reactionData);
191   //------------------------------------------------------------------
192   // H3O+ + HO2- -> H2O2
193   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
194   reactionData->AddProduct(H2O2);
195   pReactionTable->SetReaction(reactionData);
196   //------------------------------------------------------------------
197   // H3O+ + O- -> OH
198   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
199   reactionData->AddProduct(OH);
200   pReactionTable->SetReaction(reactionData);
201   //------------------------------------------------------------------
202   // eaq + HO2 -> HO2-
203   reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
204   reactionData->AddProduct(HO2m);
205   pReactionTable->SetReaction(reactionData);
206   //------------------------------------------------------------------
207   // OH + OH- -> O-
208   reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH, OHm);
209   reactionData->AddProduct(Om);
210   pReactionTable->SetReaction(reactionData);
211   //------------------------------------------------------------------
212   // OH + HO2 -> O2
213   reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
214   reactionData->AddProduct(O2);  // added to Scavenger
215   pReactionTable->SetReaction(reactionData);
216   //------------------------------------------------------------------
217   // OH + HO2- -> HO2 + OH-
218   reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
219   reactionData->AddProduct(HO2);
220   reactionData->AddProduct(OHm);
221   pReactionTable->SetReaction(reactionData);
222   //------------------------------------------------------------------
223   // OH + O- -> HO2-
224   reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
225   reactionData->AddProduct(HO2m);
226   pReactionTable->SetReaction(reactionData);
227   //------------------------------------------------------------------
228   // OH + O3- -> O2- + HO2
229   reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
230   reactionData->AddProduct(O2m);
231   reactionData->AddProduct(HO2);
232   pReactionTable->SetReaction(reactionData);
233   //------------------------------------------------------------------
234   // OH- + HO2 -> O2-
235   reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OHm,
236                                                 HO2);  // Frongillo 1.27e10
237   reactionData->AddProduct(O2m);
238   pReactionTable->SetReaction(reactionData);
239   //------------------------------------------------------------------
240   // H2O2 + OH- -> HO2-
241   reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H2O2,
242                                                 OHm);  // Elliot 1.3e10, Plante 4.71e8
243   reactionData->AddProduct(HO2m);
244   pReactionTable->SetReaction(reactionData);
245   //------------------------------------------------------------------
246   // H2O2 + O- -> HO2 + OH-
247   reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
248   reactionData->AddProduct(HO2);
249   reactionData->AddProduct(OHm);
250   pReactionTable->SetReaction(reactionData);
251   //------------------------------------------------------------------
252   // H2 + O- -> H + OH-
253   reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
254   reactionData->AddProduct(H);
255   reactionData->AddProduct(OHm);
256   pReactionTable->SetReaction(reactionData);
257   //------------------------------------------------------------------
258   // O2- + O- -> O2 + OH- + OH-
259   reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
260   reactionData->AddProduct(O2);
261   reactionData->AddProduct(OHm);
262   reactionData->AddProduct(OHm);
263   pReactionTable->SetReaction(reactionData);
264   //------------------------------------------------------------------
265   // HO2- + O- -> O2- + OH-
266   reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
267   reactionData->AddProduct(O2m);
268   reactionData->AddProduct(OHm);
269   pReactionTable->SetReaction(reactionData);
270   //------------------------------------------------------------------
271   // O- + O- -> H2O2 + OH- + OH-
272   reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
273   reactionData->AddProduct(H2O2);
274   reactionData->AddProduct(OHm);
275   reactionData->AddProduct(OHm);
276   pReactionTable->SetReaction(reactionData);
277   //------------------------------------------------------------------
278   // O- + O3- -> O2- + O2-
279   reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
280   reactionData->AddProduct(O2m);
281   reactionData->AddProduct(O2m);
282   pReactionTable->SetReaction(reactionData);
283   //------------------------------------------------------------------
284   // H + OH- -> eaq-
285   reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
286   reactionData->AddProduct(e_aq);
287   pReactionTable->SetReaction(reactionData);
288   //------------------------------------------------------------------
289   // H + H2O2 -> OH
290   reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
291   reactionData->AddProduct(OH);
292   pReactionTable->SetReaction(reactionData);
293   //------------------------------------------------------------------
294   // OH + H2O2 -> HO2
295   reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
296   reactionData->AddProduct(HO2);
297   pReactionTable->SetReaction(reactionData);
298   //------------------------------------------------------------------
299   // OH + H2 -> H
300   reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
301   reactionData->AddProduct(H);
302   pReactionTable->SetReaction(reactionData);
303   //------------------------------------------------------------------
304   // HO2 + HO2 -> H2O2 + O2
305   reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
306   reactionData->AddProduct(H2O2);
307   reactionData->AddProduct(O2);
308   pReactionTable->SetReaction(reactionData);
309   //------------------------------------------------------------------
310   // HO2 + O2- -> HO2- + O2 +
311   reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
312   reactionData->AddProduct(HO2m);
313   reactionData->AddProduct(O2);
314   pReactionTable->SetReaction(reactionData);
315   //------------------------------------------------------------------
316   // hoang added. this must be rare
317   // O2- + O2- -> H2O2 + O2 + 2 OH-
318   reactionData = new G4DNAMolecularReactionData(1.0e2 * (1e-3 * m3 / (mole * s)), O2m, O2m);
319   reactionData->AddProduct(H2O2);
320   reactionData->AddProduct(O2);
321   reactionData->AddProduct(OHm);
322   reactionData->AddProduct(OHm);
323   pReactionTable->SetReaction(reactionData);
324 }
325 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
326