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