ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4THnManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4THnManager.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 // Template base class the histograms/profiles objects managers.
28 
29 // Author: Ivana Hrivnacova, 23/06/2015 (ivana@ipno.in2p3.fr)
30 
31 #ifndef G4THnManager_h
32 #define G4THnManager_h 1
33 
34 #include "G4Fcn.hh"
35 #include "G4BinScheme.hh"
36 #include "globals.hh"
37 
38 #include <vector>
39 #include <map>
40 #include <memory>
41 
43 class G4HnManager;
44 
45 template <typename T>
47 {
48  public:
50  const G4String& hnType);
51  virtual ~G4THnManager();
52 
53  // Reset data
54  G4bool Reset();
55  // Return true if the H1 vector is empty
56  G4bool IsEmpty() const;
57 
58  protected:
59 
60  // Method for merge (MT)
61  void AddTVector(const std::vector<T*>& tVector);
62 
63  // Iterators
64  typename std::vector<T*>::iterator BeginT();
65  typename std::vector<T*>::iterator EndT();
66  typename std::vector<T*>::const_iterator BeginConstT() const;
67  typename std::vector<T*>::const_iterator EndConstT() const;
68 
69  T* GetTInFunction(G4int id,
70  G4String functionName,
71  G4bool warn = true,
72  G4bool onlyIfActive = true) const;
73 
74  G4int RegisterT(T* t, const G4String& name);
75 
76  G4int GetTId(const G4String& name, G4bool warn = true) const;
77 
78  // data members
80  std::vector<T*> fTVector;
81  std::map<G4String, G4int> fNameIdMap;
82  std::shared_ptr<G4HnManager> fHnManager;
83 };
84 
85 // inline functions
86 
87 #include "G4THnManager.icc"
88 
89 #endif
90