Geant4  10.03.p02
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
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 ()
 
void SetNofNtupleFiles (G4int nofFiles)
 
void SetBasketSize (unsigned int basketSize)
 
tools::wroot::directory * GetHistoDirectory () const
 
tools::wroot::directory * GetNtupleDirectory () const
 
std::shared_ptr
< tools::wroot::file > 
GetNtupleFile (G4int index) const
 
tools::wroot::directory * GetMainNtupleDirectory (G4int index) const
 
unsigned int GetBasketSize () 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 GetNtupleFileName (G4int ntupleFileNumber) const
 
G4String GetPlotFileName () const
 
G4String GetFileType () const
 

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 ( const G4AnalysisManagerState state)
explicit

Definition at line 43 of file G4RootFileManager.cc.

44  : G4VFileManager(state),
45  fFile(nullptr),
46  fHistoDirectory(nullptr),
47  fNtupleDirectory(nullptr),
48  fNofNtupleFiles(0),
49  fNtupleFiles(),
50  fMainNtupleDirectories(),
51  fBasketSize(0)
52 {}
G4VFileManager(const G4AnalysisManagerState &state)
G4RootFileManager::~G4RootFileManager ( )
virtual

Definition at line 55 of file G4RootFileManager.cc.

56 {}

Member Function Documentation

G4bool G4RootFileManager::CloseFile ( )
finalvirtual

Implements G4VFileManager.

Definition at line 233 of file G4RootFileManager.cc.

234 {
235  auto finalResult = true;
236 
237  auto result = CloseFile(fFile, GetFullFileName());
238  finalResult = finalResult && result;
239 
240  auto counter = 0;
241  for ( auto ntupleFile : fNtupleFiles ) {
242  result = CloseFile(ntupleFile, GetNtupleFileName(counter++));
243  finalResult = finalResult && result;
244  }
245 
246  fLockFileName = false;
247  fIsOpenFile = false;
248 
249  return finalResult;
250 }
G4double G4ParticleHPJENDLHEData::G4double result
G4String GetNtupleFileName(const G4String &ntupleName) const
virtual G4bool CloseFile() final
G4String GetFullFileName(const G4String &baseFileName="", G4bool isPerThread=true) const

Here is the call graph for this function:

G4bool G4RootFileManager::CreateHistoDirectory ( )

Definition at line 253 of file G4RootFileManager.cc.

254 {
255  if ( fHistoDirectoryName == "" ) {
256  // Do not create a new directory if its name is not set
257  fHistoDirectory = &(fFile->dir());
258  return true;
259  }
260 
261 #ifdef G4VERBOSE
262  if ( fState.GetVerboseL4() )
264  ->Message("create", "directory for histograms", fHistoDirectoryName);
265 #endif
266 
267  fHistoDirectory = fFile->dir().mkdir(fHistoDirectoryName);
268  if ( ! fHistoDirectory ) {
269  G4ExceptionDescription description;
270  description << " "
271  << "cannot create directory " << fHistoDirectoryName;
272  G4Exception("G4RootFileManager::CreateHistoDirectory()",
273  "Analysis_W001", JustWarning, description);
274  return false;
275  }
276 #ifdef G4VERBOSE
277  else {
278  if ( fState.GetVerboseL2() )
280  ->Message("create", "directory for histograms", fHistoDirectoryName);
281  }
282 #endif
283  return true;
284 }
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
const G4AnalysisManagerState & fState
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4String fHistoDirectoryName
const G4AnalysisVerbose * GetVerboseL2() const
const G4AnalysisVerbose * GetVerboseL4() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

Here is the caller graph for this function:

G4bool G4RootFileManager::CreateNtupleDirectory ( )

Definition at line 287 of file G4RootFileManager.cc.

288 {
289  if ( fNtupleDirectoryName == "" ) {
290  // Do not create a new directory if its name is not set
291  fNtupleDirectory = &(fFile->dir());
292  return true;
293  }
294 
295 #ifdef G4VERBOSE
296  if ( fState.GetVerboseL4() )
298  ->Message("create", "directory for ntuples", fNtupleDirectoryName);
299 #endif
300 
301  fNtupleDirectory = fFile->dir().mkdir(fNtupleDirectoryName);
302  if ( ! fNtupleDirectory ) {
303  G4ExceptionDescription description;
304  description << " "
305  << "cannot create directory " << fNtupleDirectoryName;
306  G4Exception("G4RootFileManager::CreateNtupleDirectory()",
307  "Analysis_W001", JustWarning, description);
308  return false;
309  }
310 #ifdef G4VERBOSE
311  else {
312  if ( fState.GetVerboseL2() )
314  ->Message("create", "directory for ntuples", fNtupleDirectoryName);
315  }
316 #endif
317  return true;
318 }
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
const G4AnalysisManagerState & fState
G4String fNtupleDirectoryName
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
const G4AnalysisVerbose * GetVerboseL2() const
const G4AnalysisVerbose * GetVerboseL4() const
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

Here is the caller graph for this function:

