File indexing completed on 2026-09-22 08:08: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
0044
0045
0046
0047 #ifndef HistoManager_h
0048 #define HistoManager_h 1
0049
0050 #include "G4AnalysisManager.hh"
0051 #include "G4Material.hh"
0052 #include "globals.hh"
0053
0054
0055
0056 class Histo;
0057 class G4ParticleDefinition;
0058 class HistoManagerMessenger;
0059
0060 class HistoManager
0061 {
0062 public:
0063 HistoManager();
0064
0065 ~HistoManager();
0066
0067 void BeginOfRun();
0068 void EndOfRun();
0069
0070 void SetVerbose(G4int val);
0071
0072 inline void SetParticleName(const G4String&);
0073 inline void SetElementName(const G4String&);
0074
0075 inline void SetNumberOfBinsE(G4int val);
0076 inline void SetNumberOfBinsP(G4int val);
0077
0078 inline void SetMinKinEnergy(G4double val);
0079 inline void SetMaxKinEnergy(G4double val);
0080
0081 inline void SetMinMomentum(G4double val);
0082 inline void SetMaxMomentum(G4double val);
0083
0084 inline void SetHistoName(G4String& val);
0085
0086 inline void SetTargetMaterial(const G4Material* p);
0087
0088 private:
0089 HistoManagerMessenger* fMessenger;
0090 G4AnalysisManager* fAnalysisManager;
0091
0092 const G4ParticleDefinition* fNeutron;
0093 const G4Material* fTargetMaterial;
0094
0095 G4String fParticleName;
0096 G4String fElementName;
0097
0098 G4double fMinKinEnergy;
0099 G4double fMaxKinEnergy;
0100 G4double fMinMomentum;
0101 G4double fMaxMomentum;
0102
0103 G4int fVerbose;
0104 G4int fBinsE;
0105 G4int fBinsP;
0106
0107 G4String fHistoName;
0108 };
0109
0110 inline void HistoManager::SetParticleName(const G4String& name)
0111 {
0112 fParticleName = name;
0113 }
0114
0115 inline void HistoManager::SetElementName(const G4String& name)
0116 {
0117 fElementName = name;
0118 }
0119
0120 inline void HistoManager::SetNumberOfBinsE(G4int val)
0121 {
0122 if (val > 0) {
0123 fBinsE = val;
0124 }
0125 }
0126
0127 inline void HistoManager::SetNumberOfBinsP(G4int val)
0128 {
0129 if (val > 0) {
0130 fBinsP = val;
0131 }
0132 }
0133
0134 inline void HistoManager::SetMinKinEnergy(G4double val)
0135 {
0136 if (val > 0 && val < fMaxKinEnergy) {
0137 fMinKinEnergy = val;
0138 }
0139 }
0140
0141 inline void HistoManager::SetMaxKinEnergy(G4double val)
0142 {
0143 if (val > fMinKinEnergy) {
0144 fMaxKinEnergy = val;
0145 }
0146 }
0147
0148 inline void HistoManager::SetMinMomentum(G4double val)
0149 {
0150 if (val > 0 && val < fMaxMomentum) {
0151 fMinMomentum = val;
0152 }
0153 }
0154
0155 inline void HistoManager::SetMaxMomentum(G4double val)
0156 {
0157 if (val > fMinMomentum) {
0158 fMaxMomentum = val;
0159 }
0160 }
0161
0162 inline void HistoManager::SetHistoName(G4String& val)
0163 {
0164 fHistoName = val;
0165 }
0166
0167 inline void HistoManager::SetTargetMaterial(const G4Material* p)
0168 {
0169 fTargetMaterial = p;
0170 }
0171
0172 #endif