61 Message(kVL2,
"set",
"mpi ntuple merging mode");
67 G4ExceptionDescription description;
69 <<
"Merging ntuples is not applicable on a single rank." << G4endl
70 <<
"Setting was ignored.";
71 G4Exception(
"G4RootMpiNtupleFileManager::SetMpiNtupleMergingMode()",
72 "Analysis_W013", JustWarning, description);
78 fNtupleMergeMode = G4NtupleMergeMode::kNone;
79 mergingMode =
"G4NtupleMergeMode::kNone";
84 fNofNtupleFiles = nofNtupleFiles;
90 fNtupleMergeMode = G4NtupleMergeMode::kMain;
91 mergingMode =
"G4NtupleMergeMode::kMain";
94 fNtupleMergeMode = G4NtupleMergeMode::kSlave;
95 mergingMode =
"G4NtupleMergeMode::kSlave";
99 Message(kVL1,
"set",
"mpi ntuple merging mode", mergingMode);
133 Message(kVL4,
"create",
"mpi ntuple manager");
135 std::shared_ptr<G4VNtupleManager> activeNtupleManager =
nullptr;
136 switch ( fNtupleMergeMode )
138 case G4NtupleMergeMode::kNone:
140 = make_shared<G4RootNtupleManager>(fState, fBookingManager,
141 0, 0, fNtupleRowWise, fNtupleRowMode);
142 fNtupleManager->SetFileManager(fFileManager);
143 activeNtupleManager = fNtupleManager;
146 case G4NtupleMergeMode::kMain: {
148 = make_shared<G4RootMpiNtupleManager>(fState, fBookingManager,
150 fNtupleManager->SetFileManager(fFileManager);
151 activeNtupleManager = fNtupleManager;
155 case G4NtupleMergeMode::kSlave: {
158 = make_shared<G4RootMpiPNtupleManager>(fState,
fImpi,
fMpiRank, destinationRank);
165 switch ( fNtupleMergeMode ) {
166 case G4NtupleMergeMode::kNone:
169 case G4NtupleMergeMode::kMain:
172 case G4NtupleMergeMode::kSlave:
173 mergeMode =
"slave ";
176 Message(kVL3,
"create", mergeMode +
"mpi ntuple manager");
178 fIsInitialized =
true;
180 return activeNtupleManager;
187 if ( fNtupleMergeMode == G4NtupleMergeMode::kNone ) {
188 return G4RootNtupleFileManager::ActionAtOpenFile(fileName);
193 G4String objectType =
"analysis file";
194 if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) {
195 objectType =
"main analysis file";
197 Message(kVL4,
"open", objectType, fileName);
200 if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) {
202 fNtupleManager->CreateNtuplesFromBooking(
203 fBookingManager->GetNtupleBookingVector());
206 if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave ) {
210 fBookingManager->GetNtupleBookingVector());
213 Message(kVL1,
"open", objectType, fileName);
225 if ( fNtupleMergeMode == G4NtupleMergeMode::kNone ) {
226 return G4RootNtupleFileManager::ActionAtWrite();
232 if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) ntupleType =
"main ntuples";
233 if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave ) ntupleType =
"slave ntuples";
235 Message(kVL4,
"merge", ntupleType);
237 if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) {
238 result &= fNtupleManager->Merge();
241 if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave ) {
245 Message(kVL1,
"merge", ntupleType,
"", result);