unsigned int G4RootFileManager::GetBasketSize ( ) const
inline

Definition at line 105 of file G4RootFileManager.hh.

106 { return fBasketSize; }
tools::wroot::directory * G4RootFileManager::GetHistoDirectory ( ) const
inline

Definition at line 99 of file G4RootFileManager.hh.

100 { return fHistoDirectory; }
tools::wroot::directory * G4RootFileManager::GetMainNtupleDirectory ( G4int  index) const

Definition at line 339 of file G4RootFileManager.cc.

340 {
341  if ( index==0 && ( ! fMainNtupleDirectories.size() ) ) return fNtupleDirectory;
342 
343  if ( index < 0 || index >= G4int(fMainNtupleDirectories.size()) ) {
344  G4String inFunction = "G4RootFileManager::GetMainNtupleDirectory()";
345  G4ExceptionDescription description;
346  description << " " << "main ntuple directory " << index << " does not exist.";
347  G4Exception(inFunction, "Analysis_W011", JustWarning, description);
348  return nullptr;
349  }
350 
351  return fMainNtupleDirectories[index];
352 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
int G4int
Definition: G4Types.hh:78
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

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

Definition at line 102 of file G4RootFileManager.hh.

103 { return fNtupleDirectory; }
std::shared_ptr< tools::wroot::file > G4RootFileManager::GetNtupleFile ( G4int  index) const

Definition at line 322 of file G4RootFileManager.cc.

323 {
324  if ( index==0 && ( ! fNtupleFiles.size() ) ) return fFile;
325 
326  if ( index < 0 || index >= G4int(fNtupleFiles.size()) ) {
327  G4String inFunction = "G4RootFileManager::GetNtupleFile()";
328  G4ExceptionDescription description;
329  description << " " << "ntuple file " << index << " does not exist.";
330  G4Exception(inFunction, "Analysis_W011", JustWarning, description);
331  return nullptr;
332  }
333 
334  return fNtupleFiles[index];
335 }
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
int G4int
Definition: G4Types.hh:78
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41

Here is the call graph for this function:

G4bool G4RootFileManager::OpenFile ( const G4String fileName)
finalvirtual

Implements G4VFileManager.

Definition at line 177 of file G4RootFileManager.cc.

178 {
179  // Keep file name
180  fFileName = fileName;
181  auto name = GetFullFileName();
182 
183  // delete previous file if exists
184  //if ( fFile ) delete fFile;
185 
186  // create new file
187  fFile = std::make_shared<tools::wroot::file>(G4cout, name);
188  fFile->add_ziper('Z',tools::compress_buffer);
189  fFile->set_compression(fState.GetCompressionLevel());
190 
191  if ( ! fFile->is_open() ) {
192  fFile = nullptr;
193  G4ExceptionDescription description;
194  description << " " << "Cannot open file " << fileName;
195  G4Exception("G4RootAnalysisManager::OpenFile()",
196  "Analysis_W001", JustWarning, description);
197  return false;
198  }
199 
200  // Create directories
201  if ( ! CreateHistoDirectory() ) return false;
202  if ( ! CreateNtupleDirectory() ) return false;
203 
204  // Open ntuple files
205  OpenNtupleFiles();
206 
207  fLockFileName = true;
210 
211  fIsOpenFile = true;
212 
213  return true;
214 }
const XML_Char * name
Definition: expat.h:151
const G4AnalysisManagerState & fState
G4bool fLockHistoDirectoryName
std::ostringstream G4ExceptionDescription
Definition: globals.hh:76
G4GLOB_DLL std::ostream G4cout
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
Definition: G4Exception.cc:41
G4bool fLockNtupleDirectoryName
G4String GetFullFileName(const G4String &baseFileName="", G4bool isPerThread=true) const

Here is the call graph for this function:

void G4RootFileManager::SetBasketSize ( unsigned int  basketSize)
inline

Definition at line 96 of file G4RootFileManager.hh.

97 { fBasketSize = basketSize; }
void G4RootFileManager::SetNofNtupleFiles ( G4int  nofFiles)
inline

Definition at line 93 of file G4RootFileManager.hh.

94 { fNofNtupleFiles = nofFiles; }
G4bool G4RootFileManager::WriteFile ( )
finalvirtual

Implements G4VFileManager.

Definition at line 217 of file G4RootFileManager.cc.

218 {
219  auto finalResult = true;
220 
221  auto result = WriteFile(fFile, GetFullFileName());
222  finalResult = finalResult && result;
223 
224  auto counter = 0;
225  for ( auto ntupleFile : fNtupleFiles ) {
226  result = WriteFile(ntupleFile, GetNtupleFileName(counter++));
227  finalResult = finalResult && result;
228  }
229  return finalResult;
230 }
G4double G4ParticleHPJENDLHEData::G4double result
G4String GetNtupleFileName(const G4String &ntupleName) const
virtual G4bool WriteFile() final
G4String GetFullFileName(const G4String &baseFileName="", G4bool isPerThread=true) const

Here is the call graph for this function:


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