Geant4  10.02.p03
G4RootFileManager Class Reference

#include <G4RootFileManager.hh>

Inheritance diagram for G4RootFileManager:
Collaboration diagram for G4RootFileManager:

Public Member Functions

 G4RootFileManager (const G4AnalysisManagerState &state)
 
virtual ~G4RootFileManager ()
 
virtual G4bool OpenFile (const G4String &fileName) final
 
virtual G4bool WriteFile () final
 
virtual G4bool CloseFile () final
 
G4bool CreateHistoDirectory ()
 
G4bool CreateNtupleDirectory ()
 
tools::wroot::directory * GetHistoDirectory () const
 
tools::wroot::directory * GetNtupleDirectory () const
 
- Public Member Functions inherited from G4VFileManager
 G4VFileManager (const G4AnalysisManagerState &state)
 
virtual ~G4VFileManager ()
 
virtual G4bool SetFileName (const G4String &fileName) final
 
void LockHistoDirectoryName ()
 
void LockNtupleDirectoryName ()
 
G4bool SetHistoDirectoryName (const G4String &dirName)
 
G4bool SetNtupleDirectoryName (const G4String &dirName)
 
G4bool IsOpenFile () const
 
G4String GetHistoDirectoryName () const
 
G4String GetNtupleDirectoryName () const
 
- Public Member Functions inherited from G4BaseFileManager
 G4BaseFileManager (const G4AnalysisManagerState &state)
 
virtual ~G4BaseFileManager ()
 
G4String GetFileName () const
 
G4String GetFullFileName (const G4String &baseFileName="", G4bool isPerThread=true) const
 
G4String GetHnFileName (const G4String &hnType, const G4String &hnName) const
 
G4String GetNtupleFileName (const G4String &ntupleName) const
 
G4String GetPlotFileName () const
 
G4String GetFileType () const
 

Private Attributes

std::unique_ptr< tools::wroot::filefFile
 
tools::wroot::directory * fHistoDirectory
 
tools::wroot::directory * fNtupleDirectory
 

Additional Inherited Members

- Protected Member Functions inherited from G4BaseFileManager
G4String TakeOffExtension (G4String &name) const
 
- Protected Attributes inherited from G4VFileManager
G4bool fIsOpenFile
 
G4String fHistoDirectoryName
 
G4String fNtupleDirectoryName
 
G4bool fLockFileName
 
G4bool fLockHistoDirectoryName
 
G4bool fLockNtupleDirectoryName
 
- Protected Attributes inherited from G4BaseFileManager
const G4AnalysisManagerStatefState
 
G4String fFileName
 

Detailed Description

Definition at line 48 of file G4RootFileManager.hh.

Constructor & Destructor Documentation

◆ G4RootFileManager()

G4RootFileManager::G4RootFileManager ( const G4AnalysisManagerState state)
explicit

Definition at line 44 of file G4RootFileManager.cc.

45  : G4VFileManager(state),
46  fFile(nullptr),
47  fHistoDirectory(nullptr),
48  fNtupleDirectory(nullptr)
49 {}
G4VFileManager(const G4AnalysisManagerState &state)
tools::wroot::directory * fNtupleDirectory
tools::wroot::directory * fHistoDirectory
std::unique_ptr< tools::wroot::file > fFile

◆ ~G4RootFileManager()

G4RootFileManager::~G4RootFileManager ( )
virtual

Definition at line 52 of file G4RootFileManager.cc.

53 {}

Member Function Documentation

◆ CloseFile()

G4bool G4RootFileManager::CloseFile ( )
finalvirtual

Implements G4VFileManager.

Definition at line 114 of file G4RootFileManager.cc.

115 {
116  // close file
117  fFile->close();
118  fLockFileName = false;
119  fIsOpenFile = false;
120 
121  return true;
122 }
std::unique_ptr< tools::wroot::file > fFile

◆ CreateHistoDirectory()

G4bool G4RootFileManager::CreateHistoDirectory ( )

Definition at line 125 of file G4RootFileManager.cc.

126 {
127  if ( fHistoDirectoryName == "" ) {
128  // Do not create a new directory if its name is not set
129  fHistoDirectory = &(fFile->dir());
130  return true;
131  }
132 
133 #ifdef G4VERBOSE
134  if ( fState.GetVerboseL4() )
136  ->Message("create", "directory for histograms", fHistoDirectoryName);
137 #endif
138 
139  fHistoDirectory = fFile->dir().mkdir(fHistoDirectoryName);
140  if ( ! fHistoDirectory ) {
141  G4ExceptionDescription description;
142  description << " "
143  << "cannot create directory " << fHistoDirectoryName;
144  G4Exception("G4RootFileManager::CreateHistoDirectory()",
145  "Analysis_W001", JustWarning, description);
146  return false;
147  }
148 #ifdef G4VERBOSE
149  else {
150  if ( fState.GetVerboseL2() )
152  ->Message("create", "directory for histograms", fHistoDirectoryName);
153  }
154 #endif
155  return true;
156 }
const G4AnalysisManagerState & fState
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String fHistoDirectoryName
tools::wroot::directory * fHistoDirectory
const G4AnalysisVerbose * GetVerboseL2() const
std::unique_ptr< tools::wroot::file > fFile
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4AnalysisVerbose * GetVerboseL4() const
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ CreateNtupleDirectory()

