File indexing completed on 2025-01-18 09:58:07
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
0030
0031
0032
0033
0034
0035
0036
0037
0038
0039
0040
0041
0042
0043
0044
0045
0046 #ifndef G4DNADAMAGE_HH
0047 #define G4DNADAMAGE_HH 1
0048
0049 #include "G4Molecule.hh"
0050
0051 class G4VDNAHit
0052 {
0053 public :
0054 G4VDNAHit()= default;
0055 virtual ~G4VDNAHit()= default;
0056 };
0057
0058 class G4DNAIndirectHit : public G4VDNAHit
0059 {
0060 public :
0061 G4DNAIndirectHit(const G4String& baseName, const G4Molecule* molecule,
0062 const G4ThreeVector& position, G4double time);
0063 ~G4DNAIndirectHit() override;
0064
0065 inline const G4Molecule* GetMolecule() {return fpMolecule;}
0066 inline const G4ThreeVector& GetPosition() {return fPosition;}
0067 inline const G4String& GetBaseName() {return fBaseName;}
0068 inline double GetTime() {return fTime;}
0069
0070 void Print();
0071
0072 protected :
0073 const G4Molecule* fpMolecule;
0074 G4ThreeVector fPosition;
0075 G4double fTime;
0076 G4String fBaseName;
0077 };
0078
0079 class G4DNADamage
0080 {
0081 public:
0082 static G4DNADamage* Instance();
0083 static void DeleteInstance();
0084
0085 virtual void Reset();
0086
0087
0088 virtual void AddIndirectDamage(const G4String& baseName,
0089 const G4Molecule* molecule,
0090 const G4ThreeVector& position,
0091 G4double time);
0092
0093 inline const std::vector<G4DNAIndirectHit*>* GetIndirectHits();
0094 inline virtual G4int GetNIndirectHits() const
0095 {
0096 if(fJustCountDamage)
0097 return fNIndirectDamage;
0098
0099 return (G4int)fIndirectHits.size();
0100 }
0101
0102 inline virtual void SetOnlyCountDamage(G4bool flag = true)
0103 {
0104 fJustCountDamage = flag;
0105 }
0106
0107 inline virtual G4bool OnlyCountDamage() const
0108 {
0109 return fJustCountDamage;
0110 }
0111
0112 protected :
0113 G4DNADamage();
0114 static G4ThreadLocal G4DNADamage* fpInstance;
0115 virtual ~G4DNADamage();
0116
0117 G4bool fJustCountDamage;
0118 G4int fNIndirectDamage;
0119 std::vector<G4DNAIndirectHit*> fIndirectHits;
0120 std::map<G4Molecule, const G4Molecule*> fMolMap;
0121 };
0122
0123 inline const std::vector<G4DNAIndirectHit*>* G4DNADamage::GetIndirectHits()
0124 {
0125 return &fIndirectHits;
0126 }
0127
0128 #endif