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