ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4ToolsAnalysisManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4ToolsAnalysisManager.hh
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 "globals.hh"
36 
37 #include "tools/histo/h1d"
38 #include "tools/histo/h2d"
39 #include "tools/histo/h3d"
40 #include "tools/histo/p1d"
41 #include "tools/histo/p2d"
42 #include "tools/wroot/ntuple"
43 
44 class G4H1ToolsManager;
45 class G4H2ToolsManager;
46 class G4H3ToolsManager;
47 class G4P1ToolsManager;
48 class G4P2ToolsManager;
49 
50 namespace tools {
51 namespace histo {
52 class hmpi;
53 }
54 }
55 
57 {
58  public:
59  explicit G4ToolsAnalysisManager(const G4String& type, G4bool isMaster = true);
60  virtual ~G4ToolsAnalysisManager();
61 
62  // static methods
64  static G4bool IsInstance();
65 
66  // Access methods
67  tools::histo::h1d* GetH1(G4int id, G4bool warn = true,
68  G4bool onlyIfActive = true) const;
69  tools::histo::h2d* GetH2(G4int id, G4bool warn = true,
70  G4bool onlyIfActive = true) const;
71  tools::histo::h3d* GetH3(G4int id, G4bool warn = true,
72  G4bool onlyIfActive = true) const;
73  tools::histo::p1d* GetP1(G4int id, G4bool warn = true,
74  G4bool onlyIfActive = true) const;
75  tools::histo::p2d* GetP2(G4int id, G4bool warn = true,
76  G4bool onlyIfActive = true) const;
77 
78  // Iterators
79  std::vector<tools::histo::h1d*>::iterator BeginH1();
80  std::vector<tools::histo::h1d*>::iterator EndH1();
81  std::vector<tools::histo::h1d*>::const_iterator BeginConstH1() const;
82  std::vector<tools::histo::h1d*>::const_iterator EndConstH1() const;
83 
84  std::vector<tools::histo::h2d*>::iterator BeginH2();
85  std::vector<tools::histo::h2d*>::iterator EndH2();
86  std::vector<tools::histo::h2d*>::const_iterator BeginConstH2() const;
87  std::vector<tools::histo::h2d*>::const_iterator EndConstH2() const;
88 
89  std::vector<tools::histo::h3d*>::iterator BeginH3();
90  std::vector<tools::histo::h3d*>::iterator EndH3();
91  std::vector<tools::histo::h3d*>::const_iterator BeginConstH3() const;
92  std::vector<tools::histo::h3d*>::const_iterator EndConstH3() const;
93 
94  std::vector<tools::histo::p1d*>::iterator BeginP1();
95  std::vector<tools::histo::p1d*>::iterator EndP1();
96  std::vector<tools::histo::p1d*>::const_iterator BeginConstP1() const;
97  std::vector<tools::histo::p1d*>::const_iterator EndConstP1() const;
98 
99  std::vector<tools::histo::p2d*>::iterator BeginP2();
100  std::vector<tools::histo::p2d*>::iterator EndP2();
101  std::vector<tools::histo::p2d*>::const_iterator BeginConstP2() const;
102  std::vector<tools::histo::p2d*>::const_iterator EndConstP2() const;
103 
104  std::vector<tools::wroot::ntuple*>::iterator BeginNtuple();
105  std::vector<tools::wroot::ntuple*>::iterator EndNtuple();
106  std::vector<tools::wroot::ntuple*>::const_iterator BeginConstNtuple() const;
107  std::vector<tools::wroot::ntuple*>::const_iterator EndConstNtuple() const;
108 
109  protected:
110  // virtual methods from base class
111  virtual G4bool PlotImpl() final;
112  virtual G4bool MergeImpl(tools::histo::hmpi* hmpi) final;
113  // methods
114  G4bool Reset();
115 
116  // static data members
118 
119  // data members
125 
126  private:
127  // // static data members
128  // static G4ThreadLocal G4ToolsAnalysisManager* fgToolsInstance;
129 
130  };
131 
132 #include "G4ToolsAnalysisManager.icc"
133 
134 #endif
135