ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4HnManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4HnManager.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 // 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 (ivana@ipno.in2p3.fr)
32 
33 #ifndef G4HnManager_h
34 #define G4HnManager_h 1
35 
36 #include "G4BaseAnalysisManager.hh"
37 #include "G4HnInformation.hh"
38 #include "globals.hh"
39 
40 #include <vector>
41 
43 {
44  public:
45  G4HnManager(const G4String& hnType,
46  const G4AnalysisManagerState& state);
47  virtual ~G4HnManager();
48 
49  // Methods to manipulate additional information
50 
51  G4HnInformation* AddHnInformation(const G4String& name, G4int nofDimensions);
52 
53  // Access methofd
55  G4String functionName = "",
56  G4bool warn = true) const;
57 
59  G4int dimension,
60  G4String functionName = "",
61  G4bool warn = true) const;
62 
63  const std::vector<G4HnInformation*>& GetHnVector() const;
64  G4int GetNofHns() const;
65  G4String GetHnType() const;
66 
67  // Activation option
68 
69  // Return false if activation is enabled and there is no object activated,
70  // return true otherwise
71  G4bool IsActive() const;
72 
73  // ASCII option
74 
75  // Return false if there is no object selected for ASCII output,
76  // return true otherwise
77  G4bool IsAscii() const;
78 
79  // Plotting option
80 
81  // Return false if there is no object selected for plotting,
82  // return true otherwise
83  G4bool IsPlotting() const;
84 
85  // Function implementing public analysis manager interface
86  //
87  void SetActivation(G4bool activation);
88  void SetActivation(G4int id, G4bool activation);
89  void SetAscii(G4int id, G4bool ascii);
90  void SetPlotting(G4bool plotting);
91  void SetPlotting(G4int id, G4bool plotting);
92  G4bool SetXAxisIsLog(G4int id, G4bool isLogAxis);
93  G4bool SetYAxisIsLog(G4int id, G4bool isLogAxis);
94  G4bool SetZAxisIsLog(G4int id, G4bool isLogAxis);
95 
96 
97  // Access to Hn additional information
98  G4String GetName(G4int id) const;
99  G4double GetXUnit(G4int id) const;
100  G4double GetYUnit(G4int id) const;
101  G4double GetZUnit(G4int id) const;
102  G4bool GetXAxisIsLog(G4int id) const;
103  G4bool GetYAxisIsLog(G4int id) const;
104  G4bool GetZAxisIsLog(G4int id) const;
105  G4bool GetActivation(G4int id) const;
106  G4bool GetAscii(G4int id) const;
107  G4bool GetPlotting(G4int id) const;
108 
109  private:
110  // Data members
115 
116  // Additional histograms/ntuple properties not included in tools
117  std::vector<G4HnInformation*> fHnVector;
118 };
119 
121 { return G4int(fHnVector.size()); }
122 
124 { return fHnType; }
125 
126 inline const std::vector<G4HnInformation*>& G4HnManager::GetHnVector() const
127 { return fHnVector; }
128 
129 #endif
130