Geant4 Cross Reference |
1 // 2 // ******************************************************************** 3 // * License and Disclaimer * 4 // * * 5 // * The Geant4 software is copyright of the Copyright Holders of * 6 // * the Geant4 Collaboration. It is provided under the terms and * 7 // * conditions of the Geant4 Software License, included in the file * 8 // * LICENSE and available at http://cern.ch/geant4/license . These * 9 // * include a list of copyright holders. * 10 // * * 11 // * Neither the authors of this software system, nor their employing * 12 // * institutes,nor the agencies providing financial support for this * 13 // * work make any representation or warranty, express or implied, * 14 // * regarding this software system or assume any liability for its * 15 // * use. Please see the license in the file LICENSE and URL above * 16 // * for the full disclaimer and the limitation of liability. * 17 // * * 18 // * This code implementation is the result of the scientific and * 19 // * technical work of the GEANT4 collaboration. * 20 // * By using, copying, modifying or distributing the software (or * 21 // * any work based on the software) you agree to acknowledge its * 22 // * use in resulting scientific publications, and indicate your * 23 // * acceptance of all terms of the Geant4 Software license. * 24 // ******************************************************************** 25 // 26 // 27 /// \file G4EmDNAChemistry_option3_Extended.cc 28 /// \brief Implementation of the G4EmDNAChemistry_option3_Extended class 29 30 #include "G4EmDNAChemistry_option3_Extended.hh" 31 32 #include "G4DNAMolecule.hh" 33 #include "G4MoleculeTable.hh" 34 35 // particles 36 #include "G4H2O.hh" 37 #include "G4H2.hh" 38 #include "G4Hydrogen.hh" 39 #include "G4OH.hh" 40 #include "G4H3O.hh" 41 #include "G4Electron_aq.hh" 42 43 #include "G4H2O2.hh" 44 #include "G4O2.hh" 45 #include "G4HO2.hh" 46 47 #include "G4PhysicalConstants.hh" 48 #include "G4SystemOfUnits.hh" 49 #include "G4DNAIndependentReactionTimeModel.hh" 50 #include "G4DNAMolecularReactionTable.hh" 51 52 #include "G4ChemicalMoleculeFinder.hh" 53 // factory 54 #include "G4PhysicsConstructorFactory.hh" 55 56 G4_DECLARE_PHYSCONSTR_FACTORY(G4EmDNAChemistry_option3_Extended); 57 58 void G4EmDNAChemistry_option3_Extended::ConstructParticle() 59 { 60 ConstructMolecule(); //from G4EmDNAChemistry_option3 61 //dna molecules 62 G4Deoxyribose::Definition(); 63 G4Phosphate::Definition(); 64 G4Adenine::Definition(); 65 G4Guanine::Definition(); 66 G4Thymine::Definition(); 67 G4Cytosine::Definition(); 68 G4Histone::Definition(); 69 //damaged molecules 70 G4DamagedDeoxyribose::Definition(); 71 G4DamagedAdenine::Definition(); 72 G4DamagedGuanine::Definition(); 73 G4DamagedThymine::Definition(); 74 G4DamagedCytosine::Definition(); 75 G4ModifiedHistone::Definition(); 76 //________________DNA_______________________________________________ 77 auto table = G4MoleculeTable::Instance(); 78 table->CreateConfiguration("Deoxyribose",G4Deoxyribose::Definition()); 79 table->CreateConfiguration("Phosphate",G4Phosphate::Definition()); 80 table->CreateConfiguration("Adenine",G4Adenine::Definition()); 81 table->CreateConfiguration("Thymine",G4Thymine::Definition()); 82 table->CreateConfiguration("Guanine",G4Guanine::Definition()); 83 table->CreateConfiguration("Cytosine",G4Cytosine::Definition()); 84 table->CreateConfiguration("Histone",G4Histone::Definition()); 85 86 //damaged DNAElement Configuration 87 88 table->CreateConfiguration("Damaged_Deoxyribose", 89 G4DamagedDeoxyribose::Definition()); 90 table->CreateConfiguration("Damaged_Adenine", 91 G4DamagedAdenine::Definition()); 92 table->CreateConfiguration("Damaged_Thymine", 93 G4DamagedThymine::Definition()); 94 table->CreateConfiguration("Damaged_Guanine", 95 G4DamagedGuanine::Definition()); 96 table->CreateConfiguration("Damaged_Cytosine", 97 G4DamagedCytosine::Definition()); 98 } 99 100 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 101 102 void G4EmDNAChemistry_option3_Extended::ConstructReactionTable( 103 G4DNAMolecularReactionTable* theReactionTable) 104 { 105 G4EmDNAChemistry_option3::ConstructReactionTable(theReactionTable);//from G4EmDNAChemistry_option3 106 107 //Get the molecular configuration 108 auto table = G4MoleculeTable::Instance(); 109 G4MolecularConfiguration* OH = table->GetConfiguration("°OH"); 110 G4MolecularConfiguration* OHm = table->GetConfiguration("OHm"); 111 G4MolecularConfiguration* e_aq = table->GetConfiguration("e_aq"); 112 G4MolecularConfiguration* H2 = table->GetConfiguration("H2"); 113 G4MolecularConfiguration* H3Op = table->GetConfiguration("H3Op"); 114 G4MolecularConfiguration* H = table->GetConfiguration("H"); 115 G4MolecularConfiguration* H2O2 = table->GetConfiguration("H2O2"); 116 117 // DNA additions-------------------------------------------------- 118 G4MolecularConfiguration* deoxyribose = table->GetConfiguration("Deoxyribose"); 119 G4MolecularConfiguration* adenine = table->GetConfiguration("Adenine"); 120 G4MolecularConfiguration* guanine = table->GetConfiguration("Guanine"); 121 G4MolecularConfiguration* thymine = table->GetConfiguration("Thymine"); 122 G4MolecularConfiguration* cytosine = table->GetConfiguration("Cytosine"); 123 G4MolecularConfiguration* histone = table->GetConfiguration("Histone"); 124 125 G4MolecularConfiguration* damage_deoxyribose = table->GetConfiguration("Damaged_Deoxyribose"); 126 G4MolecularConfiguration* damage_adenine = table->GetConfiguration("Damaged_Adenine"); 127 G4MolecularConfiguration* damage_guanine = table->GetConfiguration("Damaged_Guanine"); 128 G4MolecularConfiguration* damage_thymine = table->GetConfiguration("Damaged_Thymine"); 129 G4MolecularConfiguration* damage_cytosine = table->GetConfiguration("Damaged_Cytosine"); 130 131 132 // OH and DNA 133 134 // 2-Deoxyribose + OH -> damagedDeoxyribose 135 G4DNAMolecularReactionData* reactionData = new G4DNAMolecularReactionData( 136 1.80e9*(1e-3*m3/(mole*s)), deoxyribose, OH); 137 reactionData->AddProduct(damage_deoxyribose); 138 reactionData->SetReactionType(1); 139 theReactionTable->SetReaction(reactionData); 140 141 // adenine + OH -> ... 142 reactionData = new G4DNAMolecularReactionData( 143 6.10e9*(1e-3*m3/(mole*s)), adenine, OH); 144 reactionData->AddProduct(damage_adenine); 145 reactionData->SetReactionType(1); 146 theReactionTable->SetReaction(reactionData); 147 148 // guanine + OH -> ... 149 reactionData = new G4DNAMolecularReactionData( 150 9.20e9*(1e-3*m3/(mole*s)), guanine, OH); 151 reactionData->AddProduct(damage_guanine); 152 reactionData->SetReactionType(1); 153 theReactionTable->SetReaction(reactionData); 154 155 // thymine + OH -> ... 156 reactionData = new G4DNAMolecularReactionData( 157 6.40e9*(1e-3*m3/(mole*s)), thymine, OH); 158 reactionData->AddProduct(damage_thymine); 159 reactionData->SetReactionType(1); 160 theReactionTable->SetReaction(reactionData); 161 162 // cytosine + OH -> ... 163 reactionData = new G4DNAMolecularReactionData( 164 6.10e9*(1e-3*m3/(mole*s)), cytosine, OH); 165 reactionData->AddProduct(damage_cytosine); 166 reactionData->SetReactionType(1); 167 theReactionTable->SetReaction(reactionData); 168 169 // Hydrated e- and DNA 170 171 // Deoxyribose + Hydrated e- -> ... 172 reactionData = new G4DNAMolecularReactionData( 173 0.01e9*(1e-3*m3/(mole*s)), deoxyribose, e_aq); 174 reactionData->AddProduct(damage_deoxyribose); 175 reactionData->SetReactionType(1); 176 theReactionTable->SetReaction(reactionData); 177 178 // adenine + Hydrated e- -> ... 179 reactionData = new G4DNAMolecularReactionData( 180 9e9*(1e-3*m3/(mole*s)), adenine, e_aq); 181 reactionData->AddProduct(damage_adenine); 182 reactionData->SetReactionType(1); 183 theReactionTable->SetReaction(reactionData); 184 185 // guanine + Hydrated e- -> ... 186 reactionData = new G4DNAMolecularReactionData( 187 14e9*(1e-3*m3/(mole*s)), guanine, e_aq); 188 reactionData->AddProduct(damage_guanine); 189 reactionData->SetReactionType(1); 190 theReactionTable->SetReaction(reactionData); 191 192 // thymine + Hydrated e- -> ... 193 reactionData = new G4DNAMolecularReactionData( 194 18e9*(1e-3*m3/(mole*s)), thymine, e_aq); 195 reactionData->AddProduct(damage_thymine); 196 reactionData->SetReactionType(1); 197 theReactionTable->SetReaction(reactionData); 198 199 // cytosine + Hydrated e- -> ... 200 reactionData = new G4DNAMolecularReactionData( 201 13e9*(1e-3*m3/(mole*s)), cytosine, e_aq); 202 reactionData->AddProduct(damage_cytosine); 203 reactionData->SetReactionType(1); 204 theReactionTable->SetReaction(reactionData); 205 206 // Radical H and DNA 207 208 // Deoxyribose + Radical H -> ... 209 reactionData = new G4DNAMolecularReactionData( 210 0.029e9*(1e-3*m3/(mole*s)), deoxyribose, H); 211 reactionData->AddProduct(damage_deoxyribose); 212 reactionData->SetReactionType(1); 213 theReactionTable->SetReaction(reactionData); 214 215 // adenine + Radical H -> ... 216 reactionData = new G4DNAMolecularReactionData( 217 0.10e9*(1e-3*m3/(mole*s)), adenine, H); 218 reactionData->AddProduct(damage_adenine); 219 reactionData->SetReactionType(1); 220 theReactionTable->SetReaction(reactionData); 221 222 // thymine + Radical H -> ... 223 reactionData = new G4DNAMolecularReactionData( 224 0.57e9*(1e-3*m3/(mole*s)), thymine, H); 225 reactionData->AddProduct(damage_thymine); 226 reactionData->SetReactionType(1); 227 theReactionTable->SetReaction(reactionData); 228 229 // cytosine + Radical H -> ... 230 reactionData = new G4DNAMolecularReactionData( 231 0.092e9*(1e-3*m3/(mole*s)), cytosine, H); 232 reactionData->AddProduct(damage_cytosine); 233 reactionData->SetReactionType(1); 234 theReactionTable->SetReaction(reactionData); 235 236 //histone + all molecules -> modification(or "damage") 237 238 reactionData = new G4DNAMolecularReactionData( 239 0.0*(1e-3*m3/(mole*s)), histone, OH); 240 reactionData->AddProduct(histone); 241 reactionData->SetEffectiveReactionRadius( 242 2.4*nm + G4OH::Definition()->GetVanDerVaalsRadius()); 243 reactionData->SetReactionType(1); 244 theReactionTable->SetReaction(reactionData); 245 246 reactionData = new G4DNAMolecularReactionData( 247 0.0*(1e-3*m3/(mole*s)), histone, OHm); 248 reactionData->AddProduct(histone); 249 reactionData->SetEffectiveReactionRadius( 250 2.4*nm + G4OH::Definition()->GetVanDerVaalsRadius()); 251 reactionData->SetReactionType(1); 252 theReactionTable->SetReaction(reactionData); 253 254 reactionData = new G4DNAMolecularReactionData( 255 0.0*(1e-3*m3/(mole*s)), histone, e_aq); 256 reactionData->AddProduct(histone); 257 reactionData->SetEffectiveReactionRadius( 258 2.4*nm + G4Electron_aq::Definition()->GetVanDerVaalsRadius()); 259 reactionData->SetReactionType(1); 260 theReactionTable->SetReaction(reactionData); 261 262 reactionData = new G4DNAMolecularReactionData( 263 0.0*(1e-3*m3/(mole*s)), histone, H2); 264 reactionData->AddProduct(histone); 265 reactionData->SetEffectiveReactionRadius( 266 2.4*nm + G4H2::Definition()->GetVanDerVaalsRadius()); 267 reactionData->SetReactionType(1); 268 theReactionTable->SetReaction(reactionData); 269 270 reactionData = new G4DNAMolecularReactionData( 271 0.0*(1e-3*m3/(mole*s)), histone, H3Op); 272 reactionData->AddProduct(histone); 273 reactionData->SetEffectiveReactionRadius( 274 2.4*nm + G4H3O::Definition()->GetVanDerVaalsRadius()); 275 reactionData->SetReactionType(1); 276 theReactionTable->SetReaction(reactionData); 277 278 reactionData = new G4DNAMolecularReactionData( 279 0.0*(1e-3*m3/(mole*s)), histone, H); 280 reactionData->AddProduct(histone); 281 reactionData->SetEffectiveReactionRadius( 282 2.4*nm + G4Hydrogen::Definition()->GetVanDerVaalsRadius()); 283 reactionData->SetReactionType(1); 284 theReactionTable->SetReaction(reactionData); 285 286 reactionData = new G4DNAMolecularReactionData( 287 0.0*(1e-3*m3/(mole*s)), histone, H2O2); 288 reactionData->AddProduct(histone); 289 reactionData->SetEffectiveReactionRadius( 290 2.4*nm + G4H2O2::Definition()->GetVanDerVaalsRadius()); 291 reactionData->SetReactionType(1); 292 theReactionTable->SetReaction(reactionData); 293 } 294 295