Warning, file /geant4/examples/advanced/dna/moleculardna/include/DamageModel.hh was not indexed
or was modified since last indexation (in which case cross-reference links may be missing, inaccurate or erroneous).
0001
0002
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013
0014
0015
0016
0017
0018
0019
0020
0021
0022
0023
0024
0025
0026
0027
0028
0029 #ifndef MOLECULAR_DAMAGE_MODEL
0030 #define MOLECULAR_DAMAGE_MODEL
0031
0032 #include "DamageModelMessenger.hh"
0033
0034 #include "G4Electron_aq.hh"
0035 #include "G4Hydrogen.hh"
0036 #include "G4MolecularConfiguration.hh"
0037 #include "G4OH.hh"
0038 #include "G4SystemOfUnits.hh"
0039 #include "Randomize.hh"
0040 #include "globals.hh"
0041
0042
0043
0044 class DamageModel
0045 {
0046 public:
0047 DamageModel();
0048
0049 virtual ~DamageModel() { delete fpDamageMessenger; };
0050
0051
0052 G4bool IsDirectStrandBreak(const G4double&) const;
0053
0054 G4bool IsIndirectStrandDamage(const G4MolecularConfiguration*) const;
0055
0056 G4bool IsIndirectBaseDamage(const G4MolecularConfiguration*) const;
0057
0058 G4bool IsInducedStrandBreak(const G4MolecularConfiguration*) const;
0059
0060
0061 void SetDirectDamageLower(G4double d)
0062 {
0063 fDirectDmgLower = d;
0064 if (fDirectDmgLower < fDirectDmgUpper) fDirectDmgUpper = fDirectDmgLower;
0065 };
0066
0067 void SetDirectDamageUpper(G4double d)
0068 {
0069 fDirectDmgUpper = d;
0070 if (fDirectDmgLower > fDirectDmgUpper) fDirectDmgLower = fDirectDmgUpper;
0071 };
0072
0073
0074 void SetIndirectOHStrandChance(G4double d)
0075 {
0076 CheckValidProbability("DamageStrandOH", d);
0077 fStrandOH = d;
0078 }
0079
0080 void SetIndirectOHBaseChance(G4double d)
0081 {
0082 CheckValidProbability("DamageBaseOH", d);
0083 fBaseOH = d;
0084 }
0085
0086 void SetInductionOHChance(G4double d)
0087 {
0088 CheckValidProbability("InductionOH", d);
0089 fInductionOH = d;
0090 };
0091
0092
0093 void SetIndirectEaqStrandChance(G4double d)
0094 {
0095 CheckValidProbability("DamageStrandEaq", d);
0096 fStrandEaq = d;
0097 }
0098
0099 void SetIndirectEaqBaseChance(G4double d)
0100 {
0101 CheckValidProbability("DamageBaseEaq", d);
0102 fBaseEaq = d;
0103 }
0104
0105 void SetInductionEaqChance(G4double d)
0106 {
0107 CheckValidProbability("InductionEaq", d);
0108 fInductionEaq = d;
0109 };
0110
0111
0112 void SetIndirectHStrandChance(G4double d)
0113 {
0114 CheckValidProbability("DamageStrandH", d);
0115 fStrandH = d;
0116 }
0117
0118 void SetIndirectHBaseChance(G4double d)
0119 {
0120 CheckValidProbability("DamageBaseH", d);
0121 fBaseH = d;
0122 }
0123
0124 void SetInductionHChance(G4double d)
0125 {
0126 CheckValidProbability("InductionH", d);
0127 fInductionH = d;
0128 };
0129
0130 protected:
0131 static void CheckValidProbability(const G4String& str, G4double p);
0132
0133 private:
0134 DamageModelMessenger* fpDamageMessenger;
0135 G4double fDirectDmgLower = 17.5 * eV, fDirectDmgUpper = 17.5 * eV;
0136 G4double fInductionOH = 0, fInductionEaq = 0, fInductionH = 0;
0137 G4double fStrandOH = 1.0, fStrandEaq = 1.0, fStrandH = 1.0;
0138 G4double fBaseOH = 1.0, fBaseEaq = 1.0, fBaseH = 1.0;
0139 const G4MoleculeDefinition* fOH = G4OH::Definition();
0140 const G4MoleculeDefinition* fe_aq = G4Electron_aq::Definition();
0141 const G4MoleculeDefinition* fH = G4Hydrogen::Definition();
0142 };
0143
0144
0145
0146 #endif