G4bool G4RootFileManager::CreateNtupleDirectory ( )

Definition at line 159 of file G4RootFileManager.cc.

160 {
161  if ( fNtupleDirectoryName == "" ) {
162  // Do not create a new directory if its name is not set
163  fNtupleDirectory = &(fFile->dir());
164  return true;
165  }
166 
167 #ifdef G4VERBOSE
168  if ( fState.GetVerboseL4() )
170  ->Message("create", "directory for ntuples", fNtupleDirectoryName);
171 #endif
172 
174  if ( ! fNtupleDirectory ) {
175  G4ExceptionDescription description;
176  description << " "
177  << "cannot create directory " << fNtupleDirectoryName;
178  G4Exception("G4RootFileManager::CreateNtupleDirectory()",
179  "Analysis_W001", JustWarning, description);
180  return false;
181  }
182 #ifdef G4VERBOSE
183  else {
184  if ( fState.GetVerboseL2() )
186  ->Message("create", "directory for ntuples", fNtupleDirectoryName);
187  }
188 #endif
189  return true;
190 }
const G4AnalysisManagerState & fState
G4String fNtupleDirectoryName
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
tools::wroot::directory * fNtupleDirectory
const G4AnalysisVerbose * GetVerboseL2() const
std::unique_ptr< tools::wroot::file > fFile
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
const G4AnalysisVerbose * GetVerboseL4() const
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
Here is the call graph for this function:
Here is the caller graph for this function:

◆ GetHistoDirectory()

tools::wroot::directory * G4RootFileManager::GetHistoDirectory ( ) const
inline

Definition at line 75 of file G4RootFileManager.hh.

76 { return fHistoDirectory; }
tools::wroot::directory * fHistoDirectory

◆ GetNtupleDirectory()

tools::wroot::directory * G4RootFileManager::GetNtupleDirectory ( ) const
inline

Definition at line 78 of file G4RootFileManager.hh.

79 { return fNtupleDirectory; }
tools::wroot::directory * fNtupleDirectory

◆ OpenFile()

G4bool G4RootFileManager::OpenFile ( const G4String fileName)
finalvirtual

Implements G4VFileManager.

Definition at line 59 of file G4RootFileManager.cc.

60 {
61  // Keep file name
62  fFileName = fileName;
63  auto name = GetFullFileName();
64 
65  // delete previous file if exists
66  //if ( fFile ) delete fFile;
67 
68  // create new file
69  fFile = G4Analysis::make_unique<tools::wroot::file>(G4cout, name);
70  fFile->add_ziper('Z',tools::compress_buffer);
71  fFile->set_compression(fState.GetCompressionLevel());
72 
73  if ( ! fFile->is_open() ) {
74  G4ExceptionDescription description;
75  description << " " << "Cannot open file " << fileName;
76  G4Exception("G4RootAnalysisManager::OpenFile()",
77  "Analysis_W001", JustWarning, description);
78  return false;
79  }
80 
81  // Create directories
82  if ( ! CreateHistoDirectory() ) return false;
83  if ( ! CreateNtupleDirectory() ) return false;
84 
85  fLockFileName = true;
88 
89  fIsOpenFile = true;
90 
91  return true;
92 }
const G4AnalysisManagerState & fState
G4bool fLockHistoDirectoryName
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String name
Definition: TRTMaterials.hh:40
G4String GetFullFileName(const G4String &baseFileName="", G4bool isPerThread=true) const
G4GLOB_DLL std::ostream G4cout
std::unique_ptr< tools::wroot::file > fFile
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4bool fLockNtupleDirectoryName
Here is the call graph for this function:

◆ WriteFile()

G4bool G4RootFileManager::WriteFile ( )
finalvirtual

Implements G4VFileManager.

Definition at line 95 of file G4RootFileManager.cc.

96 {
97 #ifdef G4VERBOSE
98  if ( fState.GetVerboseL4() )
99  fState.GetVerboseL4()->Message("write", "file", GetFullFileName());
100 #endif
101 
102  unsigned int n;
103  auto result = fFile->write(n);
104 
105 #ifdef G4VERBOSE
106  if ( fState.GetVerboseL1() )
107  fState.GetVerboseL1()->Message("write", "file", GetFullFileName(), result);
108 #endif
109 
110  return result;
111 }
const G4AnalysisManagerState & fState
G4String GetFullFileName(const G4String &baseFileName="", G4bool isPerThread=true) const
Char_t n[5]
std::unique_ptr< tools::wroot::file > fFile
const G4AnalysisVerbose * GetVerboseL1() const
const G4AnalysisVerbose * GetVerboseL4() const
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
Here is the call graph for this function:

Member Data Documentation

◆ fFile

std::unique_ptr<tools::wroot::file> G4RootFileManager::fFile
private

Definition at line 68 of file G4RootFileManager.hh.

◆ fHistoDirectory

tools::wroot::directory* G4RootFileManager::fHistoDirectory
private

Definition at line 69 of file G4RootFileManager.hh.

◆ fNtupleDirectory

tools::wroot::directory* G4RootFileManager::fNtupleDirectory
private

Definition at line 70 of file G4RootFileManager.hh.


The documentation for this class was generated from the following files: