Geant4 11.1.1
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4ToolsAnalysisManager.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// The common implementation of analysis manager classes.
28
29// Author: Ivana Hrivnacova, 18/06/2013 (ivana@ipno.in2p3.fr)
30
31#ifndef G4ToolsAnalysisManager_h
32#define G4ToolsAnalysisManager_h 1
33
34#include "G4VAnalysisManager.hh"
35#include "G4TH1ToolsManager.hh"
36#include "G4TH2ToolsManager.hh"
37#include "G4TH3ToolsManager.hh"
38#include "G4TP1ToolsManager.hh"
39#include "G4TP2ToolsManager.hh"
40#include "globals.hh"
41
42#include "G4THnToolsManager.hh" // make forward declaration if possible
43
44#include "tools/histo/h1d"
45#include "tools/histo/h2d"
46#include "tools/histo/h3d"
47#include "tools/histo/p1d"
48#include "tools/histo/p2d"
49
50#include <string_view>
51
52class G4PlotManager;
53
54namespace tools {
55namespace histo {
56class hmpi;
57}
58}
59
61{
63
64 public:
65 ~G4ToolsAnalysisManager() override;
66
67 // Static methods
69 static G4bool IsInstance();
70
71 // Access methods
72 tools::histo::h1d* GetH1(G4int id, G4bool warn = true,
73 G4bool onlyIfActive = true) const;
74 tools::histo::h2d* GetH2(G4int id, G4bool warn = true,
75 G4bool onlyIfActive = true) const;
76 tools::histo::h3d* GetH3(G4int id, G4bool warn = true,
77 G4bool onlyIfActive = true) const;
78 tools::histo::p1d* GetP1(G4int id, G4bool warn = true,
79 G4bool onlyIfActive = true) const;
80 tools::histo::p2d* GetP2(G4int id, G4bool warn = true,
81 G4bool onlyIfActive = true) const;
82
83 // Iterators
84 std::vector<tools::histo::h1d*>::iterator BeginH1();
85 std::vector<tools::histo::h1d*>::iterator EndH1();
86 std::vector<tools::histo::h1d*>::const_iterator BeginConstH1() const;
87 std::vector<tools::histo::h1d*>::const_iterator EndConstH1() const;
88
89 std::vector<tools::histo::h2d*>::iterator BeginH2();
90 std::vector<tools::histo::h2d*>::iterator EndH2();
91 std::vector<tools::histo::h2d*>::const_iterator BeginConstH2() const;
92 std::vector<tools::histo::h2d*>::const_iterator EndConstH2() const;
93
94 std::vector<tools::histo::h3d*>::iterator BeginH3();
95 std::vector<tools::histo::h3d*>::iterator EndH3();
96 std::vector<tools::histo::h3d*>::const_iterator BeginConstH3() const;
97 std::vector<tools::histo::h3d*>::const_iterator EndConstH3() const;
98
99 std::vector<tools::histo::p1d*>::iterator BeginP1();
100 std::vector<tools::histo::p1d*>::iterator EndP1();
101 std::vector<tools::histo::p1d*>::const_iterator BeginConstP1() const;
102 std::vector<tools::histo::p1d*>::const_iterator EndConstP1() const;
103
104 std::vector<tools::histo::p2d*>::iterator BeginP2();
105 std::vector<tools::histo::p2d*>::iterator EndP2();
106 std::vector<tools::histo::p2d*>::const_iterator BeginConstP2() const;
107 std::vector<tools::histo::p2d*>::const_iterator EndConstP2() const;
108
109 protected:
110 explicit G4ToolsAnalysisManager(const G4String& type);
111
112 // Virtual methods from base class
113 G4bool OpenFileImpl(const G4String& fileName) override;
114 G4bool WriteImpl() override;
115 G4bool CloseFileImpl(G4bool reset) override;
116 G4bool ResetImpl() override;
117 void ClearImpl() override;
118 G4bool PlotImpl() final;
119 G4bool MergeImpl(tools::histo::hmpi* hmpi) final;
120 G4bool IsOpenFileImpl() const final;
121
122 // Methods
123 G4bool IsEmpty();
124
125 // Static data members
128 static constexpr std::string_view fkClass { "G4ToolsAnalysisManager" };
129
130 // Data members
136
137 private:
138 // // Static data members
139 // Static G4ThreadLocal G4ToolsAnalysisManager* fgToolsInstance;
140 // Methods
141 template <typename HT>
142 G4bool WriteT(const std::vector<std::pair<HT*, G4HnInformation*>>& hnVector);
143
144 G4bool WriteHns();
145 G4bool ResetHns();
146 G4bool MergeHns();
147
148 // Data members
149 std::shared_ptr<G4PlotManager> fPlotManager { nullptr };
150 };
151
152#include "G4ToolsAnalysisManager.icc"
153
154#endif
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
std::vector< tools::histo::p2d * >::const_iterator EndConstP2() const
tools::histo::h3d * GetH3(G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
std::vector< tools::histo::p1d * >::iterator BeginP1()
std::vector< tools::histo::p2d * >::iterator EndP2()
G4bool IsOpenFileImpl() const final
std::vector< tools::histo::h3d * >::const_iterator EndConstH3() const
std::vector< tools::histo::h1d * >::iterator EndH1()
std::vector< tools::histo::h2d * >::iterator EndH2()
std::vector< tools::histo::p2d * >::const_iterator BeginConstP2() const
std::vector< tools::histo::h2d * >::const_iterator BeginConstH2() const
std::vector< tools::histo::h2d * >::const_iterator EndConstH2() const
tools::histo::p1d * GetP1(G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
G4THnToolsManager< kDim2, tools::histo::h2d > * fH2Manager
static G4ToolsAnalysisManager * Instance()
std::vector< tools::histo::p1d * >::const_iterator BeginConstP1() const
tools::histo::p2d * GetP2(G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
static G4ThreadLocal G4ToolsAnalysisManager * fgToolsInstance
std::vector< tools::histo::p1d * >::iterator EndP1()
std::vector< tools::histo::h1d * >::const_iterator BeginConstH1() const
std::vector< tools::histo::h3d * >::iterator BeginH3()
G4THnToolsManager< kDim3, tools::histo::p2d > * fP2Manager
static constexpr std::string_view fkClass
std::vector< tools::histo::h3d * >::const_iterator BeginConstH3() const
G4bool OpenFileImpl(const G4String &fileName) override
std::vector< tools::histo::h2d * >::iterator BeginH2()
G4THnToolsManager< kDim2, tools::histo::p1d > * fP1Manager
G4bool MergeImpl(tools::histo::hmpi *hmpi) final
tools::histo::h2d * GetH2(G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
std::vector< tools::histo::p1d * >::const_iterator EndConstP1() const
G4THnToolsManager< kDim3, tools::histo::h3d > * fH3Manager
static G4ToolsAnalysisManager * fgMasterToolsInstance
std::vector< tools::histo::h3d * >::iterator EndH3()
std::vector< tools::histo::h1d * >::iterator BeginH1()
G4THnToolsManager< kDim1, tools::histo::h1d > * fH1Manager
G4bool CloseFileImpl(G4bool reset) override
std::vector< tools::histo::p2d * >::iterator BeginP2()
std::vector< tools::histo::h1d * >::const_iterator EndConstH1() const
tools::histo::h1d * GetH1(G4int id, G4bool warn=true, G4bool onlyIfActive=true) const
#define inline
Definition: internal.h:104
#define G4ThreadLocal
Definition: tls.hh:77