Geant4 11.3.0
Toolkit for the simulation of the passage of particles through matter
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Pages
G4VNtupleFileManager.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// The abstract base class for ntuple file output.
28//
29// Author: Ivana Hrivnacova, 15/09/2020 (ivana@ipno.in2p3.fr)
30
31#ifndef G4VNtupleFileManager_h
32#define G4VNtupleFileManager_h 1
33
35#include "globals.hh"
36
37#include <memory>
38#include <string_view>
39#include <utility>
40
43
49
51{
52 // Disable using the object managers outside G4VAnalysisManager and
53 // its messenger
54 friend class G4VAnalysisManager;
55
56 public:
59 virtual ~G4VNtupleFileManager() = default;
60
61 // deleted copy constructor & assignment operator
64
65 // MT/MPI
66 virtual void SetNtupleMerging(G4bool mergeNtuples,
67 G4int nofReducedNtupleFiles = 0);
68 virtual void SetNtupleRowWise(G4bool rowWise, G4bool rowMode = true);
69 virtual void SetBasketSize(unsigned int basketSize);
70 virtual void SetBasketEntries(unsigned int basketEntries);
71
72 virtual std::shared_ptr<G4VNtupleManager> CreateNtupleManager() = 0;
73 virtual void SetBookingManager(std::shared_ptr<G4NtupleBookingManager> bookingManager);
74
75 // Methods to be performed at file management
76 virtual G4bool ActionAtOpenFile(const G4String& /*fileName*/) = 0;
77 virtual G4bool ActionAtWrite() = 0;
79 virtual G4bool Reset() = 0;
80 virtual G4bool IsNtupleMergingSupported() const;
81 virtual G4NtupleMergeMode GetMergeMode() const;
82
83 // Get methods
84 G4String GetFileType() const;
85
86 protected:
87 // Methods for verbose
88 void Message(G4int level,
89 const G4String& action,
90 const G4String& objectType,
91 const G4String& objectName = "",
92 G4bool success = true) const;
93
94 // Static data members
97 std::shared_ptr<G4NtupleBookingManager> fBookingManager { nullptr };
98
99 private:
100 // Static data members
101 static constexpr std::string_view fkClass { "G4VNtupleFileManager" };
102};
103
104// inline functions
105
107 std::shared_ptr<G4NtupleBookingManager> bookingManager)
108{
109 fBookingManager = std::move(bookingManager);
110}
111
113 return false;
114}
115
117 return fFileType;
118}
119
121 G4int level, const G4String& action, const G4String& objectType,
122 const G4String& objectName, G4bool success) const
123{
124 fState.Message(level, action, objectType, objectName, success);
125}
126
130
131#endif
bool G4bool
Definition G4Types.hh:86
int G4int
Definition G4Types.hh:85
G4VNtupleFileManager & operator=(const G4VNtupleFileManager &rhs)=delete
virtual void SetNtupleMerging(G4bool mergeNtuples, G4int nofReducedNtupleFiles=0)
virtual G4bool ActionAtCloseFile()=0
virtual G4NtupleMergeMode GetMergeMode() const
virtual G4bool IsNtupleMergingSupported() const
G4VNtupleFileManager(const G4VNtupleFileManager &rhs)=delete
virtual G4bool ActionAtWrite()=0
virtual void SetNtupleRowWise(G4bool rowWise, G4bool rowMode=true)
virtual void SetBookingManager(std::shared_ptr< G4NtupleBookingManager > bookingManager)
virtual std::shared_ptr< G4VNtupleManager > CreateNtupleManager()=0
virtual void SetBasketSize(unsigned int basketSize)
virtual void SetBasketEntries(unsigned int basketEntries)
std::shared_ptr< G4NtupleBookingManager > fBookingManager
virtual G4bool ActionAtOpenFile(const G4String &)=0
G4VNtupleFileManager(const G4AnalysisManagerState &state, G4String fileType)
virtual G4bool Reset()=0
void Message(G4int level, const G4String &action, const G4String &objectType, const G4String &objectName="", G4bool success=true) const
virtual ~G4VNtupleFileManager()=default
G4VNtupleFileManager()=delete
const G4AnalysisManagerState & fState