Import Geant4 11.1.0 source tree

This commit is contained in:
Gabriele Cosmo
2022-12-09 14:43:28 +01:00
parent c07cea1fe0
commit 9f34590941
3810 changed files with 200490 additions and 182326 deletions
@@ -53,6 +53,7 @@ G4RootMpiAnalysisManager::G4RootMpiAnalysisManager(G4bool /*isMaster*/)
// Ntuple file manager
fNtupleFileManager = std::make_shared<G4RootMpiNtupleFileManager>(fState);
SetNtupleFileManager(fNtupleFileManager);
fNtupleFileManager->SetFileManager(fFileManager);
fNtupleFileManager->SetBookingManager(fNtupleBookingManager);
}
@@ -99,62 +100,56 @@ G4bool G4RootMpiAnalysisManager::OpenFileImpl(const G4String& fileName)
SetNtupleManager(fNtupleFileManager->CreateNtupleManager());
}
auto finalResult = true;
auto result = true;
// Open file
// In difference from base class a file is open also on slave ranks
auto result = fFileManager->OpenFile(fileName);
finalResult = finalResult && result;
result &= fFileManager->OpenFile(fileName);
// Open ntuple file(s) and create ntuples from bookings
result = fNtupleFileManager->ActionAtOpenFile(fFileManager->GetFullFileName());
finalResult = finalResult && result;
result &= fNtupleFileManager->ActionAtOpenFile(fFileManager->GetFullFileName());
return finalResult;
return result;
}
//_____________________________________________________________________________
G4bool G4RootMpiAnalysisManager::WriteImpl()
{
auto finalResult = true;
auto result = true;
// Call base class method
auto result = G4RootAnalysisManager::WriteImpl();
finalResult = finalResult && result;
result &= G4ToolsAnalysisManager::WriteImpl();
// Write file also on Slave
// (skipped in base class)
if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kSlave ) {
// write all open files
result = fFileManager->WriteFiles();
finalResult = finalResult && result;
result &= fFileManager->WriteFiles();
}
Message(kVL2, "write", "slave files", "", finalResult);
Message(kVL2, "write", "slave files", "", result);
return finalResult;
return result;
}
//_____________________________________________________________________________
G4bool G4RootMpiAnalysisManager::CloseFileImpl(G4bool reset)
{
auto finalResult = true;
auto result = true;
// Call base class method
auto result = G4RootAnalysisManager::CloseFileImpl(reset);
finalResult = finalResult && result;
result &= G4RootAnalysisManager::CloseFileImpl(reset);
// Close file also on Slave
// (skipped in base class)
if ( fNtupleFileManager->GetMergeMode() == G4NtupleMergeMode::kSlave ) {
// close all open files
result = fFileManager->CloseFiles();
finalResult = finalResult && result;
result &= fFileManager->CloseFiles();
}
Message(kVL2, "close", "slave files", "", finalResult);
Message(kVL2, "close", "slave files", "", result);
return finalResult;
return result;
}
@@ -184,8 +184,6 @@ std::shared_ptr<G4VNtupleManager> G4RootMpiNtupleFileManager::CreateNtupleManage
//_____________________________________________________________________________
G4bool G4RootMpiNtupleFileManager::ActionAtOpenFile(const G4String& fileName)
{
auto finalResult = true;
// No MPI merging, call base class
if ( fNtupleMergeMode == G4NtupleMergeMode::kNone ) {
return G4RootNtupleFileManager::ActionAtOpenFile(fileName);
@@ -218,7 +216,7 @@ G4bool G4RootMpiNtupleFileManager::ActionAtOpenFile(const G4String& fileName)
fNtupleBooked = true;
}
return finalResult;
return true;
}
//_____________________________________________________________________________
@@ -229,7 +227,7 @@ G4bool G4RootMpiNtupleFileManager::ActionAtWrite()
return G4RootNtupleFileManager::ActionAtWrite();
}
auto finalResult = true;
auto result = true;
G4String ntupleType;
if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) ntupleType = "main ntuples";
@@ -238,50 +236,32 @@ G4bool G4RootMpiNtupleFileManager::ActionAtWrite()
Message(kVL4, "merge", ntupleType);
if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) {
auto result = fNtupleManager->Merge();
finalResult = result && finalResult;
result &= fNtupleManager->Merge();
}
if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave ) {
auto result = fMpiSlaveNtupleManager->Merge();
finalResult = result && finalResult;
result &= fMpiSlaveNtupleManager->Merge();
}
Message(kVL1, "merge", ntupleType, "", finalResult);
Message(kVL1, "merge", ntupleType, "", result);
return finalResult;
return result;
}
//_____________________________________________________________________________
G4bool G4RootMpiNtupleFileManager::ActionAtCloseFile(G4bool reset)
{
G4bool G4RootMpiNtupleFileManager::ActionAtCloseFile()
{
// No MPI merging, call base class
if ( fNtupleMergeMode == G4NtupleMergeMode::kNone ) {
return G4RootNtupleFileManager::ActionAtCloseFile(reset);
return G4RootNtupleFileManager::ActionAtCloseFile();
}
auto finalResult = true;
// reset data
if ( reset ) {
auto result = Reset();
if ( ! result ) {
G4ExceptionDescription description;
description << " " << "Resetting data failed";
G4Exception("G4RootNtupleFileManager::Write()",
"Analysis_W021", JustWarning, description);
}
finalResult = finalResult && result;
if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave) {
fMpiSlaveNtupleManager->SetNewCycle(false);
return true;
}
// close files
if ( fNtupleMergeMode != G4NtupleMergeMode::kSlave ) {
auto result = CloseNtupleFiles();
finalResult = finalResult && result;
}
// MT not yet supported - no files clean-up
return finalResult;
return CloseNtupleFiles();
}
//_____________________________________________________________________________
@@ -294,17 +274,15 @@ G4bool G4RootMpiNtupleFileManager::Reset()
return G4RootNtupleFileManager::Reset();
}
auto finalResult = true;
auto result = true;
if ( fNtupleMergeMode == G4NtupleMergeMode::kMain ) {
auto result = fNtupleManager->Reset();
finalResult = result && finalResult;
result &= fNtupleManager->Reset();
}
if ( fNtupleMergeMode == G4NtupleMergeMode::kSlave ) {
auto result = fMpiSlaveNtupleManager->Reset(false);
finalResult = result && finalResult;
result &= fMpiSlaveNtupleManager->Reset(false);
}
return finalResult;
return result;
}
@@ -76,7 +76,7 @@ G4bool G4RootMpiNtupleManager::Send(G4int id, RootNtupleDescription* ntupleDescr
// G4cout << "ntuple: " << ntupleDescription->fNtuple << G4endl;
// Get ntuple
auto ntuple = ntupleDescription->fNtuple;
auto ntuple = ntupleDescription->GetNtuple();
// Get basket sizes
std::vector<tools::wroot::branch*> mainBranches;
@@ -166,7 +166,7 @@ G4bool G4RootMpiNtupleManager::InitializeRanks()
for ( auto ntupleDescription : fNtupleDescriptionVector ) {
// Do not create ntuple if it is inactivated
if ( fState.GetIsActivation() && ( ! ntupleDescription->fActivation ) ) continue;
if ( fState.GetIsActivation() && ( ! ntupleDescription->GetActivation() ) ) continue;
auto result = Send(counter++, ntupleDescription);
finalResult = finalResult && result;
@@ -329,10 +329,10 @@ G4bool G4RootMpiNtupleManager::Merge()
for ( auto ntupleDescription : fNtupleDescriptionVector ) {
// Do not create ntuple if it is inactivated
if ( fState.GetIsActivation() && ( ! ntupleDescription->fActivation ) ) continue;
if ( fState.GetIsActivation() && ( ! ntupleDescription->GetActivation() ) ) continue;
// G4cout << "Go to call merge_number_of_entries" << G4endl;
ntupleDescription->fNtuple->merge_number_of_entries();
ntupleDescription->GetNtuple()->merge_number_of_entries();
}
return finalResult;
@@ -116,7 +116,7 @@ tools::wroot::base_pntuple* G4RootMpiPNtupleManager::GetNtupleInFunction(
void G4RootMpiPNtupleManager::CreateNtuple(G4RootMpiPNtupleDescription* ntupleDescription)
{
Message(kVL4, "create from booking", "mpi pntuple",
ntupleDescription->fDescription.fNtupleBooking.name());
ntupleDescription->fDescription.GetNtupleBooking().name());
// Wait for the ntuple data from main
@@ -206,27 +206,27 @@ void G4RootMpiPNtupleManager::CreateNtuple(G4RootMpiPNtupleDescription* ntupleDe
tools::wroot::mpi_ntuple_row_wise* ntuple
= new tools::wroot::mpi_ntuple_row_wise(
mainNtupleId, G4cout, byteSwap, compression, seekDirectory,
basketSize, ntupleDescription->fDescription.fNtupleBooking, verbose);
basketSize, ntupleDescription->fDescription.GetNtupleBooking(), verbose);
ntupleDescription->fNtuple = ntuple;
ntupleDescription->fBasePNtuple = ntuple;
} else {
tools::wroot::mpi_ntuple_column_wise* ntuple
= new tools::wroot::mpi_ntuple_column_wise(
mainNtupleId, G4cout, byteSwap, compression, seekDirectory,
basketSizes, ntupleDescription->fDescription.fNtupleBooking,
basketSizes, ntupleDescription->fDescription.GetNtupleBooking(),
rowMode, basketEntries, verbose);
ntupleDescription->fNtuple = ntuple;
ntupleDescription->fBasePNtuple = ntuple;
}
ntupleDescription->fDescription.fIsNtupleOwner = true;
ntupleDescription->fDescription.SetIsNtupleOwner(true);
ntupleDescription->fImpi = fImpi;
// should be not needed
// pntuple object is not deleted automatically
fNtupleVector.push_back(ntupleDescription->fNtuple);
Message(kVL3, "create from booking", "mpi pntuple",
ntupleDescription->fDescription.fNtupleBooking.name());
ntupleDescription->fDescription.GetNtupleBooking().name());
}
//_____________________________________________________________________________
@@ -252,13 +252,13 @@ void G4RootMpiPNtupleManager::CreateNtuplesFromBooking(
for ( auto ntupleDescription : fNtupleDescriptionVector ) {
// Do not create ntuple if it is inactivated
if ( fState.GetIsActivation() && ( ! ntupleDescription->fDescription.fActivation ) ) continue;
if ( fState.GetIsActivation() && ( ! ntupleDescription->fDescription.GetActivation() ) ) continue;
// Do not create ntuple if it already exists
if ( ntupleDescription->fNtuple ) continue;
Message(kVL4, "create from booking", "mpi pntuple",
ntupleDescription->fDescription.fNtupleBooking.name());
ntupleDescription->fDescription.GetNtupleBooking().name());
// create ntuple
CreateNtuple(ntupleDescription);
@@ -268,7 +268,7 @@ void G4RootMpiPNtupleManager::CreateNtuplesFromBooking(
// FinishTNtuple(ntupleDescription);
Message(kVL3, "create from booking", "mpi pntuple",
ntupleDescription->fDescription.fNtupleBooking.name());
ntupleDescription->fDescription.GetNtupleBooking().name());
}
}
@@ -353,13 +353,13 @@ G4bool G4RootMpiPNtupleManager::Merge()
for ( auto ntupleDescription : fNtupleDescriptionVector) {
// skip inactivated ntuples
if ( ! ntupleDescription->fDescription.fActivation ) continue;
if ( ! ntupleDescription->fDescription.GetActivation() ) continue;
// skip if ntuple was already merged and deleted
// (this happend when the main rank re-opens a new file for merged data)
if ( ! ntupleDescription->fNtuple ) continue;
Message(kVL4, "merge", "pntuple", ntupleDescription->fDescription.fNtupleBooking.name());
Message(kVL4, "merge", "pntuple", ntupleDescription->fDescription.GetNtupleBooking().name());
// G4cout << "call end_fill " << fImpi
// << " to rank " << ntupleDescription->fMainNtupleRank
@@ -370,7 +370,7 @@ G4bool G4RootMpiPNtupleManager::Merge()
if ( ! result ) {
G4ExceptionDescription description;
description << " " << " ntuple " << ntupleDescription->fDescription.fNtupleBooking.name()
description << " " << " ntuple " << ntupleDescription->fDescription.GetNtupleBooking().name()
<< "end fill has failed.";
G4Exception("G4RootMpiPNtupleManager::Merge()",
"Analysis_W002", JustWarning, description);
@@ -379,12 +379,28 @@ G4bool G4RootMpiPNtupleManager::Merge()
delete ntupleDescription->fNtuple;
ntupleDescription->fNtuple = nullptr;
Message(kVL3, "merge", "pntuple", ntupleDescription->fDescription.fNtupleBooking.name());
Message(kVL3, "merge", "pntuple", ntupleDescription->fDescription.GetNtupleBooking().name());
}
return finalResult;
}
//_____________________________________________________________________________
G4bool G4RootMpiPNtupleManager::Reset()
{
// Reset ntuple description, this will delete ntuple if present and
// we have its ownership.
// The ntuples will be recreated with new cycle or new open file.
for ( auto ntupleDescription : fNtupleDescriptionVector ) {
ntupleDescription->fDescription.Reset();
}
fNtupleVector.clear();
return true;
}
//_____________________________________________________________________________
void G4RootMpiPNtupleManager::Clear()
{
@@ -420,7 +436,7 @@ void G4RootMpiPNtupleManager::SetActivation(
G4bool activation)
{
for ( auto ntupleDescription : fNtupleDescriptionVector ) {
ntupleDescription->fDescription.fActivation = activation;
ntupleDescription->fDescription.SetActivation(activation);
}
}
@@ -432,7 +448,7 @@ void G4RootMpiPNtupleManager::SetActivation(
auto ntupleDescription = GetNtupleDescriptionInFunction(ntupleId, "SetActivation");
if ( ! ntupleDescription ) return;
ntupleDescription->fDescription.fActivation = activation;
ntupleDescription->fDescription.SetActivation(activation);
}
//_____________________________________________________________________________
@@ -442,7 +458,19 @@ G4bool G4RootMpiPNtupleManager::GetActivation(
auto ntupleDescription = GetNtupleDescriptionInFunction(ntupleId, "GetActivation");
if ( ! ntupleDescription ) return false;
return ntupleDescription->fDescription.fActivation;
return ntupleDescription->fDescription.GetActivation();
}
//_____________________________________________________________________________
void G4RootMpiPNtupleManager::SetNewCycle(G4bool value)
{
fNewCycle = value;
}
//_____________________________________________________________________________
G4bool G4RootMpiPNtupleManager::GetNewCycle() const
{
return fNewCycle;
}
//_____________________________________________________________________________
@@ -450,3 +478,10 @@ G4int G4RootMpiPNtupleManager::GetNofNtuples() const
{
return fNtupleVector.size();
}
//_____________________________________________________________________________
G4bool G4RootMpiPNtupleManager::List(std::ostream& /*output*/, G4bool /*onlyIfActive*/)
{
Warn("Not implemented.", fkClass, "List");
return false;
}