Import Geant4 10.7.0 source tree

This commit is contained in:
Gabriele Cosmo
2020-12-04 12:30:43 +01:00
parent 67ba86d073
commit dab42d2018
3770 changed files with 226369 additions and 286486 deletions
@@ -31,85 +31,92 @@
#ifndef G4RootFileManager_h
#define G4RootFileManager_h 1
#include "G4VFileManager.hh"
#include "G4VTFileManager.hh"
#include "G4RootFileDef.hh"
#include "globals.hh"
#include <vector>
#include <memory>
#include <tuple>
namespace tools {
namespace wroot {
class file;
class directory;
}
namespace wroot{
class ntuple;
}
}
class G4RootFileManager : public G4VFileManager
// Types alias
using RootNtupleDescription = G4TNtupleDescription<tools::wroot::ntuple, G4RootFile>;
class G4RootFileManager : public G4VTFileManager<G4RootFile>
{
public:
explicit G4RootFileManager(const G4AnalysisManagerState& state);
virtual ~G4RootFileManager();
// Methods to manipulate file
virtual G4bool OpenFile(const G4String& fileName) final;
virtual G4bool WriteFile() final;
virtual G4bool CloseFile() final;
using G4BaseFileManager::GetNtupleFileName;
using G4VTFileManager<G4RootFile>::WriteFile;
using G4VTFileManager<G4RootFile>::CloseFile;
// Methods to manipulate file from base classes
virtual G4bool OpenFile(const G4String& fileName) final;
virtual G4String GetFileType() const final { return "root"; }
// Specific methods for files per objects
std::shared_ptr<G4RootFile> CreateNtupleFile(RootNtupleDescription* ntupleDescription,
G4int mainNumber = -1);
std::shared_ptr<G4RootFile> GetNtupleFile(RootNtupleDescription* ntupleDescription,
G4bool perThread = true,
G4int mainNumber = -1) const;
G4bool WriteNtupleFile(RootNtupleDescription* ntupleDescription);
G4bool CloseNtupleFile(RootNtupleDescription* ntupleDescription);
G4bool CreateHistoDirectory();
G4bool CreateNtupleDirectory();
// Set methods
void SetNofNtupleFiles(G4int nofFiles);
void SetBasketSize(unsigned int basketSize);
void SetBasketEntries(unsigned int basketEntries);
// Get methods
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;
unsigned int GetBasketEntries() const;
protected:
// Methods derived from templated base class
virtual std::shared_ptr<G4RootFile> CreateFileImpl(const G4String& fileName) final;
virtual G4bool WriteFileImpl(std::shared_ptr<G4RootFile> file) final;
virtual G4bool CloseFileImpl(std::shared_ptr<G4RootFile> file) final;
private:
// methods
G4bool OpenNtupleFiles();
G4bool WriteFile(std::shared_ptr<tools::wroot::file> rfile,
const G4String& fileName);
G4bool CloseFile(std::shared_ptr<tools::wroot::file> rfile,
const G4String& fileName);
tools::wroot::directory* CreateDirectory(
std::shared_ptr<tools::wroot::file> rfile,
const G4String& directoryName,
const G4String& objectType) const;
G4String GetNtupleFileName(
RootNtupleDescription* ntupleDescription,
G4bool perThread = true,
G4int mainNumber = -1) const;
// data members
std::shared_ptr<tools::wroot::file> fFile;
tools::wroot::directory* fHistoDirectory;
tools::wroot::directory* fNtupleDirectory;
G4int fNofNtupleFiles;
std::vector<std::shared_ptr<tools::wroot::file> > fNtupleFiles;
std::vector<tools::wroot::directory*> fMainNtupleDirectories;
unsigned int fBasketSize;
unsigned int fBasketEntries;
};
// inline functions
inline void G4RootFileManager::SetNofNtupleFiles(G4int nofFiles)
{ fNofNtupleFiles = nofFiles; }
//_____________________________________________________________________________
inline void G4RootFileManager::SetBasketSize(unsigned int basketSize)
{ fBasketSize = basketSize; }
//_____________________________________________________________________________
inline void G4RootFileManager::SetBasketEntries(unsigned int basketEntries)
{ fBasketEntries = basketEntries; }
inline tools::wroot::directory* G4RootFileManager::GetHistoDirectory() const
{ return fHistoDirectory; }
inline tools::wroot::directory* G4RootFileManager::GetNtupleDirectory() const
{ return fNtupleDirectory; }
//_____________________________________________________________________________
inline unsigned int G4RootFileManager::GetBasketSize() const
{ return fBasketSize; }
//_____________________________________________________________________________
inline unsigned int G4RootFileManager::GetBasketEntries() const
{ return fBasketEntries; }