Geant4 Cross Reference

Cross-Referencing   Geant4
Geant4/examples/advanced/dna/moleculardna/src/ChemistryList.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 ]

Diff markup

Differences between /examples/advanced/dna/moleculardna/src/ChemistryList.cc (Version 11.3.0) and /examples/advanced/dna/moleculardna/src/ChemistryList.cc (Version 2.0)


  1 //                                                  1 
  2 // *******************************************    
  3 // * License and Disclaimer                       
  4 // *                                              
  5 // * The  Geant4 software  is  copyright of th    
  6 // * the Geant4 Collaboration.  It is provided    
  7 // * conditions of the Geant4 Software License    
  8 // * LICENSE and available at  http://cern.ch/    
  9 // * include a list of copyright holders.         
 10 // *                                              
 11 // * Neither the authors of this software syst    
 12 // * institutes,nor the agencies providing fin    
 13 // * work  make  any representation or  warran    
 14 // * regarding  this  software system or assum    
 15 // * use.  Please see the license in the file     
 16 // * for the full disclaimer and the limitatio    
 17 // *                                              
 18 // * This  code  implementation is the result     
 19 // * technical work of the GEANT4 collaboratio    
 20 // * By using,  copying,  modifying or  distri    
 21 // * any work based  on the software)  you  ag    
 22 // * use  in  resulting  scientific  publicati    
 23 // * acceptance of all terms of the Geant4 Sof    
 24 // *******************************************    
 25 //                                                
 26                                                   
 27 #include "ChemistryList.hh"                       
 28                                                   
 29 #include "G4DNAChemistryManager.hh"               
 30 #include "G4DNAWaterDissociationDisplacer.hh"     
 31 #include "G4DNAWaterExcitationStructure.hh"       
 32 #include "G4PhysicalConstants.hh"                 
 33 #include "G4ProcessManager.hh"                    
 34 #include "G4SystemOfUnits.hh"                     
 35 // *** Processes and models for Geant4-DNA        
 36 #include "DetectorConstruction.hh"                
 37 #include "IRTDamageReactionModel.hh"              
 38                                                   
 39 #include "G4ChemicalMoleculeFinder.hh"            
 40 #include "G4DNABrownianTransportation.hh"         
 41 #include "G4DNAElectronHoleRecombination.hh"      
 42 #include "G4DNAElectronSolvation.hh"              
 43 #include "G4DNAIndependentReactionTimeModel.hh    
 44 #include "G4DNAMolecularDissociation.hh"          
 45 #include "G4DNAMolecularReactionTable.hh"         
 46 #include "G4DNAMoleculeEncounterStepper.hh"       
 47 #include "G4DNAPolyNucleotideReactionProcess.h    
 48 #include "G4DNASancheExcitationModel.hh"          
 49 #include "G4DNAUeharaScreenedRutherfordElastic    
 50 #include "G4DNAVibExcitation.hh"                  
 51 #include "G4Electron.hh"                          
 52 #include "G4Electron_aq.hh"                       
 53 #include "G4H2.hh"                                
 54 #include "G4H2O.hh"                               
 55 #include "G4H2O2.hh"                              
 56 #include "G4H3O.hh"                               
 57 #include "G4HO2.hh"                               
 58 #include "G4Hydrogen.hh"                          
 59 #include "G4MolecularConfiguration.hh"            
 60 #include "G4MoleculeTable.hh"                     
 61 #include "G4O2.hh"                                
 62 #include "G4O3.hh"                                
 63 #include "G4OH.hh"                                
 64 #include "G4Oxygen.hh"                            
 65 #include "G4PhysicsListHelper.hh"                 
 66 #include "G4ProcessTable.hh"                      
 67 #include "G4RunManager.hh"                        
 68 #include "G4VDNAHitModel.hh"                      
 69 #include "G4VDNAReactionModel.hh"                 
 70 #include "G4ChemDissociationChannels_option1.h    
 71                                                   
 72 ChemistryList::ChemistryList() : G4VUserChemis    
 73 {                                                 
 74   G4DNAChemistryManager::Instance()->SetChemis    
 75 }                                                 
 76                                                   
 77 //....oooOO0OOooo........oooOO0OOooo........oo    
 78                                                   
 79 void ChemistryList::ConstructMolecule()           
 80 {                                                 
 81   //-----------------------------------           
 82   // Create the definition                        
 83                                                   
 84   G4H2O::Definition();                            
 85   G4Hydrogen::Definition();                       
 86   G4H3O::Definition();                            
 87   G4OH::Definition();                             
 88   G4Electron_aq::Definition();                    
 89   G4H2O2::Definition();                           
 90   G4H2::Definition();                             
 91                                                   
 92   G4O2::Definition();                             
 93   G4HO2::Definition();                            
 94   G4Oxygen::Definition();                         
 95   G4O3::Definition();                             
 96                                                   
 97   auto G4OHm = new G4MoleculeDefinition("OH",/    
 98                                         2.8e-9    
 99                                         5, 0.9    
100                                         2 // n    
101                                         );        
102                                                   
103   auto G4HO2m = new G4MoleculeDefinition("HO_2    
104                                          2.3e-    
105                                          2.1 *    
106   //__________________________________________    
107                                                   
108   G4MoleculeTable::Instance()->CreateConfigura    
109   G4MolecularConfiguration* OHm =                 
110     G4MoleculeTable::Instance()->CreateConfigu    
111                                                   
112                                                   
113                                                   
114                                                   
115   OHm->SetMass(17.0079 * g / Avogadro * c_squa    
116   G4MoleculeTable::Instance()->CreateConfigura    
117   G4MoleculeTable::Instance()->CreateConfigura    
118   G4MoleculeTable::Instance()->CreateConfigura    
119   G4MoleculeTable::Instance()->CreateConfigura    
120   G4MoleculeTable::Instance()->CreateConfigura    
121                                                   
122   // molecules extension (RITRACKS)               
123                                                   
124   G4MoleculeTable::Instance()->CreateConfigura    
125   G4MoleculeTable::Instance()->GetConfiguratio    
126                                                   
127   G4MolecularConfiguration* HO2m =                
128     G4MoleculeTable::Instance()->CreateConfigu    
129                                                   
130                                                   
131                                                   
132                                                   
133   HO2m->SetMass(33.00396 * g / Avogadro * c_sq    
134   HO2m->SetVanDerVaalsRadius(0.25 * nm);          
135                                                   
136   G4MoleculeTable::Instance()->CreateConfigura    
137   G4MoleculeTable::Instance()->GetConfiguratio    
138                                                   
139   G4MolecularConfiguration* Om =                  
140     G4MoleculeTable::Instance()->CreateConfigu    
141                                                   
142                                                   
143                                                   
144                                                   
145   Om->SetMass(15.99829 * g / Avogadro * c_squa    
146   Om->SetVanDerVaalsRadius(0.25 * nm);            
147                                                   
148   G4MoleculeTable::Instance()->CreateConfigura    
149   G4MoleculeTable::Instance()->GetConfiguratio    
150                                                   
151   G4MolecularConfiguration* O2m =                 
152     G4MoleculeTable::Instance()->CreateConfigu    
153                                                   
154                                                   
155                                                   
156                                                   
157   O2m->SetMass(31.99602 * g / Avogadro * c_squ    
158   O2m->SetVanDerVaalsRadius(0.22 * nm);           
159                                                   
160   G4MoleculeTable::Instance()->CreateConfigura    
161   G4MoleculeTable::Instance()->GetConfiguratio    
162                                                   
163   G4MolecularConfiguration* O3m =                 
164     G4MoleculeTable::Instance()->CreateConfigu    
165                                                   
166                                                   
167                                                   
168                                                   
169   O3m->SetMass(47.99375 * g / Avogadro * c_squ    
170   O3m->SetVanDerVaalsRadius(0.20 * nm);           
171                                                   
172   G4MoleculeDefinition* A = G4MoleculeTable::I    
173   G4MoleculeTable::Instance()->CreateConfigura    
174                                                   
175   G4MoleculeDefinition* T = G4MoleculeTable::I    
176   G4MoleculeTable::Instance()->CreateConfigura    
177                                                   
178   G4MoleculeDefinition* G = G4MoleculeTable::I    
179   G4MoleculeTable::Instance()->CreateConfigura    
180                                                   
181   G4MoleculeDefinition* C = G4MoleculeTable::I    
182   G4MoleculeTable::Instance()->CreateConfigura    
183                                                   
184   G4MoleculeDefinition* S = G4MoleculeTable::I    
185   G4MoleculeTable::Instance()->CreateConfigura    
186                                                   
187   G4DNAMolecularMaterial* molMaterialManager =    
188                                                   
189   molMaterialManager->SetMolecularConfiguratio    
190                                                   
191   molMaterialManager->SetMolecularConfiguratio    
192   molMaterialManager->SetMolecularConfiguratio    
193   molMaterialManager->SetMolecularConfiguratio    
194   molMaterialManager->SetMolecularConfiguratio    
195   molMaterialManager->SetMolecularConfiguratio    
196 }                                                 
197                                                   
198 //....oooOO0OOooo........oooOO0OOooo........oo    
199                                                   
200 void ChemistryList::ConstructDissociationChann    
201 {                                                 
202   G4ChemDissociationChannels_option1::Construc    
203 }                                                 
204                                                   
205 //....oooOO0OOooo........oooOO0OOooo........oo    
206                                                   
207 void ChemistryList::ConstructReactionTable(G4D    
208 {                                                 
209   //-----------------------------------           
210   // Get the molecular configuration              
211   G4MolecularConfiguration* OH = G4MoleculeTab    
212   G4MolecularConfiguration* OHm = G4MoleculeTa    
213   G4MolecularConfiguration* e_aq = G4MoleculeT    
214   G4MolecularConfiguration* H2 = G4MoleculeTab    
215   G4MolecularConfiguration* H3Op = G4MoleculeT    
216   G4MolecularConfiguration* H = G4MoleculeTabl    
217   G4MolecularConfiguration* H2O2 = G4MoleculeT    
218   G4MolecularConfiguration* HO2 = G4MoleculeTa    
219   G4MolecularConfiguration* HO2m = G4MoleculeT    
220   G4MolecularConfiguration* O = G4MoleculeTabl    
221   G4MolecularConfiguration* Om = G4MoleculeTab    
222   G4MolecularConfiguration* O2 = G4MoleculeTab    
223   G4MolecularConfiguration* O2m = G4MoleculeTa    
224   G4MolecularConfiguration* O3 = G4MoleculeTab    
225   G4MolecularConfiguration* O3m = G4MoleculeTa    
226                                                   
227   // Type I //                                    
228   //------------------------------------------    
229   // *H + *H -> H2                                
230   auto* reactionData = new G4DNAMolecularReact    
231   reactionData->AddProduct(H2);                   
232   theReactionTable->SetReaction(reactionData);    
233   //------------------------------------------    
234   // e_aq + H* + H2O -> H2 + OH-                  
235   reactionData = new G4DNAMolecularReactionDat    
236   reactionData->AddProduct(OHm);                  
237   reactionData->AddProduct(H2);                   
238   theReactionTable->SetReaction(reactionData);    
239                                                   
240   // H + O(3p) -> OH                              
241   reactionData = new G4DNAMolecularReactionDat    
242   reactionData->AddProduct(OH);                   
243   theReactionTable->SetReaction(reactionData);    
244   //------------------------------------------    
245   // H + O- -> OH-                                
246   reactionData = new G4DNAMolecularReactionDat    
247   reactionData->AddProduct(OHm);                  
248   theReactionTable->SetReaction(reactionData);    
249   //------------------------------------------    
250   // OH + O(3p) -> HO2                            
251   reactionData = new G4DNAMolecularReactionDat    
252   reactionData->AddProduct(HO2);                  
253   theReactionTable->SetReaction(reactionData);    
254   //------------------------------------------    
255   // HO2 + O(3p) -> O2                            
256   reactionData = new G4DNAMolecularReactionDat    
257   reactionData->AddProduct(O2);                   
258   reactionData->AddProduct(OH);                   
259   theReactionTable->SetReaction(reactionData);    
260   //------------------------------------------    
261   // O(3p) + O(3p) -> O2                          
262   reactionData = new G4DNAMolecularReactionDat    
263   reactionData->AddProduct(O2);                   
264   theReactionTable->SetReaction(reactionData);    
265                                                   
266   // Type III //                                  
267   //------------------------------------------    
268   // e_aq + e_aq + 2H2O -> H2 + 2OH-              
269   reactionData = new G4DNAMolecularReactionDat    
270   reactionData->AddProduct(OHm);                  
271   reactionData->AddProduct(OHm);                  
272   reactionData->AddProduct(H2);                   
273   theReactionTable->SetReaction(reactionData);    
274   //------------------------------------------    
275   // H3O+ + OH- -> 2H2O                           
276   reactionData = new G4DNAMolecularReactionDat    
277   theReactionTable->SetReaction(reactionData);    
278   //------------------------------------------    
279   // H3O+ + O3- -> OH + O2                        
280   reactionData = new G4DNAMolecularReactionDat    
281   reactionData->AddProduct(OH);                   
282   reactionData->AddProduct(O2);                   
283   theReactionTable->SetReaction(reactionData);    
284                                                   
285   // Type II //                                   
286                                                   
287   //------------------------------------------    
288   // *OH + *H -> H2O                              
289   reactionData = new G4DNAMolecularReactionDat    
290   reactionData->SetReactionType(1);               
291   theReactionTable->SetReaction(reactionData);    
292   //------------------------------------------    
293   // H + H2O2 -> OH                               
294   reactionData = new G4DNAMolecularReactionDat    
295   reactionData->AddProduct(OH);                   
296   reactionData->SetReactionType(1);               
297   theReactionTable->SetReaction(reactionData);    
298   //------------------------------------------    
299   // H + OH- -> eaq-                              
300   reactionData = new G4DNAMolecularReactionDat    
301   reactionData->AddProduct(e_aq);                 
302   reactionData->SetReactionType(1);               
303   theReactionTable->SetReaction(reactionData);    
304   //------------------------------------------    
305   // H + O2 -> HO2                                
306   reactionData = new G4DNAMolecularReactionDat    
307   reactionData->AddProduct(HO2);                  
308   reactionData->SetReactionType(1);               
309   theReactionTable->SetReaction(reactionData);    
310   //------------------------------------------    
311   // H + HO2 -> H2O2                              
312   reactionData = new G4DNAMolecularReactionDat    
313   reactionData->AddProduct(H2O2);                 
314   reactionData->SetReactionType(1);               
315   theReactionTable->SetReaction(reactionData);    
316   //------------------------------------------    
317   // H + O2- -> HO2-                              
318   reactionData = new G4DNAMolecularReactionDat    
319   reactionData->AddProduct(HO2m);                 
320   reactionData->SetReactionType(1);               
321   theReactionTable->SetReaction(reactionData);    
322   //------------------------------------------    
323   // *OH + *OH -> H2O2                            
324   reactionData = new G4DNAMolecularReactionDat    
325   reactionData->AddProduct(H2O2);                 
326   reactionData->SetReactionType(1);               
327   theReactionTable->SetReaction(reactionData);    
328   //------------------------------------------    
329   // OH + H2O2 -> HO2                             
330   reactionData = new G4DNAMolecularReactionDat    
331   reactionData->AddProduct(HO2);                  
332   reactionData->SetReactionType(1);               
333   theReactionTable->SetReaction(reactionData);    
334   //------------------------------------------    
335   // OH + H2 -> H                                 
336   reactionData = new G4DNAMolecularReactionDat    
337   reactionData->AddProduct(H);                    
338   reactionData->SetReactionType(1);               
339   theReactionTable->SetReaction(reactionData);    
340   //------------------------------------------    
341   // e_aq + *OH -> OH-                            
342   reactionData = new G4DNAMolecularReactionDat    
343   reactionData->AddProduct(OHm);                  
344   reactionData->SetReactionType(1);               
345   theReactionTable->SetReaction(reactionData);    
346   //------------------------------------------    
347   // OH + OH- -> O-                               
348   reactionData = new G4DNAMolecularReactionDat    
349   reactionData->AddProduct(Om);                   
350   reactionData->SetReactionType(1);               
351   theReactionTable->SetReaction(reactionData);    
352   //------------------------------------------    
353   // OH + HO2 -> O2                               
354   reactionData = new G4DNAMolecularReactionDat    
355   reactionData->AddProduct(O2);                   
356   reactionData->SetReactionType(1);               
357   theReactionTable->SetReaction(reactionData);    
358   //------------------------------------------    
359   // OH + O2- -> O2 + OH-                         
360   reactionData = new G4DNAMolecularReactionDat    
361   reactionData->AddProduct(O2);                   
362   reactionData->AddProduct(OHm);                  
363   reactionData->SetReactionType(1);               
364   theReactionTable->SetReaction(reactionData);    
365   //------------------------------------------    
366   // OH + HO2- -> HO2 + OH-                       
367   reactionData = new G4DNAMolecularReactionDat    
368   reactionData->AddProduct(HO2);                  
369   reactionData->AddProduct(OHm);                  
370   reactionData->SetReactionType(1);               
371   theReactionTable->SetReaction(reactionData);    
372   //------------------------------------------    
373   // OH + O- -> HO2-                              
374   reactionData = new G4DNAMolecularReactionDat    
375   reactionData->AddProduct(HO2m);                 
376   reactionData->SetReactionType(1);               
377   theReactionTable->SetReaction(reactionData);    
378   //------------------------------------------    
379   // OH + O3- -> O2- + HO2                        
380   reactionData = new G4DNAMolecularReactionDat    
381   reactionData->AddProduct(O2m);                  
382   reactionData->AddProduct(HO2);                  
383   reactionData->SetReactionType(1);               
384   theReactionTable->SetReaction(reactionData);    
385   //------------------------------------------    
386   // e_aq + H2O2 -> OH- + *OH                     
387   reactionData = new G4DNAMolecularReactionDat    
388   reactionData->AddProduct(OHm);                  
389   reactionData->AddProduct(OH);                   
390   reactionData->SetReactionType(1);               
391   theReactionTable->SetReaction(reactionData);    
392   //------------------------------------------    
393   // H2O2 + OH- -> HO2-                           
394   reactionData = new G4DNAMolecularReactionDat    
395   reactionData->AddProduct(HO2m);                 
396   reactionData->SetReactionType(1);               
397   theReactionTable->SetReaction(reactionData);    
398   //------------------------------------------    
399   // H2O2 + O(3p) -> HO2 + OH                     
400   reactionData = new G4DNAMolecularReactionDat    
401   reactionData->AddProduct(HO2);                  
402   reactionData->AddProduct(OH);                   
403   reactionData->SetReactionType(1);               
404   theReactionTable->SetReaction(reactionData);    
405   //------------------------------------------    
406   // H2O2 + O- -> HO2 + OH-                       
407   reactionData = new G4DNAMolecularReactionDat    
408   reactionData->AddProduct(HO2);                  
409   reactionData->AddProduct(OHm);                  
410   reactionData->SetReactionType(1);               
411   theReactionTable->SetReaction(reactionData);    
412   //------------------------------------------    
413   // H2 + O(3p) -> H + OH                         
414   reactionData = new G4DNAMolecularReactionDat    
415   reactionData->AddProduct(H);                    
416   reactionData->AddProduct(OH);                   
417   reactionData->SetReactionType(1);               
418   theReactionTable->SetReaction(reactionData);    
419   //------------------------------------------    
420   // H2 + O- -> H + OH-                           
421   reactionData = new G4DNAMolecularReactionDat    
422   reactionData->AddProduct(H);                    
423   reactionData->AddProduct(OHm);                  
424   reactionData->SetReactionType(1);               
425   theReactionTable->SetReaction(reactionData);    
426   //------------------------------------------    
427   // eaq- + O2 -> O2-                             
428   reactionData = new G4DNAMolecularReactionDat    
429   reactionData->AddProduct(O2m);                  
430   reactionData->SetReactionType(1);               
431   theReactionTable->SetReaction(reactionData);    
432   //------------------------------------------    
433   // eaq + HO2 -> HO2-                            
434   reactionData = new G4DNAMolecularReactionDat    
435   reactionData->AddProduct(HO2m);                 
436   reactionData->SetReactionType(1);               
437   theReactionTable->SetReaction(reactionData);    
438   //------------------------------------------    
439   // OH- + HO2 -> O2-                             
440   reactionData = new G4DNAMolecularReactionDat    
441   reactionData->AddProduct(O2m);                  
442   reactionData->SetReactionType(1);               
443   theReactionTable->SetReaction(reactionData);    
444   //------------------------------------------    
445   // OH- + O(3p) -> HO2-                          
446   reactionData = new G4DNAMolecularReactionDat    
447   reactionData->AddProduct(HO2m);                 
448   reactionData->SetReactionType(1);               
449   theReactionTable->SetReaction(reactionData);    
450   //------------------------------------------    
451   // O2 + O(3p) -> O3                             
452   reactionData = new G4DNAMolecularReactionDat    
453   reactionData->AddProduct(O3);                   
454   reactionData->SetReactionType(1);               
455   theReactionTable->SetReaction(reactionData);    
456   //------------------------------------------    
457   // O2 + O- -> O3-                               
458   reactionData = new G4DNAMolecularReactionDat    
459   reactionData->AddProduct(O3m);                  
460   reactionData->SetReactionType(1);               
461   theReactionTable->SetReaction(reactionData);    
462   //------------------------------------------    
463   // HO2 + HO2 -> H2O2 + O2                       
464   reactionData = new G4DNAMolecularReactionDat    
465   reactionData->AddProduct(H2O2);                 
466   reactionData->AddProduct(O2);                   
467   reactionData->SetReactionType(1);               
468   theReactionTable->SetReaction(reactionData);    
469   //------------------------------------------    
470   // HO2 + O2- -> HO2- + O2                       
471   reactionData = new G4DNAMolecularReactionDat    
472   reactionData->AddProduct(HO2m);                 
473   reactionData->AddProduct(O2);                   
474   reactionData->SetReactionType(1);               
475   theReactionTable->SetReaction(reactionData);    
476   //------------------------------------------    
477   // HO2- + O(3p) -> O2- + OH                     
478   reactionData = new G4DNAMolecularReactionDat    
479   reactionData->AddProduct(O2m);                  
480   reactionData->AddProduct(OH);                   
481   reactionData->SetReactionType(1);               
482   theReactionTable->SetReaction(reactionData);    
483                                                   
484   // Type IV //                                   
485   //------------------------------------------    
486   // e_aq + H3O+ -> H* + H2O                      
487   reactionData = new G4DNAMolecularReactionDat    
488   reactionData->AddProduct(H);                    
489   reactionData->SetReactionType(1);               
490   theReactionTable->SetReaction(reactionData);    
491   //------------------------------------------    
492   // e_aq + O2- -> H2O2 + OH- + OH-               
493   reactionData = new G4DNAMolecularReactionDat    
494   reactionData->AddProduct(H2O2);                 
495   reactionData->AddProduct(OHm);                  
496   reactionData->AddProduct(OHm);                  
497   reactionData->SetReactionType(1);               
498   theReactionTable->SetReaction(reactionData);    
499   //------------------------------------------    
500   // e_aq + HO2- -> O- + OH-                      
501   reactionData = new G4DNAMolecularReactionDat    
502   reactionData->AddProduct(Om);                   
503   reactionData->AddProduct(OHm);                  
504   reactionData->SetReactionType(1);               
505   theReactionTable->SetReaction(reactionData);    
506   //------------------------------------------    
507   // e_aq + O- -> OH- + OH-                       
508   reactionData = new G4DNAMolecularReactionDat    
509   reactionData->AddProduct(OHm);                  
510   reactionData->AddProduct(OHm);                  
511   reactionData->SetReactionType(1);               
512   theReactionTable->SetReaction(reactionData);    
513   //------------------------------------------    
514   // H3O+ + O2- -> HO2                            
515   reactionData = new G4DNAMolecularReactionDat    
516   reactionData->AddProduct(HO2);                  
517   reactionData->SetReactionType(1);               
518   theReactionTable->SetReaction(reactionData);    
519   //------------------------------------------    
520   // H3O+ + HO2- -> H2O2                          
521   reactionData = new G4DNAMolecularReactionDat    
522   reactionData->AddProduct(H2O2);                 
523   reactionData->SetReactionType(1);               
524   theReactionTable->SetReaction(reactionData);    
525   //------------------------------------------    
526   // H3O+ + O- -> OH                              
527   reactionData = new G4DNAMolecularReactionDat    
528   reactionData->AddProduct(OH);                   
529   reactionData->SetReactionType(1);               
530   theReactionTable->SetReaction(reactionData);    
531   //------------------------------------------    
532   // O2- + O- -> O2 + OH- + OH-                   
533   reactionData = new G4DNAMolecularReactionDat    
534   reactionData->AddProduct(O2);                   
535   reactionData->AddProduct(OHm);                  
536   reactionData->AddProduct(OHm);                  
537   reactionData->SetReactionType(1);               
538   theReactionTable->SetReaction(reactionData);    
539   //------------------------------------------    
540   // HO2- + O- -> O2- + OH-                       
541   reactionData = new G4DNAMolecularReactionDat    
542   reactionData->AddProduct(O2m);                  
543   reactionData->AddProduct(OHm);                  
544   reactionData->SetReactionType(1);               
545   theReactionTable->SetReaction(reactionData);    
546   //------------------------------------------    
547   // O- + O- -> H2O2 + OH- + OH-                  
548   reactionData = new G4DNAMolecularReactionDat    
549   reactionData->AddProduct(H2O2);                 
550   reactionData->AddProduct(OHm);                  
551   reactionData->AddProduct(OHm);                  
552   reactionData->SetReactionType(1);               
553   theReactionTable->SetReaction(reactionData);    
554   //------------------------------------------    
555   // O- + O3- -> O2- + O2-                        
556   reactionData = new G4DNAMolecularReactionDat    
557   reactionData->AddProduct(O2m);                  
558   reactionData->AddProduct(O2m);                  
559   reactionData->SetReactionType(1);               
560   theReactionTable->SetReaction(reactionData);    
561                                                   
562   //------------------------------------------    
563   // Get the DNA entites                          
564   G4MolecularConfiguration* A = G4MoleculeTabl    
565   G4MolecularConfiguration* T = G4MoleculeTabl    
566   G4MolecularConfiguration* G = G4MoleculeTabl    
567   G4MolecularConfiguration* C = G4MoleculeTabl    
568   G4MolecularConfiguration* Sugar = G4Molecule    
569                                                   
570   // From Buxton et al., J. Phys. Chern. Ref.     
571   theReactionTable->SetReaction(0.61e10 * (1e-    
572   theReactionTable->SetReaction(0.64e10 * (1e-    
573   theReactionTable->SetReaction(0.92e10 * (1e-    
574   theReactionTable->SetReaction(0.61e10 * (1e-    
575   theReactionTable->SetReaction(0.18e10 * (1e-    
576                                                   
577   theReactionTable->SetReaction(0.9e10 * (1e-3    
578   theReactionTable->SetReaction(1.8e10 * (1e-3    
579   theReactionTable->SetReaction(1.4e10 * (1e-3    
580   theReactionTable->SetReaction(1.3e10 * (1e-3    
581   theReactionTable->SetReaction(1.0e7 * (1e-3     
582                                                   
583   theReactionTable->SetReaction(1.0e8 * (1e-3     
584   theReactionTable->SetReaction(5.7e8 * (1e-3     
585   theReactionTable->SetReaction(9.2e7 * (1e-3     
586   theReactionTable->SetReaction(2.9e7 * (1e-3     
587 }                                                 
588                                                   
589 //....oooOO0OOooo........oooOO0OOooo........oo    
590                                                   
591 void ChemistryList::ConstructProcess()            
592 {                                                 
593   G4PhysicsListHelper* ph = G4PhysicsListHelpe    
594                                                   
595   //==========================================    
596   // Extend vibrational to low energy             
597   // Anyway, solvation of electrons is taken i    
598   // So below this threshold, for now, no accu    
599   //                                              
600   G4VProcess* process =                           
601     G4ProcessTable::GetProcessTable()->FindPro    
602                                                   
603   if (process != nullptr) {                       
604     auto* vibExcitation = (G4DNAVibExcitation*    
605     G4VEmModel* model = vibExcitation->EmModel    
606     auto* sancheExcitationMod = dynamic_cast<G    
607     if (sancheExcitationMod != nullptr) {         
608       sancheExcitationMod->ExtendLowEnergyLimi    
609     }                                             
610   }                                               
611                                                   
612   //==========================================    
613   // *** Electron Solvatation ***                 
614   //                                              
615   process = G4ProcessTable::GetProcessTable()-    
616                                                   
617   if (process == nullptr) {                       
618     ph->RegisterProcess(new G4DNAElectronSolva    
619                         G4Electron::Definition    
620   }                                               
621                                                   
622   //==========================================    
623   // Define processes for molecules               
624   //                                              
625   G4MoleculeTable* theMoleculeTable = G4Molecu    
626   G4MoleculeDefinitionIterator iterator = theM    
627   iterator.reset();                               
628   while (iterator()) {                            
629     G4MoleculeDefinition* moleculeDef = iterat    
630                                                   
631     if (moleculeDef != G4H2O::Definition()) {     
632       auto brown = new G4DNABrownianTransporta    
633       ph->RegisterProcess(brown, moleculeDef);    
634                                                   
635       if (moleculeDef == G4Electron_aq::Defini    
636           || moleculeDef == G4Hydrogen::Defini    
637       {                                           
638         G4VDNAHitModel* pDamageModel = new IRT    
639         auto staticMoleculeReactionProcess =      
640           new G4DNAPolyNucleotideReactionProce    
641         staticMoleculeReactionProcess->SetVerb    
642         staticMoleculeReactionProcess->SetDNAD    
643         ph->RegisterProcess(staticMoleculeReac    
644       }                                           
645     }                                             
646     else {                                        
647       moleculeDef->GetProcessManager()->AddRes    
648       auto* dissociationProcess = new G4DNAMol    
649       dissociationProcess->SetDisplacer(molecu    
650       dissociationProcess->SetVerboseLevel(3);    
651                                                   
652       moleculeDef->GetProcessManager()->AddRes    
653     }                                             
654   }                                               
655 }                                                 
656                                                   
657 //....oooOO0OOooo........oooOO0OOooo........oo    
658                                                   
659 void ChemistryList::ConstructTimeStepModel(G4D    
660                                            /*r    
661 {                                                 
662   auto model = G4EmParameters::Instance()->Get    
663   if(model == G4ChemTimeStepModel::IRT_syn)       
664   {                                               
665     RegisterTimeStepModel(new G4DNAIndependent    
666   }else                                           
667   {                                               
668     G4ExceptionDescription exceptionDescriptio    
669     exceptionDescription << "This example uses    
670     G4Exception(                                  
671         "ChemistryList"                           
672         "ConstructTimeStepModel",                 
673         "ConstructTimeStepModel", FatalExcepti    
674   }                                               
675 }                                                 
676                                                   
677 void ChemistryList::ConstructParticle()           
678 {                                                 
679   ConstructMolecule();                            
680 }                                                 
681