Back to home page

EIC code displayed by LXR

 
 

    


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

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 #include "EmDNAChemistry.hh"
0027 
0028 #include "G4DNAChemistryManager.hh"
0029 #include "G4DNAWaterDissociationDisplacer.hh"
0030 #include "G4ProcessManager.hh"
0031 #include "G4SystemOfUnits.hh"
0032 
0033 // *** Processes and models for Geant4-DNA
0034 
0035 #include "BoundedBrownianAction.hh"
0036 
0037 #include "G4DNABrownianTransportation.hh"
0038 #include "G4DNAElectronHoleRecombination.hh"
0039 #include "G4DNAElectronSolvation.hh"
0040 #include "G4DNAMolecularDissociation.hh"
0041 #include "G4DNAMolecularReactionTable.hh"
0042 #include "G4DNAMolecularStepByStepModel.hh"
0043 #include "G4DNASancheExcitationModel.hh"
0044 #include "G4DNASmoluchowskiReactionModel.hh"
0045 #include "G4DNAVibExcitation.hh"
0046 // particles
0047 
0048 #include "G4Electron.hh"
0049 #include "G4Electron_aq.hh"
0050 #include "G4H2O.hh"
0051 #include "G4H2O2.hh"
0052 #include "G4H3O.hh"
0053 #include "G4HO2.hh"
0054 #include "G4Hydrogen.hh"
0055 #include "G4MoleculeTable.hh"
0056 #include "G4O2.hh"
0057 #include "G4O3.hh"
0058 #include "G4OH.hh"
0059 #include "G4Oxygen.hh"
0060 #include "G4PhysicsListHelper.hh"
0061 /****/
0062 #include "G4DNAMoleculeEncounterStepper.hh"
0063 #include "G4DNAScavengerProcess.hh"
0064 #include "G4MolecularConfiguration.hh"
0065 #include "G4ProcessTable.hh"
0066 #include "G4VChemistryWorld.hh"
0067 /****/
0068 #include "G4ChemicalMoleculeFinder.hh"
0069 // factory
0070 #include "ChemOxygenWaterBuilder.hh"
0071 #include "ChemPureWaterBuilder.hh"
0072 
0073 #include "G4ChemDissociationChannels_option1.hh"
0074 #include "G4PhysicsConstructorFactory.hh"
0075 
0076 G4_DECLARE_PHYSCONSTR_FACTORY(EmDNAChemistry);
0077 
0078 EmDNAChemistry::EmDNAChemistry() : G4VUserChemistryList(true)
0079 {
0080   G4DNAChemistryManager::Instance()->SetChemistryList(this);
0081 }
0082 
0083 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0084 
0085 EmDNAChemistry::~EmDNAChemistry() = default;
0086 
0087 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0088 
0089 void EmDNAChemistry::ConstructMolecule()
0090 {
0091   G4ChemDissociationChannels_option1::ConstructMolecule();
0092   auto table = G4MoleculeTable::Instance();
0093 
0094   auto H3OpB = table->GetConfiguration("H3Op(B)");
0095   H3OpB->SetDiffusionCoefficient(9.46e-9 * (m2 / s));
0096 
0097   auto OHm = table->GetConfiguration("OHm(B)");
0098   OHm->SetDiffusionCoefficient(5.3e-9 * (m2 / s));
0099   table->CreateConfiguration("H2O", G4H2O::Definition());
0100 
0101   auto G4NO2 = new G4MoleculeDefinition("NO_2", /*mass*/ 30,
0102                                         /*D*/ 0 * (m * m / s),
0103                                         /*charge*/ 0,
0104                                         /*electronL*/ 0,
0105                                         /*radius*/ 0.17 * nm);  // should be corrected
0106 
0107   auto G4NO3 = new G4MoleculeDefinition("NO_3", /*mass*/ 38,
0108                                         /*D*/ 0 * (m * m / s),
0109                                         /*charge*/ 0,
0110                                         /*electronL*/ 0,
0111                                         /*radius*/ 0.17 * nm);  // should be corrected
0112 
0113   table->CreateConfiguration("NO2", G4NO2);
0114   table->CreateConfiguration("NO2m", G4NO2,
0115                              -1,  // charge
0116                              0 * (m2 / s));
0117   table->CreateConfiguration("NO2mm", G4NO2,
0118                              -2,  // charge
0119                              0 * (m2 / s));
0120 
0121   table->CreateConfiguration("NO3m", G4NO3,
0122                              -1,  // charge
0123                              0 * (m2 / s));
0124 
0125   table->CreateConfiguration("NO3mm", G4NO3,
0126                              -2,  // charge
0127                              0 * (m2 / s));
0128 
0129   // FrickeDosimeter
0130   auto G4Fe = new G4MoleculeDefinition("Fe",
0131                                        /*mass*/ 55.84 * g / Avogadro * c_squared,
0132                                        /*D*/ 0 * (m * m / s),
0133                                        /*charge*/ 0,
0134                                        /*electronL*/ 0,
0135                                        /*radius*/ 0.35 * nm);  // can be adjusted
0136 
0137   table->CreateConfiguration("Fe0", G4Fe);
0138 
0139   table->CreateConfiguration("Feppp", G4Fe,
0140                              3,  // charge
0141                              4.86e-10 * (m2 / s));  // Michael Spiro* and Andrew M. Creeth
0142 
0143   table->CreateConfiguration("Fepp", G4Fe,
0144                              2,  // charge
0145                              5.78e-10 * (m2 / s));
0146   // HSO4-
0147   auto G4HSO4 = new G4MoleculeDefinition("HSO4",
0148                                          /*mass*/ 55.84 * g / Avogadro * c_squared,
0149                                          /*D*/ 0 * (m * m / s),
0150                                          /*charge*/ 0,
0151                                          /*electronL*/ 0,
0152                                          /*radius*/ 0.35 * nm);  // can be adjusted
0153   table->CreateConfiguration("HSO4m", G4HSO4,
0154                              -1,  // charge
0155                              0 * (m2 / s));
0156 
0157   // SO4-
0158   auto G4SO4 = new G4MoleculeDefinition("SO4",
0159                                         /*mass*/ 55.84 * g / Avogadro * c_squared,
0160                                         /*D*/ 0 * (m * m / s),
0161                                         /*charge*/ 0,
0162                                         /*electronL*/ 0,
0163                                         /*radius*/ 0.35 * nm);  // can be adjusted
0164   table->CreateConfiguration("SO4m", G4SO4,
0165                              -1,  // charge
0166                              0 * (m2 / s));
0167 }
0168 
0169 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0170 
0171 void EmDNAChemistry::ConstructDissociationChannels()
0172 {
0173   G4ChemDissociationChannels_option1::ConstructDissociationChannels();
0174 }
0175 
0176 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0177 
0178 void EmDNAChemistry::ConstructReactionTable(G4DNAMolecularReactionTable* pReactionTable)
0179 {
0180   ChemOxygenWaterBuilder::OxygenScavengerReaction(pReactionTable);
0181   ChemOxygenWaterBuilder::SecondOrderReactionExtended(pReactionTable);
0182   ChemPureWaterBuilder::WaterScavengerReaction(pReactionTable);
0183 }
0184 
0185 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0186 
0187 void EmDNAChemistry::ConstructProcess()
0188 {
0189   auto table = G4MoleculeTable::Instance();
0190   auto O2 = table->GetConfiguration("O2");
0191   auto O2m = table->GetConfiguration("O2m");
0192   auto HO2 = table->GetConfiguration("HO2");
0193 
0194   auto e_aq = table->GetConfiguration("e_aq");
0195   auto OH = table->GetConfiguration("OH");
0196   auto OHm = table->GetConfiguration("OHm");
0197 
0198   auto NO2 = table->GetConfiguration("NO2");
0199   auto NO2m = table->GetConfiguration("NO2m");
0200   auto NO2mm = table->GetConfiguration("NO2mm");
0201   auto NO3m = table->GetConfiguration("NO3m");
0202   auto NO3mm = table->GetConfiguration("NO3mm");
0203 
0204   auto H2O2 = table->GetConfiguration("H2O2");
0205   auto H = table->GetConfiguration("H");
0206 
0207   auto* H3OpB = table->GetConfiguration("H3Op(B)");
0208   auto* OHmB = table->GetConfiguration("OHm(B)");
0209   auto* HO2m = table->GetConfiguration("HO2m");
0210   auto* Om = table->GetConfiguration("Om");
0211   auto* O3m = table->GetConfiguration("O3m");
0212   auto* H3Op = table->GetConfiguration("H3Op");
0213 
0214   fpChemistryWorld->ConstructChemistryComponents();
0215   auto confinedBox = fpChemistryWorld->GetChemistryBoundary();
0216 
0217   auto* ph = G4PhysicsListHelper::GetPhysicsListHelper();
0218 
0219   //===============================================================
0220   // Extend vibrational to low energy
0221   // Anyway, solvation of electrons is taken into account from 7.4 eV
0222   // So below this threshold, for now, no accurate modeling is done
0223   //
0224   G4VProcess* process =
0225     G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAVibExcitation", "e-");
0226 
0227   if (process) {
0228     auto vibExcitation = (G4DNAVibExcitation*)process;
0229     G4VEmModel* model = vibExcitation->EmModel();
0230     auto sancheExcitationMod = dynamic_cast<G4DNASancheExcitationModel*>(model);
0231     if (sancheExcitationMod) {
0232       sancheExcitationMod->ExtendLowEnergyLimit(0.025 * eV);
0233     }
0234   }
0235 
0236   //===============================================================
0237   // *** Electron Solvatation ***
0238   //
0239   process = G4ProcessTable::GetProcessTable()->FindProcess("e-_G4DNAElectronSolvation", "e-");
0240 
0241   if (process == nullptr) {
0242     ph->RegisterProcess(new G4DNAElectronSolvation("e-_G4DNAElectronSolvation"),
0243                         G4Electron::Definition());
0244   }
0245 
0246   //===============================================================
0247   // Define processes for molecules
0248   //
0249   auto* theMoleculeTable = G4MoleculeTable::Instance();
0250   auto iterator = theMoleculeTable->GetDefintionIterator();
0251   iterator.reset();
0252 
0253   while (iterator()) {
0254     auto* moleculeDef = iterator.value();
0255 
0256     if (moleculeDef != G4H2O::Definition()) {
0257       auto brown = new G4DNABrownianTransportation("BrowianTransportation");
0258       // hoang exp
0259       auto brownTransport = new BoundedBrownianAction();
0260       brownTransport->SetBoundary(*confinedBox);
0261       brown->SetUserBrownianAction(brownTransport);
0262       // hoang exp
0263 
0264       ph->RegisterProcess(brown, moleculeDef);
0265     }
0266     else {
0267       moleculeDef->GetProcessManager()->AddRestProcess(new G4DNAElectronHoleRecombination(), 2);
0268       auto brownTransport = new BoundedBrownianAction();
0269       brownTransport->SetBoundary(*confinedBox);
0270       auto dissociationProcess = new G4DNAMolecularDissociation("H2O_DNAMolecularDecay", fDecay);
0271       dissociationProcess->SetUserBrownianAction(brownTransport);
0272       dissociationProcess->SetDisplacer(moleculeDef, new G4DNAWaterDissociationDisplacer);
0273       moleculeDef->GetProcessManager()->AddRestProcess(dissociationProcess, 1);
0274     }
0275 
0276     if (moleculeDef == G4Hydrogen::Definition()) {
0277       // O2
0278       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0279       //------------------------------------------------------------------
0280       // H + O2(B) -> HO2
0281       auto reactionData = new G4DNAMolecularReactionData(1.3e10 * (1e-3 * m3 / (mole * s)), H, O2);
0282       reactionData->AddProduct(HO2);
0283       scanvergerProcess->SetReaction(H, reactionData);
0284       //------------------------------------------------------------------
0285       // H + OH-(B) -> H2O + eaq- 2.49e3 / s
0286       reactionData = new G4DNAMolecularReactionData(2.49e7 * (1e-3 * m3 / (mole * s)), H,
0287                                                     OHmB);  // 2.51e7 (H + OH-)* 1e-7 (pH) = 2.48e0
0288       reactionData->AddProduct(e_aq);
0289       scanvergerProcess->SetReaction(H, reactionData);
0290 
0291       // H2O2
0292       //------------------------------------------------------------------
0293       // H + H202 -> OH + H20
0294       //            reactionData = new G4DNAMolecularReactionData(
0295       //                    9.0e7 * (1e-3 * m3 / (mole * s)), H,H2O2);
0296       //            reactionData->AddProduct(OH);
0297       //            scanvergerProcess->SetReaction(H,reactionData);
0298       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0299     }
0300     if (moleculeDef == G4Electron_aq::Definition()) {
0301       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0302       G4DNAMolecularReactionData* reactionData = nullptr;
0303       //------------------------------------------------------------------
0304       // e_aq + O2(B) -> O2-
0305       reactionData = new G4DNAMolecularReactionData(2.3e10 * (1e-3 * m3 / (mole * s)), e_aq, O2);
0306       reactionData->AddProduct(O2m);
0307       scanvergerProcess->SetReaction(e_aq, reactionData);
0308       //------------------------------------------------------------------
0309       // eaq- + H3O+(B) -> H + H2O 2.09e3 / s
0310       reactionData =
0311         new G4DNAMolecularReactionData(2.25e10 * (1e-3 * m3 / (mole * s)), e_aq,
0312                                        H3OpB);  // 2.11e10 (e_aq + H3O+) * 1.0e-7 (Ph=7) = 2.09e3
0313       reactionData->AddProduct(H);
0314       scanvergerProcess->SetReaction(e_aq, reactionData);
0315       //------------------------------------------------------------------
0316       // e_aq + NO2- -> NO2--
0317       reactionData = new G4DNAMolecularReactionData(3.5e9 * (1e-3 * m3 / (mole * s)), e_aq, NO2m);
0318       reactionData->AddProduct(NO2mm);
0319       scanvergerProcess->SetReaction(e_aq, reactionData);
0320       //------------------------------------------------------------------
0321       // e_aq + NO3- -> NO3--
0322       reactionData = new G4DNAMolecularReactionData(9.7e9 * (1e-3 * m3 / (mole * s)), e_aq, NO3m);
0323       reactionData->AddProduct(NO3mm);
0324       scanvergerProcess->SetReaction(e_aq, reactionData);
0325       //------------------------------------------------------------------
0326 
0327       // H2O2 + e aq → OHm + OH
0328       //            reactionData = new G4DNAMolecularReactionData(
0329       //                    1.1e10 * (1e-3 * m3 / (mole * s)), e_aq, H2O2);//or
0330       //            reactionData->AddProduct(OHm);
0331       //            reactionData->AddProduct(OH);
0332       //            scanvergerProcess->SetReaction(e_aq,reactionData);
0333 
0334       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0335     }
0336     if (moleculeDef == G4O2::Definition()) {
0337       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0338       G4DNAMolecularReactionData* reactionData = nullptr;
0339       //------------------------------------------------------------------
0340       // O2- + H3O+(B) -> HO2 + H2O 4.73e3 / s
0341       reactionData =
0342         new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), O2m,
0343                                        H3OpB);  // 4.78e10(O2- + H3O+) * 1e-7(pH7) = 4.73e3
0344       reactionData->AddProduct(HO2);
0345       scanvergerProcess->SetReaction(O2m, reactionData);
0346       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0347     }
0348     if (moleculeDef == G4ParticleTable::GetParticleTable()->FindParticle("OHm")) {
0349       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0350       G4DNAMolecularReactionData* reactionData = nullptr;
0351       //------------------------------------------------------------------
0352       // OH- + H3O+(B) -> 2H2O 1.11e4 / s
0353       reactionData =
0354         new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), OHm,
0355                                        H3OpB);  // 1.13e11 (H3O+ + OH-) * 1e-7 (pH=7) =1.12e4
0356       scanvergerProcess->SetReaction(OHm, reactionData);
0357       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0358     }
0359     if (moleculeDef == G4OH::Definition()) {
0360       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0361       G4DNAMolecularReactionData* reactionData = nullptr;
0362 
0363       //------------------------------------------------------------------
0364       // OH + OH-(B) -> O- + H2O 6.24e2 / s
0365       reactionData =
0366         new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), OH,
0367                                        OHmB);  // 6.30e9 (OH + OH-) * 1e-7 (pH) = 6.24e2
0368       reactionData->AddProduct(Om);
0369       scanvergerProcess->SetReaction(OH, reactionData);
0370 
0371       //------------------------------------------------------------------
0372       // OH + NO2- -> NO2 + OH-
0373       reactionData = new G4DNAMolecularReactionData(8e9 * (1e-3 * m3 / (mole * s)), OH, NO2m);
0374       reactionData->AddProduct(NO2);
0375       reactionData->AddProduct(OHm);
0376       scanvergerProcess->SetReaction(OH, reactionData);
0377       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0378     }
0379     if (moleculeDef == G4ParticleTable::GetParticleTable()->FindParticle("HO_2m")) {
0380       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0381       G4DNAMolecularReactionData* reactionData = nullptr;
0382       //------------------------------------------------------------------
0383       // HO2- + H3O+(B) -> H2O2 + H2O 4.98e3 / s
0384       reactionData =
0385         new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), HO2m,
0386                                        H3OpB);  // 5.00e10 (H3O+ + HO2-) * 1e-7(pH) = 4.95e3
0387       reactionData->AddProduct(H2O2);
0388       scanvergerProcess->SetReaction(HO2m, reactionData);
0389       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0390     }
0391 
0392     if (moleculeDef == G4HO2::Definition()) {
0393       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0394       G4DNAMolecularReactionData* reactionData = nullptr;
0395       //------------------------------------------------------------------
0396       // HO2 + OH-(B) -> O2- + H2O 6.24e2 / s
0397       reactionData = new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), HO2,
0398                                                     OHmB);  // 6.30e9(HO2 + OH-)*1e-7 (pH) = 6.24e2
0399       reactionData->AddProduct(O2m);
0400       scanvergerProcess->SetReaction(HO2, reactionData);
0401       //------------------------------------------------------------------
0402       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0403     }
0404     if (moleculeDef == G4Oxygen::Definition()) {
0405       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0406       G4DNAMolecularReactionData* reactionData = nullptr;
0407       //------------------------------------------------------------------
0408       // O- + H3O+(B) -> OH + H2O 4.73e3 / s
0409       reactionData =
0410         new G4DNAMolecularReactionData(4.78e10 * (1e-3 * m3 / (mole * s)), Om,
0411                                        H3OpB);  // 4.78e10 (H3O+ + O2-) * 1e-7(pH) = 4.73e3
0412       reactionData->AddProduct(OH);
0413       scanvergerProcess->SetReaction(Om, reactionData);
0414       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0415     }
0416     if (moleculeDef == G4O3::Definition()) {
0417       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0418       G4DNAMolecularReactionData* reactionData = nullptr;
0419       //------------------------------------------------------------------
0420       // O3- + H3O+(B) -> OH + O2 + H2O 8.91e3 / s
0421       reactionData =
0422         new G4DNAMolecularReactionData(9.0e10 * (1e-3 * m3 / (mole * s)), O3m,
0423                                        H3OpB);  // 9.0e10 (O3- + H3O+) * 1e-7(pH) = 8.91e3
0424       reactionData->AddProduct(OH);
0425       reactionData->AddProduct(O2);
0426       //------------------------------------------------------------------
0427       scanvergerProcess->SetReaction(O3m, reactionData);
0428       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0429     }
0430     if (moleculeDef == G4H3O::Definition()) {
0431       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0432       G4DNAMolecularReactionData* reactionData = nullptr;
0433       //------------------------------------------------------------------
0434       // H3O+ + OH-(B) -> 2H2O 1.11e4 / s
0435       reactionData =
0436         new G4DNAMolecularReactionData(1.13e11 * (1e-3 * m3 / (mole * s)), H3Op,
0437                                        OHmB);  // 1.13e11 (H3O+ + OH-) * 1e-7 (pH=7) = 1.12e4
0438       scanvergerProcess->SetReaction(H3Op, reactionData);
0439       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0440     }
0441     if (moleculeDef == G4H2O2::Definition()) {
0442       auto scanvergerProcess = new G4DNAScavengerProcess("G4DNAScavengerProcess", *confinedBox);
0443       G4DNAMolecularReactionData* reactionData = nullptr;
0444       //------------------------------------------------------------------
0445       // H2O2 + OH-(B) -> HO2- + H2O 4.66e2 / s
0446       reactionData =
0447         new G4DNAMolecularReactionData(1.27e10 * (1e-3 * m3 / (mole * s)), H2O2,
0448                                        OHmB);  // 4.71e8 (H2O2 + OH-) * 1e-7 (pH) = 4.66e1
0449       reactionData->AddProduct(HO2m);
0450       scanvergerProcess->SetReaction(H2O2, reactionData);
0451       ph->RegisterProcess(scanvergerProcess, moleculeDef);
0452     }
0453   }
0454   G4DNAChemistryManager::Instance()->Initialize();
0455 }
0456 
0457 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0458 
0459 void EmDNAChemistry::ConstructTimeStepModel(G4DNAMolecularReactionTable* reactionTable)
0460 {
0461   auto reactionRadiusComputer = new G4DNASmoluchowskiReactionModel();
0462   reactionTable->PrintTable(reactionRadiusComputer);
0463   auto stepByStep = new G4DNAMolecularStepByStepModel();
0464   stepByStep->SetReactionModel(reactionRadiusComputer);
0465   RegisterTimeStepModel(stepByStep, 0);
0466 }
0467 
0468 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......