File indexing completed on 2026-03-28 07:49:59
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 RunAction_h
0030 #define RunAction_h 1
0031
0032 #include "ProcessesCount.hh"
0033
0034 #include "G4UserRunAction.hh"
0035 #include "globals.hh"
0036
0037
0038
0039 class DetectorConstruction;
0040 class PrimaryGeneratorAction;
0041 class HistoManager;
0042 class G4Run;
0043
0044
0045
0046 class RunAction : public G4UserRunAction
0047 {
0048 public:
0049 RunAction(DetectorConstruction*, PrimaryGeneratorAction*);
0050 ~RunAction();
0051
0052 public:
0053 virtual void BeginOfRunAction(const G4Run*);
0054 virtual void EndOfRunAction(const G4Run*);
0055
0056 void CountProcesses(G4String);
0057 void SumPathLength(G4double truepl, G4double geompl)
0058 {
0059 fTotalCount++;
0060 fTruePL += truepl;
0061 fTruePL2 += truepl * truepl;
0062 fGeomPL += geompl;
0063 fGeomPL2 += geompl * geompl;
0064 };
0065
0066 void SumLateralDisplacement(G4double displa)
0067 {
0068 fLDispl += displa;
0069 fLDispl2 += displa * displa;
0070 }
0071
0072 void SumPsi(G4double psi)
0073 {
0074 fPsiSpa += psi;
0075 fPsiSpa2 += psi * psi;
0076 }
0077
0078 void SumTetaPlane(G4double teta)
0079 {
0080 fTetPrj += teta;
0081 fTetPrj2 += teta * teta;
0082 }
0083
0084 void SumPhiCorrel(G4double correl)
0085 {
0086 fPhiCor += correl;
0087 fPhiCor2 += correl * correl;
0088 }
0089
0090 G4double ComputeMscHighland(G4double pathLength);
0091
0092 private:
0093 DetectorConstruction* fDetector;
0094 PrimaryGeneratorAction* fPrimary;
0095 ProcessesCount* fProcCounter;
0096 HistoManager* fHistoManager;
0097
0098 G4int fTotalCount;
0099 G4double fTruePL, fTruePL2;
0100 G4double fGeomPL, fGeomPL2;
0101 G4double fLDispl, fLDispl2;
0102 G4double fPsiSpa, fPsiSpa2;
0103 G4double fTetPrj, fTetPrj2;
0104 G4double fPhiCor, fPhiCor2;
0105 };
0106
0107
0108
0109 #endif