Geant4 11.2.2
Toolkit for the simulation of the passage of particles through matter
Loading...
Searching...
No Matches
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 ([email protected])
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 G4int CreateNtuple(G4NtupleBooking* ntupleBooking) override;
53
55 const std::vector<G4NtupleBooking*>& ntupleBookings);
56
57 virtual G4bool Reset();
58 void Clear() override;
59
60 // Method to delete selected ntuple
61 G4bool Delete(G4int id) override;
62
63 // Methods to create ntuples
64 // are implemented in G4NtupleBookingManager base class
65
66 // Methods to fill ntuples
67 // Methods for ntuple with id = FirstNtupleId (from base class)
73 // Methods for ntuple with id > FirstNtupleId (when more ntuples exist)
74 G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value) final;
75 G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value) final;
76 G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value) final;
77 G4bool FillNtupleSColumn(G4int ntupleId, G4int columnId, const G4String& value) final;
78 G4bool AddNtupleRow(G4int ntupleId) override;
79
80 // Activation option
81 //
82 void SetActivation(G4bool activation) final;
83 void SetActivation(G4int ntupleId, G4bool activation) final;
84 G4bool GetActivation(G4int ntupleId) const final;
85
86 // New cycle option
87 void SetNewCycle(G4bool value) override;
88 G4bool GetNewCycle() const override;
89
90 // Access methods
91 NT* GetNtuple() const;
92 NT* GetNtuple(G4int ntupleId) const;
93
94 // Iterators
95 typename std::vector<NT*>::iterator BeginNtuple();
96 typename std::vector<NT*>::iterator EndNtuple();
97 typename std::vector<NT*>::const_iterator BeginConstNtuple() const;
98 typename std::vector<NT*>::const_iterator EndConstNtuple() const;
99
100 // Data members
101 std::vector<G4TNtupleDescription<NT, FT>*> fNtupleDescriptionVector;
102 std::vector<NT*> fNtupleVector;
103 const std::vector<G4NtupleBooking*>* fNtupleBookingVector { nullptr };
104 G4bool fNewCycle { false };
105
106 private:
107 // Methods
108
109 // Fuctions which are specific to output type
110 //
111 virtual void CreateTNtupleFromBooking(
112 G4TNtupleDescription<NT, FT>* ntupleDescription) = 0;
113
114 virtual void FinishTNtuple(
115 G4TNtupleDescription<NT, FT>* ntupleDescription,
116 G4bool fromBooking) = 0;
117
118 // Common implementation
119 //
120
121 G4TNtupleDescription<NT, FT>* GetNtupleDescriptionInFunction(G4int id,
122 std::string_view function,
123 G4bool warn = true) const;
124 NT* GetNtupleInFunction(G4int id,
125 std::string_view function,
126 G4bool warn = true) const;
127
128 // template functions for filling ntuple columns
129 template <typename T>
130 G4bool FillNtupleTColumn(G4int ntupleId, G4int columnId, const T& value);
131
132 // Static data members
133 static constexpr std::string_view fkClass { "G4TNtupleManager<NT,FT>" };
134};
135
136#include "G4TNtupleManager.icc"
137
138#endif
139
G4double(*)(G4double) function
float G4float
Definition G4Types.hh:84
double G4double
Definition G4Types.hh:83
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
G4bool FillNtupleSColumn(G4int id, const G4String &value) final
G4bool FillNtupleFColumn(G4int id, G4float value) final
G4bool FillNtupleDColumn(G4int id, G4double value) final
G4bool FillNtupleIColumn(G4int id, G4int value) final
G4bool GetActivation(G4int ntupleId) const final
void Clear() override
G4bool FillNtupleFColumn(G4int ntupleId, G4int columnId, G4float value) final
G4bool FillNtupleSColumn(G4int ntupleId, G4int columnId, const G4String &value) final
std::vector< NT * >::const_iterator BeginConstNtuple() const
G4bool Delete(G4int id) override
G4int CreateNtuple(G4NtupleBooking *ntupleBooking) override
~G4TNtupleManager() override
G4bool FillNtupleDColumn(G4int ntupleId, G4int columnId, G4double value) final
G4TNtupleManager()=delete
G4TNtupleManager(const G4AnalysisManagerState &state)
std::vector< G4TNtupleDescription< NT, FT > * > fNtupleDescriptionVector
virtual G4bool Reset()
std::vector< NT * > fNtupleVector
G4bool AddNtupleRow(G4int ntupleId) override
void SetNewCycle(G4bool value) override
NT * GetNtuple(G4int ntupleId) const
std::vector< NT * >::const_iterator EndConstNtuple() const
G4bool FillNtupleIColumn(G4int ntupleId, G4int columnId, G4int value) final
G4bool GetNewCycle() const override
std::vector< NT * >::iterator EndNtuple()
const std::vector< G4NtupleBooking * > * fNtupleBookingVector
NT * GetNtuple() const
void SetActivation(G4int ntupleId, G4bool activation) final
std::vector< NT * >::iterator BeginNtuple()
virtual void CreateNtuplesFromBooking(const std::vector< G4NtupleBooking * > &ntupleBookings)
void SetActivation(G4bool activation) final