Import Geant4 10.7.0 source tree
This commit is contained in:
@@ -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; }
|
||||
|
||||
|
||||
Reference in New Issue
Block a user