ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VH2Manager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VH2Manager.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 // Base class for H2 manager.
28 //
29 // Author: Ivana Hrivnacova, 18/06/2013 (ivana@ipno.in2p3.fr)
30 
31 #ifndef G4VH2Manager_h
32 #define G4VH2Manager_h 1
33 
34 #include "globals.hh"
35 
36 #include <vector>
37 #include <memory>
38 
39 class G4HnManager;
40 
42 {
43  // Disable using the object managers outside G4VAnalysisManager
44  friend class G4VAnalysisManager;
45  friend class G4VAnalysisReader;
46 
47  public:
49  virtual ~G4VH2Manager() {}
50 
51  // deleted copy constructor & assignment operator
52  G4VH2Manager(const G4VH2Manager& rhs) = delete;
53  G4VH2Manager& operator=(const G4VH2Manager& rhs) =delete;
54 
55  protected:
56  // Methods for handling histograms
57  virtual G4int CreateH2(const G4String& name, const G4String& title,
58  G4int nxbins, G4double xmin, G4double xmax,
59  G4int nybins, G4double ymin, G4double ymax,
60  const G4String& xunitName = "none",
61  const G4String& yunitName = "none",
62  const G4String& xfcnName = "none",
63  const G4String& yfcnName = "none",
64  const G4String& xbinScheme = "linear",
65  const G4String& ybinScheme = "linear") = 0;
66 
67  virtual G4int CreateH2(const G4String& name, const G4String& title,
68  const std::vector<G4double>& xedges,
69  const std::vector<G4double>& yedges,
70  const G4String& xunitName = "none",
71  const G4String& yunitName = "none",
72  const G4String& xfcnName = "none",
73  const G4String& yfcnName = "none") = 0;
74 
75  virtual G4bool SetH2(G4int id,
76  G4int nxbins, G4double xmin, G4double xmax,
77  G4int nybins, G4double ymin, G4double ymax,
78  const G4String& xunitName = "none",
79  const G4String& yunitName = "none",
80  const G4String& xfcnName = "none",
81  const G4String& yfcnName = "none",
82  const G4String& xbinScheme = "linear",
83  const G4String& ybinScheme = "linear") = 0;
84 
85  virtual G4bool SetH2(G4int id,
86  const std::vector<G4double>& xedges,
87  const std::vector<G4double>& yedges,
88  const G4String& xunitName = "none",
89  const G4String& yunitName = "none",
90  const G4String& xfcnName = "none",
91  const G4String& yfcnName = "none") = 0;
92 
93  virtual G4bool ScaleH2(G4int id, G4double factor) = 0;
94 
95  // Methods to fill histograms
96  virtual G4bool FillH2(G4int id, G4double xvalue, G4double yvalue,
97  G4double weight = 1.0) = 0;
98 
99  // Access methods
100  virtual G4int GetH2Id(const G4String& name, G4bool warn = true) const = 0;
101 
102  // Access to H2 parameters
103  virtual G4int GetH2Nxbins(G4int id) const = 0;
104  virtual G4double GetH2Xmin(G4int id) const = 0;
105  virtual G4double GetH2Xmax(G4int id) const = 0;
106  virtual G4double GetH2XWidth(G4int id) const = 0;
107  virtual G4int GetH2Nybins(G4int id) const = 0;
108  virtual G4double GetH2Ymin(G4int id) const = 0;
109  virtual G4double GetH2Ymax(G4int id) const = 0;
110  virtual G4double GetH2YWidth(G4int id) const = 0;
111 
112  // Setters for attributes for plotting
113  virtual G4bool SetH2Title(G4int id, const G4String& title) = 0;
114  virtual G4bool SetH2XAxisTitle(G4int id, const G4String& title) = 0;
115  virtual G4bool SetH2YAxisTitle(G4int id, const G4String& title) = 0;
116  virtual G4bool SetH2ZAxisTitle(G4int id, const G4String& title) = 0;
117 
118  // Access attributes for plotting
119  virtual G4String GetH2Title(G4int id) const = 0;
120  virtual G4String GetH2XAxisTitle(G4int id) const = 0;
121  virtual G4String GetH2YAxisTitle(G4int id) const = 0;
122  virtual G4String GetH2ZAxisTitle(G4int id) const = 0;
123 
124  // Methods to manipulate histograms
125  virtual G4bool WriteOnAscii(std::ofstream& output) = 0;
126 
127  // Access to Hn manager
128  virtual std::shared_ptr<G4HnManager> GetHnManager() = 0;
129 };
130 
131 #endif
132