Geant4-11
G4TNtupleManager.hh
Go to the documentation of this file.
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 template for ntuple managers for all output types.
28//
29// Author: Ivana Hrivnacova, 19/06/2015 (ivana@ipno.in2p3.fr)
30
31#ifndef G4TNtupleManager_h
32#define G4TNtupleManager_h 1
33
36#include "globals.hh"
37
38#include <vector>
39#include <string_view>
40
41// NT - ntuple type, FT - file type
42template <typename NT, typename FT>
44
45 public:
47 G4TNtupleManager() = delete;
49
50 protected:
51 // Methods to manipulate ntuples
52 virtual G4int CreateNtuple(G4NtupleBooking* ntupleBooking) override;
53
55 const std::vector<G4NtupleBooking*>& ntupleBookings);
56
57 virtual G4bool Reset();
58 virtual void Clear() override;
59
60 // Methods to create ntuples
61 // are implemented in G4NtupleBookingManager base class
62
63 // Methods to fill ntuples
64 // Methods for ntuple with id = FirstNtupleId (from base class)
70 // Methods for ntuple with id > FirstNtupleId (when more ntuples exist)
71 virtual G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value) final;
72 virtual G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value) final;
73 virtual G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value) final;
74 virtual G4bool FillNtupleSColumn(G4int ntupleId, G4int columnId,
75 const G4String& value) final;
76 virtual G4bool AddNtupleRow(G4int ntupleId) override;
77
78 // Activation option
79 //
80 virtual void SetActivation(G4bool activation) final;
81 virtual void SetActivation(G4int ntupleId, G4bool activation) final;
82 virtual G4bool GetActivation(G4int ntupleId) const final;
83
84 // Access methods
85 NT* GetNtuple() const;
86 NT* GetNtuple(G4int ntupleId) const;
87 virtual G4int GetNofNtuples() const final;
88
89 // Iterators
90 typename std::vector<NT*>::iterator BeginNtuple();
91 typename std::vector<NT*>::iterator EndNtuple();
92 typename std::vector<NT*>::const_iterator BeginConstNtuple() const;
93 typename std::vector<NT*>::const_iterator EndConstNtuple() const;
94
95 // Data members
97 std::vector<NT*> fNtupleVector;
98
99 private:
100 // Methods
101
102 // Fuctions which are specific to output type
103 //
105 G4TNtupleDescription<NT, FT>* ntupleDescription) = 0;
106
107 virtual void FinishTNtuple(
108 G4TNtupleDescription<NT, FT>* ntupleDescription,
109 G4bool fromBooking) = 0;
110
111 // Common implementation
112 //
113
115 std::string_view function,
116 G4bool warn = true) const;
118 std::string_view function,
119 G4bool warn = true) const;
120
121 // template functions for filling ntuple columns
122 template <typename T>
123 G4bool FillNtupleTColumn(G4int ntupleId, G4int columnId, const T& value);
124
125 // Static data members
126 static constexpr std::string_view fkClass { "G4TNtupleManager<NT,FT>" };
127};
128
129#include "G4TNtupleManager.icc"
130
131#endif
132
G4double(* function)(G4double)
float G4float
Definition: G4Types.hh:84
double G4double
Definition: G4Types.hh:83
bool G4bool
Definition: G4Types.hh:86
int G4int
Definition: G4Types.hh:85
virtual G4bool FillNtupleSColumn(G4int id, const G4String &value) final
virtual G4bool FillNtupleFColumn(G4int id, G4float value) final
virtual G4bool FillNtupleDColumn(G4int id, G4double value) final
virtual G4bool FillNtupleIColumn(G4int id, G4int value) final
virtual G4bool AddNtupleRow() final
virtual G4bool GetActivation(G4int ntupleId) const final
std::vector< NT * >::const_iterator BeginConstNtuple() const
virtual G4bool FillNtupleSColumn(G4int ntupleId, G4int columnId, const G4String &value) final
G4TNtupleManager()=delete
G4TNtupleManager(const G4AnalysisManagerState &state)
G4bool FillNtupleTColumn(G4int ntupleId, G4int columnId, const T &value)
std::vector< G4TNtupleDescription< NT, FT > * > fNtupleDescriptionVector
virtual G4bool Reset()
std::vector< NT * > fNtupleVector
G4TNtupleDescription< NT, FT > * GetNtupleDescriptionInFunction(G4int id, std::string_view function, G4bool warn=true) const
virtual void CreateTNtupleFromBooking(G4TNtupleDescription< NT, FT > *ntupleDescription)=0
static constexpr std::string_view fkClass
NT * GetNtuple(G4int ntupleId) const
std::vector< NT * >::const_iterator EndConstNtuple() const
virtual G4int CreateNtuple(G4NtupleBooking *ntupleBooking) override
std::vector< NT * >::iterator EndNtuple()
virtual G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value) final
virtual void SetActivation(G4bool activation) final
virtual void Clear() override
NT * GetNtuple() const
virtual G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value) final
NT * GetNtupleInFunction(G4int id, std::string_view function, G4bool warn=true) const
virtual G4bool AddNtupleRow(G4int ntupleId) override
virtual void FinishTNtuple(G4TNtupleDescription< NT, FT > *ntupleDescription, G4bool fromBooking)=0
virtual G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value) final
std::vector< NT * >::iterator BeginNtuple()
virtual G4int GetNofNtuples() const final
virtual void CreateNtuplesFromBooking(const std::vector< G4NtupleBooking * > &ntupleBookings)
virtual void SetActivation(G4int ntupleId, G4bool activation) final