Loading...
Searching...
No Matches
Public Member Functions | Static Public Member Functions | Protected Member Functions | Static Private Attributes | List of all members
G4RootMpiAnalysisManager Class Reference

#include <G4RootMpiAnalysisManager.hh>

Inheritance diagram for G4RootMpiAnalysisManager:
G4RootAnalysisManager G4ToolsAnalysisManager G4VAnalysisManager

Public Member Functions

 G4RootMpiAnalysisManager (G4bool isMaster=true)
 
virtual ~G4RootMpiAnalysisManager ()
 
void SetMpiNtupleMerging (tools::impi *impi, G4int mpiRank, G4int mpiSize, G4int nofReducedNtupleFiles=0)
 

Static Public Member Functions

static G4RootMpiAnalysisManagerInstance ()
 

Protected Member Functions

virtual G4bool OpenFileImpl (const G4String &fileName) final
 
virtual G4bool WriteImpl () final
 
virtual G4bool CloseFileImpl (G4bool reset) final
 

Static Private Attributes

static G4RootMpiAnalysisManagerfgInstance { nullptr }
 

Detailed Description

Definition at line 44 of file G4RootMpiAnalysisManager.hh.

Constructor & Destructor Documentation

◆ G4RootMpiAnalysisManager()

G4RootMpiAnalysisManager::G4RootMpiAnalysisManager ( G4bool  isMaster = true)
explicit

Definition at line 46 of file G4RootMpiAnalysisManager.cc.

48{
49 fgInstance = this;
50
51 // Reset the ntuple file manager
52 fNtupleFileManager.reset();
53
54 // Ntuple file manager
55 fNtupleFileManager = std::make_shared<G4RootMpiNtupleFileManager>(fState);
56 SetNtupleFileManager(fNtupleFileManager);
57 fNtupleFileManager->SetFileManager(fFileManager);
58 fNtupleFileManager->SetBookingManager(fNtupleBookingManager);
59}
static G4RootMpiAnalysisManager * fgInstance

◆ ~G4RootMpiAnalysisManager()

G4RootMpiAnalysisManager::~G4RootMpiAnalysisManager ( )
virtual

Definition at line 62 of file G4RootMpiAnalysisManager.cc.

63{
64 fgInstance = 0;
65}

Member Function Documentation

◆ Instance()

G4RootMpiAnalysisManager * G4RootMpiAnalysisManager::Instance ( )
static

Definition at line 40 of file G4RootMpiAnalysisManager.cc.

41{
42 return fgInstance;
43}

◆ SetMpiNtupleMerging()

void G4RootMpiAnalysisManager::SetMpiNtupleMerging ( tools::impi *  impi,
G4int  mpiRank,
G4int  mpiSize,
G4int  nofReducedNtupleFiles = 0 
)

Definition at line 72 of file G4RootMpiAnalysisManager.cc.

75{
76 // G4cout << "SetMpiNtupleMerging: "
77 // << impi << ", "
78 // << mpiRank << ","
79 // << mpiSize << ","
80 // << nofNtupleFiles << G4endl;
81
82 std::static_pointer_cast<G4RootMpiNtupleFileManager>(fNtupleFileManager)
83 ->SetMpiNtupleMerging(impi, mpiRank, mpiSize, nofNtupleFiles);
84}

◆ OpenFileImpl()

G4bool G4RootMpiAnalysisManager::OpenFileImpl ( const G4String fileName)
finalprotectedvirtual

Definition at line 91 of file G4RootMpiAnalysisManager.cc.

92{
93 if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kNone ) {
94 return G4ToolsAnalysisManager::OpenFileImpl(fileName);
95 }
96
97 // Create ntuple manager(s)
98 // and set it to base class which takes then their ownership
99 if ( ! fVNtupleManager ) {
100 SetNtupleManager(fNtupleFileManager->CreateNtupleManager());
101 }
102
103 auto result = true;
104
105 // Open file
106 // In difference from base class a file is open also on slave ranks
107 result &= fFileManager->OpenFile(fileName);
108
109 // Open ntuple file(s) and create ntuples from bookings
110 result &= fNtupleFileManager->ActionAtOpenFile(fFileManager->GetFullFileName());
111
112 return result;
113}

◆ WriteImpl()

G4bool G4RootMpiAnalysisManager::WriteImpl ( )
finalprotectedvirtual

Definition at line 116 of file G4RootMpiAnalysisManager.cc.

117{
118
119 auto result = true;
120
121 // Call base class method
122 result &= G4ToolsAnalysisManager::WriteImpl();
123
124 // Write file also on Slave
125 // (skipped in base class)
126 if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kSlave ) {
127 // write all open files
128 result &= fFileManager->WriteFiles();
129 }
130
131 Message(kVL2, "write", "slave files", "", result);
132
133 return result;
134}

◆ CloseFileImpl()

G4bool G4RootMpiAnalysisManager::CloseFileImpl ( G4bool  reset)
finalprotectedvirtual

Definition at line 137 of file G4RootMpiAnalysisManager.cc.

138{
139// Cannot call base class function, as we need to close files also
140// on slave; an option in the base class can be added for this in future
141
142 Message(kVL4, "close", "files");
143
144 auto result = true;
145 if (fVNtupleFileManager) {
146 result &= fVNtupleFileManager->ActionAtCloseFile();
147 }
148
149 // close file also on Slave
150 // - the conditoon used in the base class is commented out
151 // if ( (fVNtupleFileManager == nullptr) ||
152 // (fVNtupleFileManager->GetMergeMode() != G4NtupleMergeMode::kSlave) ) {
153 if ( ! fVFileManager->CloseFiles() ) {
154 Warn("Closing files failed", fkClass, "CloseFileImpl");
155 result = false;
156 }
157 // }
158
159 // delete empty files
160 if ( ! fVFileManager->DeleteEmptyFiles() ) {
161 Warn("Deleting empty files failed", fkClass, "CloseFileImpl");
162 result = false;
163 }
164
165 // reset histograms
166 if ( reset ) {
167 if ( ! Reset() ) {
168 Warn("Resetting data failed", fkClass, "CloseFileImpl");
169 result = false;
170 }
171 }
172
173 Message(kVL3, "close", "files", "", result);
174 G4cout << "### Done G4RootMpiAnalysisManager::CloseFileImpl" << G4endl;
175
176 return result;
177}

Member Data Documentation

◆ fgInstance

G4RootMpiAnalysisManager* G4RootMpiAnalysisManager::fgInstance { nullptr }
inlinestaticprivate

Definition at line 66 of file G4RootMpiAnalysisManager.hh.

66{ nullptr };

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

Applications | User Support | Publications | Collaboration