Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
G4HnManager.hh
Go to the documentation of this file.
1//
2// ********************************************************************
3// * License and Disclaimer *
4// * *
5// * The Geant4 software is copyright of the Copyright Holders of *
6// * the Geant4 Collaboration. It is provided under the terms and *
7// * conditions of the Geant4 Software License, included in the file *
8// * LICENSE and available at http://cern.ch/geant4/license . These *
9// * include a list of copyright holders. *
10// * *
11// * Neither the authors of this software system, nor their employing *
12// * institutes,nor the agencies providing financial support for this *
13// * work make any representation or warranty, express or implied, *
14// * regarding this software system or assume any liability for its *
15// * use. Please see the license in the file LICENSE and URL above *
16// * for the full disclaimer and the limitation of liability. *
17// * *
18// * This code implementation is the result of the scientific and *
19// * technical work of the GEANT4 collaboration. *
20// * By using, copying, modifying or distributing the software (or *
21// * any work based on the software) you agree to acknowledge its *
22// * use in resulting scientific publications, and indicate your *
23// * acceptance of all terms of the Geant4 Software license. *
24// ********************************************************************
25//
26
27// Class for management of G4HnInformation.
28// It implements functions handling the added H1/H2 information
29// (not available in g4tools).
30//
31// Author: Ivana Hrivnacova, 18/06/2013 ([email protected])
32
33#ifndef G4HnManager_h
34#define G4HnManager_h 1
35
37#include "G4HnInformation.hh"
38#include "globals.hh"
39
40#include <set>
41#include <string_view>
42#include <utility>
43#include <vector>
44
45class G4VFileManager;
46class G4HnMessenger;
47
49{
50 public:
51 G4HnManager(G4String hnType, const G4AnalysisManagerState& state);
52 G4HnManager() = delete;
53 ~G4HnManager() override;
54
55 void CreateMessenger();
56
57 // Methods to manipulate additional information
59 void AddHnInformation(G4HnInformation* info, G4int index);
60
61 void SetHnDeleted(G4HnInformation* info, G4bool keepSetting);
62 void ClearData();
63
64 // Access methofd
66 std::string_view functionName,
67 G4bool warn = true) const;
68
70 G4int dimension,
71 std::string_view functionName,
72 G4bool warn = true) const;
73
74 const std::vector<G4HnInformation*>& GetHnVector() const;
75 G4int GetNofActiveHns() const;
76 G4String GetHnType() const;
77
78 // Activation option
79
80 // Return false if activation is enabled and there is no object activated,
81 // return true otherwise
82 G4bool IsActive() const;
83
84 // ASCII option
85
86 // Return false if there is no object selected for ASCII output,
87 // return true otherwise
88 G4bool IsAscii() const;
89
90 // Plotting option
91
92 // Return false if there is no object selected for plotting,
93 // return true otherwise
94 G4bool IsPlotting() const;
95
96 // Return false if there is no object with a specific file name
97 G4bool IsFileName() const;
98
99 // Function implementing public analysis manager interface
100 //
101 void SetActivation(G4bool activation);
102 void SetActivation(G4int id, G4bool activation);
103 void SetAscii(G4int id, G4bool ascii);
104 void SetPlotting(G4int id, G4bool plotting);
105 void SetPlotting(G4bool plotting);
106 void SetFileName(G4int id, const G4String& fileName);
107 void SetFileName(const G4String& fileName);
108 G4bool SetAxisIsLog(unsigned int idim, G4int id, G4bool isLogAxis);
109
110
111 // Access to Hn additional information
112 G4String GetName(G4int id) const;
113 G4double GetUnit(unsigned int idim, G4int id) const;
114 G4bool GetAxisIsLog(unsigned int idim, G4int id) const;
115 G4bool GetActivation(G4int id) const;
116 G4bool GetAscii(G4int id) const;
117 G4bool GetPlotting(G4int id) const;
118 G4String GetFileName(G4int id) const;
119
120 void SetFileManager(std::shared_ptr<G4VFileManager> fileManager);
121 void SetDefaultFileType(const G4String& fileType);
122
123 private:
124 // Methods
125 void SetActivation(G4HnInformation* info, G4bool activation);
126 void SetPlotting(G4HnInformation* info, G4bool plotting);
127 void SetFileName(G4HnInformation* info, const G4String& fileName);
128
129 // Static data members
130 static constexpr std::string_view fkClass { "G4HnManager" };
131
132 // Data members
133 G4String fHnType;
134 G4String fDefaultFileType;
135 G4int fNofActiveObjects { 0 };
136 G4int fNofAsciiObjects { 0 };
137 G4int fNofPlottingObjects { 0 };
138 G4int fNofFileNameObjects { 0 };
139
140 // Additional histograms/ntuple properties not included in tools
141 std::vector<G4HnInformation*> fHnVector;
142 std::set<G4int> fFreeIds;
143 std::shared_ptr<G4VFileManager> fFileManager { nullptr };
144
145 // Messenger
146 std::unique_ptr<G4HnMessenger> fMessenger;
147};
148
150{ return fNofActiveObjects; }
151
153{ return fHnType; }
154
155inline const std::vector<G4HnInformation*>& G4HnManager::GetHnVector() const
156{ return fHnVector; }
157
158inline void G4HnManager::SetFileManager(std::shared_ptr<G4VFileManager> fileManager)
159{
160 fFileManager = std::move(fileManager);
161}
162
163inline void G4HnManager::SetDefaultFileType(const G4String& fileType)
164{
165 fDefaultFileType = fileType;
166}
167
168#endif
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
G4HnDimensionInformation * GetHnDimensionInformation(G4int id, G4int dimension, std::string_view functionName, G4bool warn=true) const
void ClearData()
void CreateMessenger()
G4int GetNofActiveHns() const
G4bool GetPlotting(G4int id) const
G4bool SetAxisIsLog(unsigned int idim, G4int id, G4bool isLogAxis)
void SetActivation(G4bool activation)
void SetDefaultFileType(const G4String &fileType)
void SetFileManager(std::shared_ptr< G4VFileManager > fileManager)
G4String GetFileName(G4int id) const
void SetHnDeleted(G4HnInformation *info, G4bool keepSetting)
G4String GetName(G4int id) const
G4bool IsAscii() const
~G4HnManager() override
G4bool IsPlotting() const
void SetFileName(G4int id, const G4String &fileName)
G4bool GetActivation(G4int id) const
const std::vector< G4HnInformation * > & GetHnVector() const
void AddHnInformation(G4HnInformation *info)
G4bool GetAxisIsLog(unsigned int idim, G4int id) const
G4double GetUnit(unsigned int idim, G4int id) const
G4bool IsActive() const
void SetAscii(G4int id, G4bool ascii)
G4String GetHnType() const
void SetPlotting(G4int id, G4bool plotting)
G4HnInformation * GetHnInformation(G4int id, std::string_view functionName, G4bool warn=true) const
G4HnManager()=delete
G4bool GetAscii(G4int id) const
G4bool IsFileName() const