Back to home page

EIC code displayed by LXR

 
 

    


File indexing completed on 2025-01-31 09:22:02

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 /// \file G4EmDNAChemistry_option3_Extended.cc
0028 /// \brief Implementation of the G4EmDNAChemistry_option3_Extended class
0029 
0030 #include "G4EmDNAChemistry_option3_Extended.hh"
0031 
0032 #include "G4DNAMolecule.hh"
0033 #include "G4MoleculeTable.hh"
0034 
0035 // particles
0036 #include "G4H2O.hh"
0037 #include "G4H2.hh"
0038 #include "G4Hydrogen.hh"
0039 #include "G4OH.hh"
0040 #include "G4H3O.hh"
0041 #include "G4Electron_aq.hh"
0042 
0043 #include "G4H2O2.hh"
0044 #include "G4O2.hh"
0045 #include "G4HO2.hh"
0046 
0047 #include "G4PhysicalConstants.hh"
0048 #include "G4SystemOfUnits.hh"
0049 #include "G4DNAIndependentReactionTimeModel.hh"
0050 #include "G4DNAMolecularReactionTable.hh"
0051 
0052 #include "G4ChemicalMoleculeFinder.hh"
0053 // factory
0054 #include "G4PhysicsConstructorFactory.hh"
0055 
0056 G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option3_Extended);
0057 
0058 void G4EmDNAChemistry_option3_Extended::ConstructParticle()
0059 {
0060     ConstructMolecule(); //from G4EmDNAChemistry_option3
0061     //dna molecules 
0062     G4Deoxyribose::Definition();
0063     G4Phosphate::Definition();
0064     G4Adenine::Definition();
0065     G4Guanine::Definition();
0066     G4Thymine::Definition();
0067     G4Cytosine::Definition();
0068     G4Histone::Definition();
0069     //damaged molecules
0070     G4DamagedDeoxyribose::Definition();
0071     G4DamagedAdenine::Definition();
0072     G4DamagedGuanine::Definition();
0073     G4DamagedThymine::Definition();
0074     G4DamagedCytosine::Definition();
0075     G4ModifiedHistone::Definition();
0076     //________________DNA_______________________________________________
0077     auto table = G4MoleculeTable::Instance();
0078     table->CreateConfiguration("Deoxyribose",G4Deoxyribose::Definition());
0079     table->CreateConfiguration("Phosphate",G4Phosphate::Definition());
0080     table->CreateConfiguration("Adenine",G4Adenine::Definition());
0081     table->CreateConfiguration("Thymine",G4Thymine::Definition());
0082     table->CreateConfiguration("Guanine",G4Guanine::Definition());
0083     table->CreateConfiguration("Cytosine",G4Cytosine::Definition());
0084     table->CreateConfiguration("Histone",G4Histone::Definition());
0085   
0086     //damaged DNAElement Configuration
0087 
0088     table->CreateConfiguration("Damaged_Deoxyribose",
0089     G4DamagedDeoxyribose::Definition());
0090     table->CreateConfiguration("Damaged_Adenine",
0091     G4DamagedAdenine::Definition());
0092     table->CreateConfiguration("Damaged_Thymine",
0093     G4DamagedThymine::Definition());
0094     table->CreateConfiguration("Damaged_Guanine",
0095     G4DamagedGuanine::Definition());
0096     table->CreateConfiguration("Damaged_Cytosine",
0097     G4DamagedCytosine::Definition());
0098 }
0099 
0100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo......
0101 
0102 void G4EmDNAChemistry_option3_Extended::ConstructReactionTable(
0103     G4DNAMolecularReactionTable* theReactionTable)
0104 {
0105     G4EmDNAChemistry_option3::ConstructReactionTable(theReactionTable);//from G4EmDNAChemistry_option3
0106 
0107     //Get the molecular configuration
0108     auto table = G4MoleculeTable::Instance();
0109     G4MolecularConfiguration* OH = table->GetConfiguration("OH");
0110     G4MolecularConfiguration* OHm = table->GetConfiguration("OHm");
0111     G4MolecularConfiguration* e_aq = table->GetConfiguration("e_aq");
0112     G4MolecularConfiguration* H2 = table->GetConfiguration("H2");
0113     G4MolecularConfiguration* H3Op = table->GetConfiguration("H3Op");
0114     G4MolecularConfiguration* H = table->GetConfiguration("H");
0115     G4MolecularConfiguration* H2O2 = table->GetConfiguration("H2O2");
0116 
0117     // DNA additions--------------------------------------------------
0118     G4MolecularConfiguration* deoxyribose = table->GetConfiguration("Deoxyribose");
0119     G4MolecularConfiguration* adenine = table->GetConfiguration("Adenine");
0120     G4MolecularConfiguration* guanine = table->GetConfiguration("Guanine");
0121     G4MolecularConfiguration* thymine = table->GetConfiguration("Thymine");
0122     G4MolecularConfiguration* cytosine = table->GetConfiguration("Cytosine");
0123     G4MolecularConfiguration* histone = table->GetConfiguration("Histone");
0124 
0125     G4MolecularConfiguration* damage_deoxyribose = table->GetConfiguration("Damaged_Deoxyribose");
0126     G4MolecularConfiguration* damage_adenine = table->GetConfiguration("Damaged_Adenine");
0127     G4MolecularConfiguration* damage_guanine = table->GetConfiguration("Damaged_Guanine");
0128     G4MolecularConfiguration* damage_thymine = table->GetConfiguration("Damaged_Thymine");
0129     G4MolecularConfiguration* damage_cytosine = table->GetConfiguration("Damaged_Cytosine");
0130 
0131 
0132     // OH and DNA
0133 
0134     // 2-Deoxyribose + OH -> damagedDeoxyribose
0135     G4DNAMolecularReactionData* reactionData = new G4DNAMolecularReactionData(
0136     1.80e9*(1e-3*m3/(mole*s)), deoxyribose, OH);
0137     reactionData->AddProduct(damage_deoxyribose);
0138     reactionData->SetReactionType(1);
0139     theReactionTable->SetReaction(reactionData);
0140 
0141     // adenine + OH -> ...
0142     reactionData = new G4DNAMolecularReactionData(
0143     6.10e9*(1e-3*m3/(mole*s)), adenine, OH);
0144     reactionData->AddProduct(damage_adenine);
0145     reactionData->SetReactionType(1);
0146     theReactionTable->SetReaction(reactionData);
0147 
0148     // guanine + OH -> ...
0149     reactionData = new G4DNAMolecularReactionData(
0150     9.20e9*(1e-3*m3/(mole*s)), guanine, OH);
0151     reactionData->AddProduct(damage_guanine);
0152     reactionData->SetReactionType(1);
0153     theReactionTable->SetReaction(reactionData);
0154 
0155     // thymine + OH -> ...
0156     reactionData = new G4DNAMolecularReactionData(
0157     6.40e9*(1e-3*m3/(mole*s)), thymine, OH);
0158     reactionData->AddProduct(damage_thymine);
0159     reactionData->SetReactionType(1);
0160     theReactionTable->SetReaction(reactionData);
0161 
0162     // cytosine + OH -> ...
0163     reactionData = new G4DNAMolecularReactionData(
0164     6.10e9*(1e-3*m3/(mole*s)), cytosine, OH);
0165     reactionData->AddProduct(damage_cytosine);
0166     reactionData->SetReactionType(1);
0167     theReactionTable->SetReaction(reactionData);
0168 
0169     // Hydrated e- and DNA
0170 
0171     // Deoxyribose + Hydrated e-  -> ...
0172     reactionData = new G4DNAMolecularReactionData(
0173     0.01e9*(1e-3*m3/(mole*s)), deoxyribose, e_aq);
0174     reactionData->AddProduct(damage_deoxyribose);
0175     reactionData->SetReactionType(1);
0176     theReactionTable->SetReaction(reactionData);
0177 
0178     // adenine + Hydrated e- -> ...
0179     reactionData = new G4DNAMolecularReactionData(
0180     9e9*(1e-3*m3/(mole*s)), adenine, e_aq);
0181     reactionData->AddProduct(damage_adenine);
0182     reactionData->SetReactionType(1);
0183     theReactionTable->SetReaction(reactionData);
0184 
0185     // guanine + Hydrated e- -> ...
0186     reactionData = new G4DNAMolecularReactionData(
0187     14e9*(1e-3*m3/(mole*s)), guanine, e_aq);
0188     reactionData->AddProduct(damage_guanine);
0189     reactionData->SetReactionType(1);
0190     theReactionTable->SetReaction(reactionData);
0191 
0192     // thymine + Hydrated e- -> ...
0193     reactionData = new G4DNAMolecularReactionData(
0194     18e9*(1e-3*m3/(mole*s)), thymine, e_aq);
0195     reactionData->AddProduct(damage_thymine);
0196     reactionData->SetReactionType(1);
0197     theReactionTable->SetReaction(reactionData);
0198 
0199     // cytosine + Hydrated e- -> ...
0200     reactionData = new G4DNAMolecularReactionData(
0201     13e9*(1e-3*m3/(mole*s)), cytosine, e_aq);
0202     reactionData->AddProduct(damage_cytosine);
0203     reactionData->SetReactionType(1);
0204     theReactionTable->SetReaction(reactionData);
0205 
0206     // Radical H and DNA
0207 
0208     // Deoxyribose + Radical H -> ...
0209     reactionData = new G4DNAMolecularReactionData(
0210     0.029e9*(1e-3*m3/(mole*s)), deoxyribose, H);
0211     reactionData->AddProduct(damage_deoxyribose);
0212     reactionData->SetReactionType(1);
0213     theReactionTable->SetReaction(reactionData);
0214 
0215     // adenine + Radical H -> ...
0216     reactionData = new G4DNAMolecularReactionData(
0217     0.10e9*(1e-3*m3/(mole*s)), adenine, H);
0218     reactionData->AddProduct(damage_adenine);
0219     reactionData->SetReactionType(1);
0220     theReactionTable->SetReaction(reactionData);
0221 
0222     // thymine + Radical H -> ...
0223     reactionData = new G4DNAMolecularReactionData(
0224     0.57e9*(1e-3*m3/(mole*s)), thymine, H);
0225     reactionData->AddProduct(damage_thymine);
0226     reactionData->SetReactionType(1);
0227     theReactionTable->SetReaction(reactionData);
0228 
0229     // cytosine + Radical H -> ...
0230     reactionData = new G4DNAMolecularReactionData(
0231     0.092e9*(1e-3*m3/(mole*s)), cytosine, H);
0232     reactionData->AddProduct(damage_cytosine);
0233     reactionData->SetReactionType(1);
0234     theReactionTable->SetReaction(reactionData);
0235 
0236     //histone + all molecules -> modification(or "damage")
0237 
0238     reactionData = new G4DNAMolecularReactionData(
0239     0.0*(1e-3*m3/(mole*s)), histone, OH);
0240     reactionData->AddProduct(histone);
0241     reactionData->SetEffectiveReactionRadius(
0242     2.4*nm + G4OH::Definition()->GetVanDerVaalsRadius());
0243     reactionData->SetReactionType(1);
0244     theReactionTable->SetReaction(reactionData);
0245 
0246     reactionData = new G4DNAMolecularReactionData(
0247     0.0*(1e-3*m3/(mole*s)), histone, OHm);
0248     reactionData->AddProduct(histone);
0249     reactionData->SetEffectiveReactionRadius(
0250     2.4*nm + G4OH::Definition()->GetVanDerVaalsRadius());
0251     reactionData->SetReactionType(1);
0252     theReactionTable->SetReaction(reactionData);
0253 
0254     reactionData = new G4DNAMolecularReactionData(
0255     0.0*(1e-3*m3/(mole*s)), histone, e_aq);
0256     reactionData->AddProduct(histone);
0257     reactionData->SetEffectiveReactionRadius(
0258     2.4*nm + G4Electron_aq::Definition()->GetVanDerVaalsRadius());
0259     reactionData->SetReactionType(1);
0260     theReactionTable->SetReaction(reactionData);
0261 
0262     reactionData = new G4DNAMolecularReactionData(
0263     0.0*(1e-3*m3/(mole*s)), histone, H2);
0264     reactionData->AddProduct(histone);
0265     reactionData->SetEffectiveReactionRadius(
0266     2.4*nm + G4H2::Definition()->GetVanDerVaalsRadius());
0267     reactionData->SetReactionType(1);
0268     theReactionTable->SetReaction(reactionData);
0269 
0270     reactionData = new G4DNAMolecularReactionData(
0271     0.0*(1e-3*m3/(mole*s)), histone, H3Op);
0272     reactionData->AddProduct(histone);
0273     reactionData->SetEffectiveReactionRadius(
0274     2.4*nm + G4H3O::Definition()->GetVanDerVaalsRadius());
0275     reactionData->SetReactionType(1);
0276     theReactionTable->SetReaction(reactionData);
0277 
0278     reactionData = new G4DNAMolecularReactionData(
0279     0.0*(1e-3*m3/(mole*s)), histone, H);
0280     reactionData->AddProduct(histone);
0281     reactionData->SetEffectiveReactionRadius(
0282     2.4*nm + G4Hydrogen::Definition()->GetVanDerVaalsRadius());
0283     reactionData->SetReactionType(1);
0284     theReactionTable->SetReaction(reactionData);
0285 
0286     reactionData = new G4DNAMolecularReactionData(
0287     0.0*(1e-3*m3/(mole*s)), histone, H2O2);
0288     reactionData->AddProduct(histone);
0289     reactionData->SetEffectiveReactionRadius(
0290     2.4*nm + G4H2O2::Definition()->GetVanDerVaalsRadius());
0291     reactionData->SetReactionType(1);
0292     theReactionTable->SetReaction(reactionData);
0293 }
0294