33#include "G4AnalysisUtilities.hh"
37using namespace G4Analysis;
52 fNtupleFileManager.reset();
55 fNtupleFileManager = std::make_shared<G4RootMpiNtupleFileManager>(fState);
56 SetNtupleFileManager(fNtupleFileManager);
57 fNtupleFileManager->SetFileManager(fFileManager);
58 fNtupleFileManager->SetBookingManager(fNtupleBookingManager);
73 G4int mpiRank, G4int mpiSize,
82 std::static_pointer_cast<G4RootMpiNtupleFileManager>(fNtupleFileManager)
93 if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kNone ) {
94 return G4ToolsAnalysisManager::OpenFileImpl(fileName);
99 if ( ! fVNtupleManager ) {
100 SetNtupleManager(fNtupleFileManager->CreateNtupleManager());
107 result &= fFileManager->OpenFile(fileName);
110 result &= fNtupleFileManager->ActionAtOpenFile(fFileManager->GetFullFileName());
122 result &= G4ToolsAnalysisManager::WriteImpl();
126 if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kSlave ) {
128 result &= fFileManager->WriteFiles();
131 Message(kVL2,
"write",
"slave files",
"", result);
142 Message(kVL4,
"close",
"files");
145 if (fVNtupleFileManager) {
146 result &= fVNtupleFileManager->ActionAtCloseFile();
153 if ( ! fVFileManager->CloseFiles() ) {
154 Warn(
"Closing files failed", fkClass,
"CloseFileImpl");
160 if ( ! fVFileManager->DeleteEmptyFiles() ) {
161 Warn(
"Deleting empty files failed", fkClass,
"CloseFileImpl");
168 Warn(
"Resetting data failed", fkClass,
"CloseFileImpl");
173 Message(kVL3,
"close",
"files",
"", result);
174 G4cout <<
"### Done G4RootMpiAnalysisManager::CloseFileImpl" << G4endl;
void SetMpiNtupleMerging(tools::impi *impi, G4int mpiRank, G4int mpiSize, G4int nofReducedNtupleFiles=0)
G4RootMpiAnalysisManager(G4bool isMaster=true)
virtual G4bool OpenFileImpl(const G4String &fileName) final
virtual G4bool WriteImpl() final
static G4RootMpiAnalysisManager * fgInstance
virtual ~G4RootMpiAnalysisManager()
static G4RootMpiAnalysisManager * Instance()
virtual G4bool CloseFileImpl(G4bool reset) final