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: DamageModel.cc 28 /// brief: Parameters related to the DNA Damage model 29 30 #include "DamageModel.hh" 31 32 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 33 34 DamageModel::DamageModel() 35 { 36 fpDamageMessenger = new DamageModelMessenger(this); 37 } 38 39 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 40 41 G4bool DamageModel::IsDirectStrandBreak(const G4double& d) const 42 { 43 G4bool bool_val = false; 44 if (d < fDirectDmgLower) { 45 bool_val = false; 46 } 47 else if (d >= fDirectDmgUpper) { 48 bool_val = true; 49 } 50 else { 51 bool_val = (G4UniformRand() < ((d - fDirectDmgLower) / (fDirectDmgUpper - fDirectDmgLower))); 52 } 53 return bool_val; 54 } 55 56 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 57 58 G4bool DamageModel::IsIndirectBaseDamage(const G4MolecularConfiguration* mol) const 59 { 60 G4bool bool_val = false; 61 if (mol->GetDefinition() == fOH) { 62 bool_val = (G4UniformRand() < fBaseOH); 63 } 64 else if (mol->GetDefinition() == fH) { 65 bool_val = (G4UniformRand() < fBaseH); 66 } 67 else if (mol->GetDefinition() == fe_aq) { 68 bool_val = (G4UniformRand() < fBaseEaq); 69 } 70 else { 71 bool_val = false; 72 } 73 return bool_val; 74 } 75 76 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 77 78 G4bool DamageModel::IsIndirectStrandDamage(const G4MolecularConfiguration* mol) const 79 { 80 G4bool bool_val = false; 81 if (mol->GetDefinition() == fOH) { 82 bool_val = (G4UniformRand() < fStrandOH); 83 } 84 else if (mol->GetDefinition() == G4Hydrogen::Definition()) { 85 bool_val = (G4UniformRand() < fStrandH); 86 } 87 else if (mol->GetDefinition() == G4Electron_aq::Definition()) { 88 bool_val = (G4UniformRand() < fStrandEaq); 89 } 90 else { 91 bool_val = false; 92 } 93 return bool_val; 94 } 95 96 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 97 98 G4bool DamageModel::IsInducedStrandBreak(const G4MolecularConfiguration* mol) const 99 { 100 G4bool bool_val = false; 101 if (mol->GetDefinition() == fOH) { 102 bool_val = (G4UniformRand() < fInductionOH); 103 } 104 else if (mol->GetDefinition() == G4Hydrogen::Definition()) { 105 bool_val = (G4UniformRand() < fInductionH); 106 } 107 else if (mol->GetDefinition() == G4Electron_aq::Definition()) { 108 bool_val = (G4UniformRand() < fInductionEaq); 109 } 110 else { 111 bool_val = false; 112 } 113 return bool_val; 114 } 115 116 //....oooOO0OOooo........oooOO0OOooo........oooOO0OOooo........oooOO0OOooo...... 117 118 void DamageModel::CheckValidProbability(const G4String& str, G4double p) 119 { 120 if ((p < 0) || (p > 1)) { 121 G4ExceptionDescription errmsg; 122 errmsg << "Invalid probability for " << str; 123 G4Exception("DamageModel", "ERR_INVALID_PROB", FatalException, errmsg); 124 } 125 }