File indexing completed on 2025-02-23 09:21:53
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 #ifndef DNADAMAGE2_ScoreSB_h
0043 #define DNADAMAGE2_ScoreSB_h 1
0044
0045 #include "DetectorConstruction.hh"
0046 #include "MoleculeInserter.hh"
0047
0048 #include "G4DNAIRT.hh"
0049 #include "G4THitsMap.hh"
0050 #include "G4UIcmdWithADoubleAndUnit.hh"
0051 #include "G4UIcmdWithAString.hh"
0052 #include "G4UIcmdWithAnInteger.hh"
0053 #include "G4UImessenger.hh"
0054 #include "G4VPrimitiveScorer.hh"
0055
0056 class G4VAnalysisManager;
0057 class G4MolecularConfiguration;
0058
0059 typedef std::map<G4int, std::map<G4int, std::map<G4int, std::map<G4int, G4double>>>>
0060 EnergyDepositMap;
0061 typedef std::map<G4int, std::vector<std::vector<G4int>>> DamageMap;
0062
0063
0064
0065 class ScoreStrandBreaks : public G4VPrimitiveScorer, public G4UImessenger
0066 {
0067 public:
0068 ScoreStrandBreaks(G4String name, DetectorConstruction*, G4double*);
0069 ~ScoreStrandBreaks() override;
0070
0071 void WriteWithAnalysisManager(G4VAnalysisManager*);
0072 DamageMap GetDamageMap() { return fDirectDamageMap; }
0073 void ClearDamageMap() { fDirectDamageMap.clear(); }
0074
0075 void Initialize(G4HCofThisEvent*) override;
0076 void EndOfEvent(G4HCofThisEvent*) override;
0077 void Clear();
0078 void DrawAll() override;
0079 void PrintAll() override;
0080 void AbsorbResultsFromWorkerScorer(G4VPrimitiveScorer*);
0081 void OutputAndClear(G4double, G4double);
0082 void SetNewValue(G4UIcommand*, G4String) override;
0083
0084 void ASCII(G4double, G4double);
0085
0086 private:
0087 G4int fnbOfEvents = 0;
0088 G4bool fDNAInserted = false;
0089 G4double fBreakEnergy = 17.5 * eV;
0090 G4double fEnergyDeposit = 0;
0091 G4double* fRadius = nullptr;
0092
0093 G4String fOutputName = "DirectDamageInfo";
0094 G4String fOutputType = "ascii";
0095 DamageMap fDirectDamageMap;
0096 DamageMap fIndirectDamageMap;
0097 EnergyDepositMap fEnergyDepositMap;
0098
0099 G4UIcmdWithAString* fpOutputFileUI = nullptr;
0100 G4UIcmdWithAString* fpOutputTypeUI = nullptr;
0101 G4UIcmdWithADoubleAndUnit* fpBreakEnergyUI = nullptr;
0102
0103 DetectorConstruction* fpDetector = nullptr;
0104 std::map<G4int, G4double> fDoseArray;
0105
0106 MoleculeInserter* fpGun = nullptr;
0107
0108 protected:
0109 G4bool ProcessHits(G4Step*, G4TouchableHistory*) override;
0110 };
0111
0112
0113
0114 #endif