ECCE @ EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
G4VNtupleManager.hh
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file G4VNtupleManager.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 pure abstract base class for Ntuple manager.
28 // It defines functions independent from the output type.
29 //
30 // Author: Ivana Hrivnacova, 18/06/2013 (ivana@ipno.in2p3.fr)
31 
32 #ifndef G4VNtupleManager_h
33 #define G4VNtupleManager_h 1
34 
35 #include "G4BaseAnalysisManager.hh"
36 #include "globals.hh"
37 
38 #include <vector>
39 
41 {
42  // Disable using the object managers outside G4VAnalysisManager and
43  // its messenger
44  friend class G4VAnalysisManager;
45 
46  public:
48  : G4BaseAnalysisManager(state) {}
49  virtual ~G4VNtupleManager() {}
50 
51  // deleted copy constructor & assignment operator
52  G4VNtupleManager(const G4VNtupleManager& rhs) = delete;
53  G4VNtupleManager& operator=(const G4VNtupleManager& rhs) = delete;
54 
55  protected:
56  // Methods for handling ntuples
57  virtual G4int CreateNtuple(const G4String& name, const G4String& title) = 0;
58 
59  // Create columns in the last created ntuple
60  virtual G4int CreateNtupleIColumn(const G4String& name,
61  std::vector<int>* vector) = 0;
62  virtual G4int CreateNtupleFColumn(const G4String& name,
63  std::vector<float>* vector) = 0;
64  virtual G4int CreateNtupleDColumn(const G4String& name,
65  std::vector<double>* vector) = 0;
66  virtual G4int CreateNtupleSColumn(const G4String& name) = 0;
67  virtual void FinishNtuple() = 0;
68 
69  // Create columns in the ntuple with given id
70  virtual G4int CreateNtupleIColumn(G4int ntupleId, const G4String& name,
71  std::vector<int>* vector) = 0;
72  virtual G4int CreateNtupleFColumn(G4int ntupleId, const G4String& name,
73  std::vector<float>* vector) = 0;
74  virtual G4int CreateNtupleDColumn(G4int ntupleId, const G4String& name,
75  std::vector<double>* vector) = 0;
76  virtual G4int CreateNtupleSColumn(G4int ntupleId, const G4String& name) = 0;
77  virtual void FinishNtuple(G4int ntupleId) = 0;
78 
79  // The ntuple column ids are generated automatically starting from 0;
80  // with the following function it is possible to change it
81  // to start from another value
82  virtual G4bool SetFirstNtupleColumnId(G4int firstId) = 0;
83  virtual G4int GetFirstNtupleColumnId() const = 0;
84 
85  // Methods to fill ntuples
86  // Methods for ntuple with id = FirstNtupleId
87  virtual G4bool FillNtupleIColumn(G4int id, G4int value) = 0;
88  virtual G4bool FillNtupleFColumn(G4int id, G4float value) = 0;
89  virtual G4bool FillNtupleDColumn(G4int id, G4double value) = 0;
90  virtual G4bool FillNtupleSColumn(G4int id, const G4String& value) = 0;
91  virtual G4bool AddNtupleRow() = 0;
92 
93  // Methods for ntuple with id > FirstNtupleId (when more ntuples exist)
94  virtual G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value) = 0;
95  virtual G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value) = 0;
96  virtual G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value) = 0;
97  virtual G4bool FillNtupleSColumn(G4int ntupleId, G4int columnId,
98  const G4String& value) = 0;
99  virtual G4bool AddNtupleRow(G4int ntupleId) = 0;
100 
101  // Activation option
102  virtual void SetActivation(G4bool activation) = 0;
103  virtual void SetActivation(G4int id, G4bool activation) = 0;
104  virtual G4bool GetActivation(G4int id) const = 0;
105 
106  // Access methods
107  virtual G4int GetNofNtuples() const = 0;
108  virtual G4int GetNofNtupleBookings() const = 0;
109 };
110 
111 #endif
112