File indexing completed on 2025-02-23 09:22:03
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 RunAction_h
0043 #define RunAction_h 1
0044
0045 #include "DetectorConstruction.hh"
0046
0047 #include "G4ThreeVector.hh"
0048 #include "G4UserRunAction.hh"
0049 #include "globals.hh"
0050
0051 #include <iostream>
0052
0053 class PrimaryGeneratorAction;
0054 class Run;
0055 class G4Run;
0056 class TrackingAction;
0057
0058 class RunAction : public G4UserRunAction
0059 {
0060 public:
0061 RunAction(DetectorConstruction*, PrimaryGeneratorAction*);
0062 ~RunAction() override = default;
0063
0064 void BeginOfRunAction(const G4Run*) override;
0065 void EndOfRunAction(const G4Run*) override;
0066
0067 void SetRndmFreq(G4int val) { fSaveRndm = val; }
0068 G4int GetRndmFreq() const { return fSaveRndm; }
0069 G4Run* GenerateRun() override;
0070
0071
0072 G4double GetEdepALL() const { return fEdepAll; }
0073 void SetEdepALL(G4double vall) { fEdepAll = vall; }
0074 void AddEdepALL(G4double vall)
0075 {
0076 fEdepAll += vall;
0077 fEdepAll_err += vall * vall;
0078 }
0079
0080 G4double GetEdepMedium() const { return fEdepMedium; }
0081 void SetEdepMedium(G4double vall) { fEdepMedium = vall; }
0082 void AddEdepMedium(G4double vall)
0083 {
0084 fEdepMedium += vall;
0085 fEdepMedium_err += vall * vall;
0086 }
0087
0088 G4double GetEdepSlice() const { return fEdepSlice; }
0089 void SetEdepSlice(G4double vall) { fEdepSlice = vall; }
0090 void AddEdepSlice(G4double vall)
0091 {
0092 fEdepSlice += vall;
0093 fEdepSlice_err += vall * vall;
0094 }
0095
0096 G4double GetEdepSoma() const { return fEdepSoma; }
0097 void SetEdepSoma(G4double vall) { fEdepSoma = vall; }
0098 void AddEdepSoma(G4double vall)
0099 {
0100 fEdepSoma += vall;
0101 fEdepSoma_err += vall * vall;
0102 }
0103
0104
0105 G4double GetEdepDend() const { return fEdepDend; }
0106 void SetEdepDend(G4double vall) { fEdepDend = vall; }
0107 void AddEdepDend(G4double vall)
0108 {
0109 fEdepDend += vall;
0110 fEdepDend_err += vall * vall;
0111 }
0112
0113
0114 G4double GetEdepAxon() const { return fEdepAxon; }
0115 void SetEdepAxon(G4double vall) { fEdepAxon = vall; }
0116 void AddEdepAxon(G4double vall)
0117 {
0118 fEdepAxon += vall;
0119 fEdepAxon_err += vall * vall;
0120 }
0121
0122
0123 G4double GetEdepNeuron() const { return fEdepNeuron; }
0124 void SetEdepNeuron(G4double vall) { fEdepNeuron = vall; }
0125 void AddEdepNeuron(G4double vall)
0126 {
0127 fEdepNeuron += vall;
0128 fEdepNeuron_err += vall * vall;
0129 }
0130
0131 G4int GetNumEvent() const { return fNumEvent; }
0132 void SetNumEvent(G4int i) { fNumEvent = i; }
0133
0134 private:
0135
0136
0137
0138 void CreateHistogram();
0139 void WriteHistogram();
0140
0141
0142
0143
0144 void PrintRunInfo(const G4Run* run);
0145
0146 G4bool fDebug{false};
0147
0148 DetectorConstruction* fDetector;
0149 PrimaryGeneratorAction* fPrimary;
0150 Run* fRun{nullptr};
0151
0152
0153
0154 G4double fEdepAll{0.0};
0155 G4double fEdepAll_err{0.0};
0156 G4double fEdepMedium{0.0};
0157 G4double fEdepMedium_err{0.0};
0158 G4double fEdepSlice{0.0};
0159 G4double fEdepSlice_err{0.0};
0160 G4double fEdepSoma{0.0};
0161 G4double fEdepSoma_err{0.0};
0162 G4double fEdepDend{0.0};
0163 G4double fEdepDend_err{0.0};
0164 G4double fEdepAxon{0.0};
0165 G4double fEdepAxon_err{0.0};
0166 G4double fEdepNeuron{0.0};
0167 G4double fEdepNeuron_err{0.0};
0168 G4int fNumEvent{0};
0169 G4int fSaveRndm{0};
0170 };
0171
0172 #endif