Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-02-23 09:22:00

0001 //
0002 // ********************************************************************
0003 // * License and Disclaimer                                           *
0004 // *                                                                  *
0005 // * The  Geant4 software  is  copyright of the Copyright Holders  of *
0006 // * the Geant4 Collaboration.  It is provided  under  the terms  and *
0007 // * conditions of the Geant4 Software License,  included in the file *
0008 // * LICENSE and available at  http://cern.ch/geant4/license .  These *
0009 // * include a list of copyright holders.                             *
0010 // *                                                                  *
0011 // * Neither the authors of this software system, nor their employing *
0012 // * institutes,nor the agencies providing financial support for this *
0013 // * work  make  any representation or  warranty, express or implied, *
0014 // * regarding  this  software system or assume any liability for its *
0015 // * use.  Please see the license in the file  LICENSE  and URL above *
0016 // * for the full disclaimer and the limitation of liability.         *
0017 // *                                                                  *
0018 // * This  code  implementation is the result of  the  scientific and *
0019 // * technical work of the GEANT4 collaboration.                      *
0020 // * By using,  copying,  modifying or  distributing the software (or *
0021 // * any work based  on the software)  you  agree  to acknowledge its *
0022 // * use  in  resulting  scientific  publications,  and indicate your *
0023 // * acceptance of all terms of the Geant4 Software license.          *
0024 // ********************************************************************
0025 //
0026 
0027 #include "ChemistryList.hh"
0028 
0029 #include "G4DNAChemistryManager.hh"
0030 #include "G4DNAWaterDissociationDisplacer.hh"
0031 #include "G4DNAWaterExcitationStructure.hh"
0032 #include "G4PhysicalConstants.hh"
0033 #include "G4ProcessManager.hh"
0034 #include "G4SystemOfUnits.hh"
0035 // *** Processes and models for Geant4-DNA
0036 #include "DetectorConstruction.hh"
0037 #include "IRTDamageReactionModel.hh"
0038 
0039 #include "G4ChemicalMoleculeFinder.hh"
0040 #include "G4DNABrownianTransportation.hh"
0041 #include "G4DNAElectronHoleRecombination.hh"
0042 #include "G4DNAElectronSolvation.hh"
0043 #include "G4DNAIndependentReactionTimeModel.hh"
0044 #include "G4DNAMolecularDissociation.hh"
0045 #include "G4DNAMolecularReactionTable.hh"
0046 #include "G4DNAMoleculeEncounterStepper.hh"
0047 #include "G4DNAPolyNucleotideReactionProcess.hh"
0048 #include "G4DNASancheExcitationModel.hh"
0049 #include "G4DNAUeharaScreenedRutherfordElasticModel.hh"
0050 #include "G4DNAVibExcitation.hh"
0051 #include "G4Electron.hh"
0052 #include "G4Electron_aq.hh"
0053 #include "G4H2.hh"
0054 #include "G4H2O.hh"
0055 #include "G4H2O2.hh"
0056 #include "G4H3O.hh"
0057 #include "G4HO2.hh"
0058 #include "G4Hydrogen.hh"
0059 #include "G4MolecularConfiguration.hh"
0060 #include "G4MoleculeTable.hh"
0061 #include "G4O2.hh"
0062 #include "G4O3.hh"
0063 #include "G4OH.hh"
0064 #include "G4Oxygen.hh"
0065 #include "G4PhysicsListHelper.hh"
0066 #include "G4ProcessTable.hh"
0067 #include "G4RunManager.hh"
0068 #include "G4VDNAHitModel.hh"
0069 #include "G4VDNAReactionModel.hh"
0070 
0071 ChemistryList::ChemistryList() : G4VUserChemistryList(true)
0072 {
0073   G4DNAChemistryManager::Instance()->SetChemistryList(this);
0074 }
0075 
0076 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0077 
0078 void ChemistryList::ConstructMolecule()
0079 {
0080   //-----------------------------------
0081   // Create the definition
0082 
0083   G4H2O::Definition();
0084   G4Hydrogen::Definition();
0085   G4H3O::Definition();
0086   G4OH::Definition();
0087   G4Electron_aq::Definition();
0088   G4H2O2::Definition();
0089   G4H2::Definition();
0090 
0091   G4O2::Definition();
0092   G4HO2::Definition();
0093   G4Oxygen::Definition();
0094   G4O3::Definition();
0095 
0096   //____________________________________________________________________________
0097 
0098   G4MoleculeTable::Instance()->CreateConfiguration("H3Op", G4H3O::Definition());
0099   G4MolecularConfiguration* OHm =
0100     G4MoleculeTable::Instance()->CreateConfiguration("OHm",  // just a tag to store and retrieve
0101                                                              // from G4MoleculeTable
0102                                                      G4OH::Definition(),
0103                                                      -1,  // charge
0104                                                      5.0e-9 * (m2 / s));
0105   OHm->SetMass(17.0079 * g / Avogadro * c_squared);
0106   G4MoleculeTable::Instance()->CreateConfiguration("OH", G4OH::Definition());
0107   G4MoleculeTable::Instance()->CreateConfiguration("e_aq", G4Electron_aq::Definition());
0108   G4MoleculeTable::Instance()->CreateConfiguration("H", G4Hydrogen::Definition());
0109   G4MoleculeTable::Instance()->CreateConfiguration("H2", G4H2::Definition());
0110   G4MoleculeTable::Instance()->CreateConfiguration("H2O2", G4H2O2::Definition());
0111 
0112   // molecules extension (RITRACKS)
0113 
0114   G4MoleculeTable::Instance()->CreateConfiguration("HO2", G4HO2::Definition());
0115   G4MoleculeTable::Instance()->GetConfiguration("HO2")->SetVanDerVaalsRadius(0.21 * nm);
0116 
0117   G4MolecularConfiguration* HO2m =
0118     G4MoleculeTable::Instance()->CreateConfiguration("HO2m",  // just a tag to store and retrieve
0119                                                               // from G4MoleculeTable
0120                                                      G4HO2::Definition(),
0121                                                      -1,  // charge
0122                                                      1.4e-9 * (m2 / s));
0123   HO2m->SetMass(33.00396 * g / Avogadro * c_squared);
0124   HO2m->SetVanDerVaalsRadius(0.25 * nm);
0125 
0126   G4MoleculeTable::Instance()->CreateConfiguration("Oxy", G4Oxygen::Definition());
0127   G4MoleculeTable::Instance()->GetConfiguration("Oxy")->SetVanDerVaalsRadius(0.20 * nm);
0128 
0129   G4MolecularConfiguration* Om =
0130     G4MoleculeTable::Instance()->CreateConfiguration("Om",  // just a tag to store and retrieve from
0131                                                             // G4MoleculeTable
0132                                                      G4Oxygen::Definition(),
0133                                                      -1,  // charge
0134                                                      2.0e-9 * (m2 / s));
0135   Om->SetMass(15.99829 * g / Avogadro * c_squared);
0136   Om->SetVanDerVaalsRadius(0.25 * nm);
0137 
0138   G4MoleculeTable::Instance()->CreateConfiguration("O2", G4O2::Definition());
0139   G4MoleculeTable::Instance()->GetConfiguration("O2")->SetVanDerVaalsRadius(0.17 * nm);
0140 
0141   G4MolecularConfiguration* O2m =
0142     G4MoleculeTable::Instance()->CreateConfiguration("O2m",  // just a tag to store and retrieve
0143                                                              // from G4MoleculeTable
0144                                                      G4O2::Definition(),
0145                                                      -1,  // charge
0146                                                      1.75e-9 * (m2 / s));
0147   O2m->SetMass(31.99602 * g / Avogadro * c_squared);
0148   O2m->SetVanDerVaalsRadius(0.22 * nm);
0149 
0150   G4MoleculeTable::Instance()->CreateConfiguration("O3", G4O3::Definition());
0151   G4MoleculeTable::Instance()->GetConfiguration("O3")->SetVanDerVaalsRadius(0.20 * nm);
0152 
0153   G4MolecularConfiguration* O3m =
0154     G4MoleculeTable::Instance()->CreateConfiguration("O3m",  // just a tag to store and retrieve
0155                                                              // from G4MoleculeTable
0156                                                      G4O3::Definition(),
0157                                                      -1,  // charge
0158                                                      2.0e-9 * (m2 / s));
0159   O3m->SetMass(47.99375 * g / Avogadro * c_squared);
0160   O3m->SetVanDerVaalsRadius(0.20 * nm);
0161 
0162   G4MoleculeDefinition* A = G4MoleculeTable::Instance()->CreateMoleculeDefinition("ADENINE", 0);
0163   G4MoleculeTable::Instance()->CreateConfiguration("A", A);
0164 
0165   G4MoleculeDefinition* T = G4MoleculeTable::Instance()->CreateMoleculeDefinition("THYMINE", 0);
0166   G4MoleculeTable::Instance()->CreateConfiguration("T", T);
0167 
0168   G4MoleculeDefinition* G = G4MoleculeTable::Instance()->CreateMoleculeDefinition("GUANINE", 0);
0169   G4MoleculeTable::Instance()->CreateConfiguration("G", G);
0170 
0171   G4MoleculeDefinition* C = G4MoleculeTable::Instance()->CreateMoleculeDefinition("CYTOSINE", 0);
0172   G4MoleculeTable::Instance()->CreateConfiguration("C", C);
0173 
0174   G4MoleculeDefinition* S = G4MoleculeTable::Instance()->CreateMoleculeDefinition("SUGAR", 0);
0175   G4MoleculeTable::Instance()->CreateConfiguration("Sugar", S);
0176 
0177   G4DNAMolecularMaterial* molMaterialManager = G4DNAMolecularMaterial::Instance();
0178 
0179   molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_DEOXYRIBOSE"),
0180                                                 "Sugar");
0181   molMaterialManager->SetMolecularConfiguration("G4_DNA_PHOSPHATE", "Sugar");
0182   molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_ADENINE"), "A");
0183   molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_THYMINE"), "T");
0184   molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_GUANINE"), "G");
0185   molMaterialManager->SetMolecularConfiguration(G4Material::GetMaterial("G4_DNA_CYTOSINE"), "C");
0186 }
0187 
0188 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0189 
0190 void ChemistryList::ConstructDissociationChannels()
0191 {
0192   //-----------------------------------
0193   // Get the molecular configuration
0194   G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0195   G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0196   G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0197   G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0198   G4MolecularConfiguration* H3O = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0199   G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0200   G4MolecularConfiguration* O = G4MoleculeTable::Instance()->GetConfiguration("Oxy");
0201 
0202   //-------------------------------------
0203   // Define the decay channels
0204   G4MoleculeDefinition* water = G4H2O::Definition();
0205   G4MolecularDissociationChannel* decCh1;
0206   G4MolecularDissociationChannel* decCh2;
0207 
0208   auto* occ = new G4ElectronOccupancy(*(water->GetGroundStateElectronOccupancy()));
0209 
0210   //////////////////////////////////////////////////////////
0211   //            EXCITATIONS                               //
0212   //////////////////////////////////////////////////////////
0213   G4DNAWaterExcitationStructure waterExcitation;
0214   //--------------------------------------------------------
0215   //---------------Excitation on the fifth layer------------
0216 
0217   decCh1 = new G4MolecularDissociationChannel("A^1B_1_Relaxation");
0218   decCh2 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0219   // Decay 1 : OH + H
0220   decCh1->SetEnergy(waterExcitation.ExcitationEnergy(0));
0221   decCh1->SetProbability(0.35);
0222   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::NoDisplacement);
0223 
0224   decCh2->AddProduct(OH);
0225   decCh2->AddProduct(H);
0226   decCh2->SetProbability(0.65);
0227   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0228 
0229   //  water->AddExcitedState("A^1B_1");
0230   occ->RemoveElectron(4, 1);  // this is the transition form ground state to
0231   occ->AddElectron(5, 1);  // the first unoccupied orbital: A^1B_1
0232 
0233   water->NewConfigurationWithElectronOccupancy("A^1B_1", *occ);
0234   water->AddDecayChannel("A^1B_1", decCh1);
0235   water->AddDecayChannel("A^1B_1", decCh2);
0236 
0237   //--------------------------------------------------------
0238   //---------------Excitation on the fourth layer-----------
0239   decCh1 = new G4MolecularDissociationChannel("B^1A_1_Relaxation_Channel");
0240   decCh2 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay");
0241   auto* decCh3 = new G4MolecularDissociationChannel("B^1A_1_AutoIonisation_Channel");
0242   auto* decCh4 = new G4MolecularDissociationChannel("A^1B_1_DissociativeDecay");
0243   auto* decCh5 = new G4MolecularDissociationChannel("B^1A_1_DissociativeDecay2");
0244 
0245   // Decay 1 : energy
0246   decCh1->SetEnergy(waterExcitation.ExcitationEnergy(1));
0247   // TRACs
0248   decCh1->SetProbability(0.175);
0249   // Ballarini 0.23
0250   // decCh1->SetProbability(0.229);
0251 
0252   // Decay 2 : 2OH + H_2
0253   decCh2->AddProduct(H2);
0254   decCh2->AddProduct(OH);
0255   decCh2->AddProduct(OH);
0256   // TRACs
0257   decCh2->SetProbability(0.0325);
0258   // Ballarini
0259   // decCh2->SetProbability(0.032);
0260   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0261 
0262   // Decay 3 : OH + H_3Op + e_aq
0263   decCh3->AddProduct(OH);
0264   decCh3->AddProduct(H3O);
0265   decCh3->AddProduct(e_aq);
0266   // TRACs & Ballarini
0267   decCh3->SetProbability(0.50);
0268   decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0269 
0270   // Decay 4 :  H + OH
0271   decCh4->AddProduct(H);
0272   decCh4->AddProduct(OH);
0273   // TRACs
0274   decCh4->SetProbability(0.2535);
0275   // Ballarini
0276   // decCh4->SetProbability(0.20);
0277   decCh4->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0278 
0279   // Decay 5 : 2H + O
0280   decCh5->AddProduct(O);
0281   decCh5->AddProduct(H);
0282   decCh5->AddProduct(H);
0283   // TRACs & Ballarini
0284   decCh5->SetProbability(0.039);
0285   decCh5->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0286 
0287   *occ = *(water->GetGroundStateElectronOccupancy());
0288   occ->RemoveElectron(3);  // this is the transition form ground state to
0289   occ->AddElectron(5, 1);  // the first unoccupied orbital: B^1A_1
0290 
0291   water->NewConfigurationWithElectronOccupancy("B^1A_1", *occ);
0292   water->AddDecayChannel("B^1A_1", decCh1);
0293   water->AddDecayChannel("B^1A_1", decCh2);
0294   water->AddDecayChannel("B^1A_1", decCh3);
0295   water->AddDecayChannel("B^1A_1", decCh4);
0296   water->AddDecayChannel("B^1A_1", decCh5);
0297 
0298   //-------------------------------------------------------
0299   //-------------------Excitation of 3rd layer-----------------
0300   decCh1 = new G4MolecularDissociationChannel("Excitation3rdLayer_AutoIonisation_Channel");
0301   decCh2 = new G4MolecularDissociationChannel("Excitation3rdLayer_Relaxation_Channel");
0302 
0303   // Decay channel 1 : : OH + H_3Op + e_aq
0304   decCh1->AddProduct(OH);
0305   decCh1->AddProduct(H3O);
0306   decCh1->AddProduct(e_aq);
0307 
0308   decCh1->SetProbability(0.5);
0309   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0310 
0311   // Decay channel 2 : energy
0312   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(2));
0313   decCh2->SetProbability(0.5);
0314 
0315   // Electronic configuration of this decay
0316   *occ = *(water->GetGroundStateElectronOccupancy());
0317   occ->RemoveElectron(2, 1);
0318   occ->AddElectron(5, 1);
0319 
0320   // Configure the water molecule
0321   water->NewConfigurationWithElectronOccupancy("Excitation3rdLayer", *occ);
0322   water->AddDecayChannel("Excitation3rdLayer", decCh1);
0323   water->AddDecayChannel("Excitation3rdLayer", decCh2);
0324 
0325   //-------------------------------------------------------
0326   //-------------------Excitation of 2nd layer-----------------
0327   decCh1 = new G4MolecularDissociationChannel("Excitation2ndLayer_AutoIonisation_Channel");
0328   decCh2 = new G4MolecularDissociationChannel("Excitation2ndLayer_Relaxation_Channel");
0329 
0330   // Decay Channel 1 : : OH + H_3Op + e_aq
0331   decCh1->AddProduct(OH);
0332   decCh1->AddProduct(H3O);
0333   decCh1->AddProduct(e_aq);
0334 
0335   decCh1->SetProbability(0.5);
0336   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0337 
0338   // Decay channel 2 : energy
0339   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(3));
0340   decCh2->SetProbability(0.5);
0341 
0342   *occ = *(water->GetGroundStateElectronOccupancy());
0343   occ->RemoveElectron(1, 1);
0344   occ->AddElectron(5, 1);
0345 
0346   water->NewConfigurationWithElectronOccupancy("Excitation2ndLayer", *occ);
0347   water->AddDecayChannel("Excitation2ndLayer", decCh1);
0348   water->AddDecayChannel("Excitation2ndLayer", decCh2);
0349 
0350   //-------------------------------------------------------
0351   //-------------------Excitation of 1st layer-----------------
0352   decCh1 = new G4MolecularDissociationChannel("Excitation1stLayer_AutoIonisation_Channel");
0353   decCh2 = new G4MolecularDissociationChannel("Excitation1stLayer_Relaxation_Channel");
0354 
0355   *occ = *(water->GetGroundStateElectronOccupancy());
0356   occ->RemoveElectron(0, 1);
0357   occ->AddElectron(5, 1);
0358 
0359   // Decay Channel 1 : : OH + H_3Op + e_aq
0360   decCh1->AddProduct(OH);
0361   decCh1->AddProduct(H3O);
0362   decCh1->AddProduct(e_aq);
0363   decCh1->SetProbability(0.5);
0364   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::AutoIonisation);
0365 
0366   // Decay channel 2 : energy
0367   decCh2->SetEnergy(waterExcitation.ExcitationEnergy(4));
0368   decCh2->SetProbability(0.5);
0369 
0370   water->NewConfigurationWithElectronOccupancy("Excitation1stLayer", *occ);
0371   water->AddDecayChannel("Excitation1stLayer", decCh1);
0372   water->AddDecayChannel("Excitation1stLayer", decCh2);
0373 
0374   /////////////////////////////////////////////////////////
0375   //                  IONISATION                         //
0376   /////////////////////////////////////////////////////////
0377   //--------------------------------------------------------
0378   //------------------- Ionisation -------------------------
0379 
0380   decCh1 = new G4MolecularDissociationChannel("Ionisation_Channel");
0381 
0382   // Decay Channel 1 : : OH + H_3Op
0383   decCh1->AddProduct(H3O);
0384   decCh1->AddProduct(OH);
0385   decCh1->SetProbability(1);
0386   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::Ionisation_DissociationDecay);
0387 
0388   *occ = *(water->GetGroundStateElectronOccupancy());
0389   occ->RemoveElectron(4, 1);
0390   // this is a ionized h2O with a hole in its last orbital
0391   water->NewConfigurationWithElectronOccupancy("Ionisation5", *occ);
0392   water->AddDecayChannel("Ionisation5", decCh1);
0393 
0394   *occ = *(water->GetGroundStateElectronOccupancy());
0395   occ->RemoveElectron(3, 1);
0396   water->NewConfigurationWithElectronOccupancy("Ionisation4", *occ);
0397   water->AddDecayChannel("Ionisation4", new G4MolecularDissociationChannel(*decCh1));
0398 
0399   *occ = *(water->GetGroundStateElectronOccupancy());
0400   occ->RemoveElectron(2, 1);
0401   water->NewConfigurationWithElectronOccupancy("Ionisation3", *occ);
0402   water->AddDecayChannel("Ionisation3", new G4MolecularDissociationChannel(*decCh1));
0403 
0404   *occ = *(water->GetGroundStateElectronOccupancy());
0405   occ->RemoveElectron(1, 1);
0406   water->NewConfigurationWithElectronOccupancy("Ionisation2", *occ);
0407   water->AddDecayChannel("Ionisation2", new G4MolecularDissociationChannel(*decCh1));
0408 
0409   *occ = *(water->GetGroundStateElectronOccupancy());
0410   occ->RemoveElectron(0, 1);
0411   water->NewConfigurationWithElectronOccupancy("Ionisation1", *occ);
0412   water->AddDecayChannel("Ionisation1", new G4MolecularDissociationChannel(*decCh1));
0413 
0414   //////////////////////////////////////////////////////////
0415   //            Dissociative Attachment                   //
0416   //////////////////////////////////////////////////////////
0417   decCh1 = new G4MolecularDissociationChannel("DissociativeAttachment_ch1");
0418 
0419   // Decay 1 : OHm + H
0420   decCh1->AddProduct(H2);
0421   decCh1->AddProduct(OHm);
0422   decCh1->AddProduct(OH);
0423   decCh1->SetProbability(1);
0424   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::DissociativeAttachment);
0425 
0426   *occ = *(water->GetGroundStateElectronOccupancy());
0427   occ->AddElectron(5, 1);  // H_2O^-
0428 
0429   water->NewConfigurationWithElectronOccupancy("DissociativeAttachment_ch1", *occ);
0430   water->AddDecayChannel("DissociativeAttachment_ch1", decCh1);
0431 
0432   //////////////////////////////////////////////////////////
0433   //            Electron-hole recombination               //
0434   //////////////////////////////////////////////////////////
0435   decCh1 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay1");
0436   decCh2 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay2");
0437   decCh3 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay3");
0438   decCh4 = new G4MolecularDissociationChannel("H2Ovib_DissociationDecay4");
0439 
0440   // Decay 1 : 2OH + H_2
0441   decCh1->AddProduct(H2);
0442   decCh1->AddProduct(OH);
0443   decCh1->AddProduct(OH);
0444   decCh1->SetProbability(0.1365);
0445   decCh1->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay);
0446 
0447   // Decay 2 : OH + H
0448   decCh2->AddProduct(OH);
0449   decCh2->AddProduct(H);
0450   decCh2->SetProbability(0.3575);
0451   decCh2->SetDisplacementType(G4DNAWaterDissociationDisplacer::A1B1_DissociationDecay);
0452 
0453   // Decay 3 : 2H + O(3p)
0454   decCh3->AddProduct(O);
0455   decCh3->AddProduct(H);
0456   decCh3->AddProduct(H);
0457   decCh3->SetProbability(0.156);
0458   decCh3->SetDisplacementType(G4DNAWaterDissociationDisplacer::B1A1_DissociationDecay2);
0459 
0460   // Decay 4 : relaxation
0461   decCh4->SetProbability(0.35);
0462 
0463   const auto pH2Ovib = G4H2O::Definition()->NewConfiguration("H2Ovib");
0464   assert(pH2Ovib != nullptr);
0465 
0466   water->AddDecayChannel(pH2Ovib, decCh1);
0467   water->AddDecayChannel(pH2Ovib, decCh2);
0468   water->AddDecayChannel(pH2Ovib, decCh3);
0469   water->AddDecayChannel(pH2Ovib, decCh4);
0470 
0471   delete occ;
0472 }
0473 
0474 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0475 
0476 void ChemistryList::ConstructReactionTable(G4DNAMolecularReactionTable* theReactionTable)
0477 {
0478   //-----------------------------------
0479   // Get the molecular configuration
0480   G4MolecularConfiguration* OH = G4MoleculeTable::Instance()->GetConfiguration("OH");
0481   G4MolecularConfiguration* OHm = G4MoleculeTable::Instance()->GetConfiguration("OHm");
0482   G4MolecularConfiguration* e_aq = G4MoleculeTable::Instance()->GetConfiguration("e_aq");
0483   G4MolecularConfiguration* H2 = G4MoleculeTable::Instance()->GetConfiguration("H2");
0484   G4MolecularConfiguration* H3Op = G4MoleculeTable::Instance()->GetConfiguration("H3Op");
0485   G4MolecularConfiguration* H = G4MoleculeTable::Instance()->GetConfiguration("H");
0486   G4MolecularConfiguration* H2O2 = G4MoleculeTable::Instance()->GetConfiguration("H2O2");
0487   G4MolecularConfiguration* HO2 = G4MoleculeTable::Instance()->GetConfiguration("HO2");
0488   G4MolecularConfiguration* HO2m = G4MoleculeTable::Instance()->GetConfiguration("HO2m");
0489   G4MolecularConfiguration* O = G4MoleculeTable::Instance()->GetConfiguration("Oxy");
0490   G4MolecularConfiguration* Om = G4MoleculeTable::Instance()->GetConfiguration("Om");
0491   G4MolecularConfiguration* O2 = G4MoleculeTable::Instance()->GetConfiguration("O2");
0492   G4MolecularConfiguration* O2m = G4MoleculeTable::Instance()->GetConfiguration("O2m");
0493   G4MolecularConfiguration* O3 = G4MoleculeTable::Instance()->GetConfiguration("O3");
0494   G4MolecularConfiguration* O3m = G4MoleculeTable::Instance()->GetConfiguration("O3m");
0495 
0496   // Type I //
0497   //------------------------------------------------------------------
0498   // *H + *H -> H2
0499   auto* reactionData = new G4DNAMolecularReactionData(0.503e10 * (1e-3 * m3 / (mole * s)), H, H);
0500   reactionData->AddProduct(H2);
0501   theReactionTable->SetReaction(reactionData);
0502   //------------------------------------------------------------------
0503   // e_aq + H* + H2O -> H2 + OH-
0504   reactionData = new G4DNAMolecularReactionData(2.50e10 * (1e-3 * m3 / (mole * s)), e_aq, H);
0505   reactionData->AddProduct(OHm);
0506   reactionData->AddProduct(H2);
0507   theReactionTable->SetReaction(reactionData);
0508 
0509   // H + O(3p) -> OH
0510   reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), H, O);
0511   reactionData->AddProduct(OH);
0512   theReactionTable->SetReaction(reactionData);
0513   //------------------------------------------------------------------
0514   // H + O- -> OH-
0515   reactionData = new G4DNAMolecularReactionData(2.00e10 * (1e-3 * m3 / (mole * s)), H, Om);
0516   reactionData->AddProduct(OHm);
0517   theReactionTable->SetReaction(reactionData);
0518   //------------------------------------------------------------------
0519   // OH + O(3p) -> HO2
0520   reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), OH, O);
0521   reactionData->AddProduct(HO2);
0522   theReactionTable->SetReaction(reactionData);
0523   //------------------------------------------------------------------
0524   // HO2 + O(3p) -> O2
0525   reactionData = new G4DNAMolecularReactionData(2.02e10 * (1e-3 * m3 / (mole * s)), HO2, O);
0526   reactionData->AddProduct(O2);
0527   reactionData->AddProduct(OH);
0528   theReactionTable->SetReaction(reactionData);
0529   //------------------------------------------------------------------
0530   // O(3p) + O(3p) -> O2
0531   reactionData = new G4DNAMolecularReactionData(2.20e10 * (1e-3 * m3 / (mole * s)), O, O);
0532   reactionData->AddProduct(O2);
0533   theReactionTable->SetReaction(reactionData);
0534 
0535   // Type III //
0536   //------------------------------------------------------------------
0537   // e_aq + e_aq + 2H2O -> H2 + 2OH-
0538   reactionData = new G4DNAMolecularReactionData(0.636e10 * (1e-3 * m3 / (mole * s)), e_aq, e_aq);
0539   reactionData->AddProduct(OHm);
0540   reactionData->AddProduct(OHm);
0541   reactionData->AddProduct(H2);
0542   theReactionTable->SetReaction(reactionData);
0543   //------------------------------------------------------------------
0544   // H3O+ + OH- -> 2H2O
0545   reactionData = new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op, OHm);
0546   theReactionTable->SetReaction(reactionData);
0547   //------------------------------------------------------------------
0548   // H3O+ + O3- -> OH + O2
0549   reactionData = new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), H3Op, O3m);
0550   reactionData->AddProduct(OH);
0551   reactionData->AddProduct(O2);
0552   theReactionTable->SetReaction(reactionData);
0553 
0554   // Type II //
0555 
0556   //------------------------------------------------------------------
0557   // *OH + *H -> H2O
0558   reactionData = new G4DNAMolecularReactionData(1.55e10 * (1e-3 * m3 / (mole * s)), OH, H);
0559   reactionData->SetReactionType(1);
0560   theReactionTable->SetReaction(reactionData);
0561   //------------------------------------------------------------------
0562   // H + H2O2 -> OH
0563   reactionData = new G4DNAMolecularReactionData(3.50e7 * (1e-3 * m3 / (mole * s)), H, H2O2);
0564   reactionData->AddProduct(OH);
0565   reactionData->SetReactionType(1);
0566   theReactionTable->SetReaction(reactionData);
0567   //------------------------------------------------------------------
0568   // H + OH- -> eaq-
0569   reactionData = new G4DNAMolecularReactionData(2.51e7 * (1e-3 * m3 / (mole * s)), H, OHm);
0570   reactionData->AddProduct(e_aq);
0571   reactionData->SetReactionType(1);
0572   theReactionTable->SetReaction(reactionData);
0573   //------------------------------------------------------------------
0574   // H + O2 -> HO2
0575   reactionData = new G4DNAMolecularReactionData(2.10e10 * (1e-3 * m3 / (mole * s)), H, O2);
0576   reactionData->AddProduct(HO2);
0577   reactionData->SetReactionType(1);
0578   theReactionTable->SetReaction(reactionData);
0579   //------------------------------------------------------------------
0580   // H + HO2 -> H2O2
0581   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, HO2);
0582   reactionData->AddProduct(H2O2);
0583   reactionData->SetReactionType(1);
0584   theReactionTable->SetReaction(reactionData);
0585   //------------------------------------------------------------------
0586   // H + O2- -> HO2-
0587   reactionData = new G4DNAMolecularReactionData(1.00e10 * (1e-3 * m3 / (mole * s)), H, O2m);
0588   reactionData->AddProduct(HO2m);
0589   reactionData->SetReactionType(1);
0590   theReactionTable->SetReaction(reactionData);
0591   //------------------------------------------------------------------
0592   // *OH + *OH -> H2O2
0593   reactionData = new G4DNAMolecularReactionData(0.55e10 * (1e-3 * m3 / (mole * s)), OH, OH);
0594   reactionData->AddProduct(H2O2);
0595   reactionData->SetReactionType(1);
0596   theReactionTable->SetReaction(reactionData);
0597   //------------------------------------------------------------------
0598   // OH + H2O2 -> HO2
0599   reactionData = new G4DNAMolecularReactionData(2.88e7 * (1e-3 * m3 / (mole * s)), OH, H2O2);
0600   reactionData->AddProduct(HO2);
0601   reactionData->SetReactionType(1);
0602   theReactionTable->SetReaction(reactionData);
0603   //------------------------------------------------------------------
0604   // OH + H2 -> H
0605   reactionData = new G4DNAMolecularReactionData(3.28e7 * (1e-3 * m3 / (mole * s)), OH, H2);
0606   reactionData->AddProduct(H);
0607   reactionData->SetReactionType(1);
0608   theReactionTable->SetReaction(reactionData);
0609   //------------------------------------------------------------------
0610   // e_aq + *OH -> OH-
0611   reactionData = new G4DNAMolecularReactionData(2.95e10 * (1e-3 * m3 / (mole * s)), e_aq, OH);
0612   reactionData->AddProduct(OHm);
0613   reactionData->SetReactionType(1);
0614   theReactionTable->SetReaction(reactionData);
0615   //------------------------------------------------------------------
0616   // OH + OH- -> O-
0617   reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OH, OHm);
0618   reactionData->AddProduct(Om);
0619   reactionData->SetReactionType(1);
0620   theReactionTable->SetReaction(reactionData);
0621   //------------------------------------------------------------------
0622   // OH + HO2 -> O2
0623   reactionData = new G4DNAMolecularReactionData(7.90e9 * (1e-3 * m3 / (mole * s)), OH, HO2);
0624   reactionData->AddProduct(O2);
0625   reactionData->SetReactionType(1);
0626   theReactionTable->SetReaction(reactionData);
0627   //------------------------------------------------------------------
0628   // OH + O2- -> O2 + OH-
0629   reactionData = new G4DNAMolecularReactionData(1.07e10 * (1e-3 * m3 / (mole * s)), OH, O2m);
0630   reactionData->AddProduct(O2);
0631   reactionData->AddProduct(OHm);
0632   reactionData->SetReactionType(1);
0633   theReactionTable->SetReaction(reactionData);
0634   //------------------------------------------------------------------
0635   // OH + HO2- -> HO2 + OH-
0636   reactionData = new G4DNAMolecularReactionData(8.32e9 * (1e-3 * m3 / (mole * s)), OH, HO2m);
0637   reactionData->AddProduct(HO2);
0638   reactionData->AddProduct(OHm);
0639   reactionData->SetReactionType(1);
0640   theReactionTable->SetReaction(reactionData);
0641   //------------------------------------------------------------------
0642   // OH + O- -> HO2-
0643   reactionData = new G4DNAMolecularReactionData(1.00e9 * (1e-3 * m3 / (mole * s)), OH, Om);
0644   reactionData->AddProduct(HO2m);
0645   reactionData->SetReactionType(1);
0646   theReactionTable->SetReaction(reactionData);
0647   //------------------------------------------------------------------
0648   // OH + O3- -> O2- + HO2
0649   reactionData = new G4DNAMolecularReactionData(8.50e9 * (1e-3 * m3 / (mole * s)), OH, O3m);
0650   reactionData->AddProduct(O2m);
0651   reactionData->AddProduct(HO2);
0652   reactionData->SetReactionType(1);
0653   theReactionTable->SetReaction(reactionData);
0654   //------------------------------------------------------------------
0655   // e_aq + H2O2 -> OH- + *OH
0656   reactionData = new G4DNAMolecularReactionData(1.10e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);
0657   reactionData->AddProduct(OHm);
0658   reactionData->AddProduct(OH);
0659   reactionData->SetReactionType(1);
0660   theReactionTable->SetReaction(reactionData);
0661   //------------------------------------------------------------------
0662   // H2O2 + OH- -> HO2-
0663   reactionData = new G4DNAMolecularReactionData(4.71e8 * (1e-3 * m3 / (mole * s)), H2O2, OHm);
0664   reactionData->AddProduct(HO2m);
0665   reactionData->SetReactionType(1);
0666   theReactionTable->SetReaction(reactionData);
0667   //------------------------------------------------------------------
0668   // H2O2 + O(3p) -> HO2 + OH
0669   reactionData = new G4DNAMolecularReactionData(1.60e9 * (1e-3 * m3 / (mole * s)), H2O2, O);
0670   reactionData->AddProduct(HO2);
0671   reactionData->AddProduct(OH);
0672   reactionData->SetReactionType(1);
0673   theReactionTable->SetReaction(reactionData);
0674   //------------------------------------------------------------------
0675   // H2O2 + O- -> HO2 + OH-
0676   reactionData = new G4DNAMolecularReactionData(5.55e8 * (1e-3 * m3 / (mole * s)), H2O2, Om);
0677   reactionData->AddProduct(HO2);
0678   reactionData->AddProduct(OHm);
0679   reactionData->SetReactionType(1);
0680   theReactionTable->SetReaction(reactionData);
0681   //------------------------------------------------------------------
0682   // H2 + O(3p) -> H + OH
0683   reactionData = new G4DNAMolecularReactionData(4.77e3 * (1e-3 * m3 / (mole * s)), H2, O);
0684   reactionData->AddProduct(H);
0685   reactionData->AddProduct(OH);
0686   reactionData->SetReactionType(1);
0687   theReactionTable->SetReaction(reactionData);
0688   //------------------------------------------------------------------
0689   // H2 + O- -> H + OH-
0690   reactionData = new G4DNAMolecularReactionData(1.21e8 * (1e-3 * m3 / (mole * s)), H2, Om);
0691   reactionData->AddProduct(H);
0692   reactionData->AddProduct(OHm);
0693   reactionData->SetReactionType(1);
0694   theReactionTable->SetReaction(reactionData);
0695   //------------------------------------------------------------------
0696   // eaq- + O2 -> O2-
0697   reactionData = new G4DNAMolecularReactionData(1.74e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0698   reactionData->AddProduct(O2m);
0699   reactionData->SetReactionType(1);
0700   theReactionTable->SetReaction(reactionData);
0701   //------------------------------------------------------------------
0702   // eaq + HO2 -> HO2-
0703   reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, HO2);
0704   reactionData->AddProduct(HO2m);
0705   reactionData->SetReactionType(1);
0706   theReactionTable->SetReaction(reactionData);
0707   //------------------------------------------------------------------
0708   // OH- + HO2 -> O2-
0709   reactionData = new G4DNAMolecularReactionData(6.30e9 * (1e-3 * m3 / (mole * s)), OHm, HO2);
0710   reactionData->AddProduct(O2m);
0711   reactionData->SetReactionType(1);
0712   theReactionTable->SetReaction(reactionData);
0713   //------------------------------------------------------------------
0714   // OH- + O(3p) -> HO2-
0715   reactionData = new G4DNAMolecularReactionData(4.20e8 * (1e-3 * m3 / (mole * s)), OHm, O);
0716   reactionData->AddProduct(HO2m);
0717   reactionData->SetReactionType(1);
0718   theReactionTable->SetReaction(reactionData);
0719   //------------------------------------------------------------------
0720   // O2 + O(3p) -> O3
0721   reactionData = new G4DNAMolecularReactionData(4.00e9 * (1e-3 * m3 / (mole * s)), O2, O);
0722   reactionData->AddProduct(O3);
0723   reactionData->SetReactionType(1);
0724   theReactionTable->SetReaction(reactionData);
0725   //------------------------------------------------------------------
0726   // O2 + O- -> O3-
0727   reactionData = new G4DNAMolecularReactionData(3.70e9 * (1e-3 * m3 / (mole * s)), O2, Om);
0728   reactionData->AddProduct(O3m);
0729   reactionData->SetReactionType(1);
0730   theReactionTable->SetReaction(reactionData);
0731   //------------------------------------------------------------------
0732   // HO2 + HO2 -> H2O2 + O2
0733   reactionData = new G4DNAMolecularReactionData(9.80e5 * (1e-3 * m3 / (mole * s)), HO2, HO2);
0734   reactionData->AddProduct(H2O2);
0735   reactionData->AddProduct(O2);
0736   reactionData->SetReactionType(1);
0737   theReactionTable->SetReaction(reactionData);
0738   //------------------------------------------------------------------
0739   // HO2 + O2- -> HO2- + O2
0740   reactionData = new G4DNAMolecularReactionData(9.70e7 * (1e-3 * m3 / (mole * s)), HO2, O2m);
0741   reactionData->AddProduct(HO2m);
0742   reactionData->AddProduct(O2);
0743   reactionData->SetReactionType(1);
0744   theReactionTable->SetReaction(reactionData);
0745   //------------------------------------------------------------------
0746   // HO2- + O(3p) -> O2- + OH
0747   reactionData = new G4DNAMolecularReactionData(5.30e9 * (1e-3 * m3 / (mole * s)), HO2m, O);
0748   reactionData->AddProduct(O2m);
0749   reactionData->AddProduct(OH);
0750   reactionData->SetReactionType(1);
0751   theReactionTable->SetReaction(reactionData);
0752 
0753   // Type IV //
0754   //------------------------------------------------------------------
0755   // e_aq + H3O+ -> H* + H2O
0756   reactionData = new G4DNAMolecularReactionData(2.11e10 * (1e-3 * m3 / (mole * s)), e_aq, H3Op);
0757   reactionData->AddProduct(H);
0758   reactionData->SetReactionType(1);
0759   theReactionTable->SetReaction(reactionData);
0760   //------------------------------------------------------------------
0761   // e_aq + O2- -> H2O2 + OH- + OH-
0762   reactionData = new G4DNAMolecularReactionData(1.29e10 * (1e-3 * m3 / (mole * s)), e_aq, O2m);
0763   reactionData->AddProduct(H2O2);
0764   reactionData->AddProduct(OHm);
0765   reactionData->AddProduct(OHm);
0766   reactionData->SetReactionType(1);
0767   theReactionTable->SetReaction(reactionData);
0768   //------------------------------------------------------------------
0769   // e_aq + HO2- -> O- + OH-
0770   reactionData = new G4DNAMolecularReactionData(3.51e9 * (1e-3 * m3 / (mole * s)), e_aq, HO2m);
0771   reactionData->AddProduct(Om);
0772   reactionData->AddProduct(OHm);
0773   reactionData->SetReactionType(1);
0774   theReactionTable->SetReaction(reactionData);
0775   //------------------------------------------------------------------
0776   // e_aq + O- -> OH- + OH-
0777   reactionData = new G4DNAMolecularReactionData(2.31e10 * (1e-3 * m3 / (mole * s)), e_aq, Om);
0778   reactionData->AddProduct(OHm);
0779   reactionData->AddProduct(OHm);
0780   reactionData->SetReactionType(1);
0781   theReactionTable->SetReaction(reactionData);
0782   //------------------------------------------------------------------
0783   // H3O+ + O2- -> HO2
0784   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, O2m);
0785   reactionData->AddProduct(HO2);
0786   reactionData->SetReactionType(1);
0787   theReactionTable->SetReaction(reactionData);
0788   //------------------------------------------------------------------
0789   // H3O+ + HO2- -> H2O2
0790   reactionData = new G4DNAMolecularReactionData(5.00e10 * (1e-3 * m3 / (mole * s)), H3Op, HO2m);
0791   reactionData->AddProduct(H2O2);
0792   reactionData->SetReactionType(1);
0793   theReactionTable->SetReaction(reactionData);
0794   //------------------------------------------------------------------
0795   // H3O+ + O- -> OH
0796   reactionData = new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), H3Op, Om);
0797   reactionData->AddProduct(OH);
0798   reactionData->SetReactionType(1);
0799   theReactionTable->SetReaction(reactionData);
0800   //------------------------------------------------------------------
0801   // O2- + O- -> O2 + OH- + OH-
0802   reactionData = new G4DNAMolecularReactionData(6.00e8 * (1e-3 * m3 / (mole * s)), O2m, Om);
0803   reactionData->AddProduct(O2);
0804   reactionData->AddProduct(OHm);
0805   reactionData->AddProduct(OHm);
0806   reactionData->SetReactionType(1);
0807   theReactionTable->SetReaction(reactionData);
0808   //------------------------------------------------------------------
0809   // HO2- + O- -> O2- + OH-
0810   reactionData = new G4DNAMolecularReactionData(3.50e8 * (1e-3 * m3 / (mole * s)), HO2m, Om);
0811   reactionData->AddProduct(O2m);
0812   reactionData->AddProduct(OHm);
0813   reactionData->SetReactionType(1);
0814   theReactionTable->SetReaction(reactionData);
0815   //------------------------------------------------------------------
0816   // O- + O- -> H2O2 + OH- + OH-
0817   reactionData = new G4DNAMolecularReactionData(1.00e8 * (1e-3 * m3 / (mole * s)), Om, Om);
0818   reactionData->AddProduct(H2O2);
0819   reactionData->AddProduct(OHm);
0820   reactionData->AddProduct(OHm);
0821   reactionData->SetReactionType(1);
0822   theReactionTable->SetReaction(reactionData);
0823   //------------------------------------------------------------------
0824   // O- + O3- -> O2- + O2-
0825   reactionData = new G4DNAMolecularReactionData(7.00e8 * (1e-3 * m3 / (mole * s)), Om, O3m);
0826   reactionData->AddProduct(O2m);
0827   reactionData->AddProduct(O2m);
0828   reactionData->SetReactionType(1);
0829   theReactionTable->SetReaction(reactionData);
0830 
0831   //------------------------------------------------------------------
0832   // Get the DNA entites
0833   G4MolecularConfiguration* A = G4MoleculeTable::Instance()->GetConfiguration("A");
0834   G4MolecularConfiguration* T = G4MoleculeTable::Instance()->GetConfiguration("T");
0835   G4MolecularConfiguration* G = G4MoleculeTable::Instance()->GetConfiguration("G");
0836   G4MolecularConfiguration* C = G4MoleculeTable::Instance()->GetConfiguration("C");
0837   G4MolecularConfiguration* Sugar = G4MoleculeTable::Instance()->GetConfiguration("Sugar");
0838 
0839   // From Buxton et al., J. Phys. Chern. Ref. Data, Vol. 17, No.2, 1988.
0840   theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, A);
0841   theReactionTable->SetReaction(0.64e10 * (1e-3 * m3 / (mole * s)), OH, T);
0842   theReactionTable->SetReaction(0.92e10 * (1e-3 * m3 / (mole * s)), OH, G);
0843   theReactionTable->SetReaction(0.61e10 * (1e-3 * m3 / (mole * s)), OH, C);
0844   theReactionTable->SetReaction(0.18e10 * (1e-3 * m3 / (mole * s)), OH, Sugar);
0845 
0846   theReactionTable->SetReaction(0.9e10 * (1e-3 * m3 / (mole * s)), e_aq, A);
0847   theReactionTable->SetReaction(1.8e10 * (1e-3 * m3 / (mole * s)), e_aq, T);
0848   theReactionTable->SetReaction(1.4e10 * (1e-3 * m3 / (mole * s)), e_aq, G);
0849   theReactionTable->SetReaction(1.3e10 * (1e-3 * m3 / (mole * s)), e_aq, C);
0850   theReactionTable->SetReaction(1.0e7 * (1e-3 * m3 / (mole * s)), e_aq, Sugar);
0851 
0852   theReactionTable->SetReaction(1.0e8 * (1e-3 * m3 / (mole * s)), H, A);
0853   theReactionTable->SetReaction(5.7e8 * (1e-3 * m3 / (mole * s)), H, T);
0854   theReactionTable->SetReaction(9.2e7 * (1e-3 * m3 / (mole * s)), H, C);
0855   theReactionTable->SetReaction(2.9e7 * (1e-3 * m3 / (mole * s)), H, Sugar);
0856 }
0857 
0858 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0859 
0860 void ChemistryList::ConstructProcess()
0861 {
0862   G4PhysicsListHelper* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0863 
0864   //===============================================================
0865   // Extend vibrational to low energy
0866   // Anyway, solvation of electrons is taken into account from 7.4 eV
0867   // So below this threshold, for now, no accurate modeling is done
0868   //
0869   G4VProcess* process =
0870     G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAVibExcitation", "e-");
0871 
0872   if (process != nullptr) {
0873     auto* vibExcitation = (G4DNAVibExcitation*)process;
0874     G4VEmModel* model = vibExcitation->EmModel();
0875     auto* sancheExcitationMod = dynamic_cast<G4DNASancheExcitationModel*>(model);
0876     if (sancheExcitationMod != nullptr) {
0877       sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
0878     }
0879   }
0880 
0881   //===============================================================
0882   // *** Electron Solvatation ***
0883   //
0884   process = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
0885 
0886   if (process == nullptr) {
0887     ph->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
0888                         G4Electron::Definition());
0889   }
0890 
0891   //===============================================================
0892   // Define processes for molecules
0893   //
0894   G4MoleculeTable* theMoleculeTable = G4MoleculeTable::Instance();
0895   G4MoleculeDefinitionIterator iterator = theMoleculeTable->GetDefintionIterator();
0896   iterator.reset();
0897   while (iterator()) {
0898     G4MoleculeDefinition* moleculeDef = iterator.value();
0899 
0900     if (moleculeDef != G4H2O::Definition()) {
0901       auto brown = new G4DNABrownianTransportation();
0902       ph->RegisterProcess(brown, moleculeDef);
0903 
0904       if (moleculeDef == G4Electron_aq::Definition() || moleculeDef == G4OH::Definition()
0905           || moleculeDef == G4Hydrogen::Definition())
0906       {
0907         G4VDNAHitModel* pDamageModel = new IRTDamageReactionModel("IRTDamageReactionModel");
0908         auto staticMoleculeReactionProcess =
0909           new G4DNAPolyNucleotideReactionProcess("PolyNucleotideReactionProcess");
0910         staticMoleculeReactionProcess->SetVerbose(1);
0911         staticMoleculeReactionProcess->SetDNADamageReactionModel(pDamageModel);
0912         ph->RegisterProcess(staticMoleculeReactionProcess, moleculeDef);
0913       }
0914     }
0915     else {
0916       moleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
0917       auto* dissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay");
0918       dissociationProcess->SetDisplacer(moleculeDef, new G4DNAWaterDissociationDisplacer);
0919       dissociationProcess->SetVerboseLevel(3);
0920 
0921       moleculeDef->GetProcessManager()->AddRestProcess(dissociationProcess, 1);
0922     }
0923   }
0924 }
0925 
0926 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0927 
0928 void ChemistryList::ConstructTimeStepModel(G4DNAMolecularReactionTable*
0929                                            /*reactionTable*/)
0930 {
0931   G4ChemicalMoleculeFinder::Instance()->SetOctreeUsed(true);
0932   auto IRT = new G4DNAIndependentReactionTimeModel();
0933   RegisterTimeStepModel(IRT);
0934 }
0935 
0936 void ChemistryList::ConstructParticle()
0937 {
0938   ConstructMolecule();
0939 }