Import Geant4 10.6.0 source tree
This commit is contained in:
@@ -72,7 +72,7 @@ G4RootAnalysisManager* G4RootAnalysisManager::Instance()
|
||||
//_____________________________________________________________________________
|
||||
G4bool G4RootAnalysisManager::IsInstance()
|
||||
{
|
||||
return ( fgInstance != 0 );
|
||||
return ( fgInstance != nullptr );
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
@@ -80,6 +80,7 @@ G4RootAnalysisManager::G4RootAnalysisManager(G4bool isMaster)
|
||||
: G4ToolsAnalysisManager("Root", isMaster),
|
||||
fNofNtupleFiles(0),
|
||||
fNtupleRowWise(false),
|
||||
fNtupleRowMode(true),
|
||||
fNtupleMergeMode(G4NtupleMergeMode::kNone),
|
||||
fNtupleManager(nullptr),
|
||||
fSlaveNtupleManager(nullptr),
|
||||
@@ -101,12 +102,13 @@ G4RootAnalysisManager::G4RootAnalysisManager(G4bool isMaster)
|
||||
fFileManager = std::make_shared<G4RootFileManager>(fState);
|
||||
SetFileManager(fFileManager);
|
||||
fFileManager->SetBasketSize(fgkDefaultBasketSize);
|
||||
fFileManager->SetBasketEntries(fgkDefaultBasketEntries);
|
||||
|
||||
// Do not merge ntuples by default
|
||||
// Merging may require user code migration as analysis manager
|
||||
// must be created both on master and workers.
|
||||
auto mergeNtuples = false;
|
||||
SetNtupleMergingMode(mergeNtuples, fNofNtupleFiles, fNtupleRowWise);
|
||||
SetNtupleMergingMode(mergeNtuples, fNofNtupleFiles);
|
||||
|
||||
// Create ntuple managers
|
||||
CreateNtupleManagers();
|
||||
@@ -125,8 +127,7 @@ G4RootAnalysisManager::~G4RootAnalysisManager()
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootAnalysisManager::SetNtupleMergingMode(G4bool mergeNtuples,
|
||||
G4int nofNtupleFiles,
|
||||
G4bool rowWise)
|
||||
G4int nofNtupleFiles)
|
||||
|
||||
{
|
||||
#ifdef G4VERBOSE
|
||||
@@ -172,7 +173,6 @@ void G4RootAnalysisManager::SetNtupleMergingMode(G4bool mergeNtuples,
|
||||
else {
|
||||
// Set the number of reduced ntuple files
|
||||
fNofNtupleFiles = nofNtupleFiles;
|
||||
fNtupleRowWise = rowWise;
|
||||
|
||||
// Check the number of reduced ntuple files
|
||||
// if ( fNofNtupleFiles < 0 || fNofNtupleFiles > nofThreads ) {
|
||||
@@ -260,7 +260,7 @@ void G4RootAnalysisManager::CreateNtupleManagers()
|
||||
switch ( fNtupleMergeMode )
|
||||
{
|
||||
case G4NtupleMergeMode::kNone:
|
||||
fNtupleManager = new G4RootNtupleManager(fState, 0, fNtupleRowWise);
|
||||
fNtupleManager = new G4RootNtupleManager(fState, 0, fNtupleRowWise, fNtupleRowMode);
|
||||
fNtupleManager->SetFileManager(fFileManager);
|
||||
SetNtupleManager(fNtupleManager);
|
||||
break;
|
||||
@@ -269,7 +269,8 @@ void G4RootAnalysisManager::CreateNtupleManagers()
|
||||
G4int nofMainManagers = fNofNtupleFiles;
|
||||
if ( ! nofMainManagers ) nofMainManagers = 1;
|
||||
// create one manager if merging required into the histos & profiles files
|
||||
fNtupleManager = new G4RootNtupleManager(fState, nofMainManagers, fNtupleRowWise);
|
||||
fNtupleManager
|
||||
= new G4RootNtupleManager(fState, nofMainManagers, fNtupleRowWise, fNtupleRowMode);
|
||||
fNtupleManager->SetFileManager(fFileManager);
|
||||
SetNtupleManager(fNtupleManager);
|
||||
break;
|
||||
@@ -280,7 +281,8 @@ void G4RootAnalysisManager::CreateNtupleManagers()
|
||||
// The master class is used only in Get* functions
|
||||
auto mainNtupleManager
|
||||
= fNtupleManager->GetMainNtupleManager(GetNtupleFileNumber());
|
||||
fSlaveNtupleManager = new G4RootPNtupleManager(mainNtupleManager, fState);
|
||||
fSlaveNtupleManager
|
||||
= new G4RootPNtupleManager(mainNtupleManager, fState, fNtupleRowWise, fNtupleRowMode);
|
||||
SetNtupleManager(fSlaveNtupleManager);
|
||||
break;
|
||||
}
|
||||
@@ -682,16 +684,11 @@ G4bool G4RootAnalysisManager::CloseFileImpl(G4bool reset)
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootAnalysisManager::SetNtupleMerging(G4bool mergeNtuples,
|
||||
G4int nofNtupleFiles,
|
||||
G4bool rowWise,
|
||||
unsigned int basketSize)
|
||||
G4int nofNtupleFiles)
|
||||
|
||||
{
|
||||
// Keep basketSize in file manager
|
||||
fFileManager->SetBasketSize(basketSize);
|
||||
|
||||
// Set ntuple merging mode
|
||||
SetNtupleMergingMode(mergeNtuples, nofNtupleFiles, rowWise);
|
||||
SetNtupleMergingMode(mergeNtuples, nofNtupleFiles);
|
||||
|
||||
// Clear existing managers
|
||||
ClearNtupleManagers();
|
||||
@@ -701,17 +698,50 @@ void G4RootAnalysisManager::SetNtupleMerging(G4bool mergeNtuples,
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootAnalysisManager::SetNtupleRowWise(G4bool rowWise)
|
||||
void G4RootAnalysisManager::SetNtupleRowWise(G4bool rowWise, G4bool rowMode)
|
||||
{
|
||||
#ifdef G4VERBOSE
|
||||
// Print info even when setting makes no effect
|
||||
// (as we do not get printed the default setting in the output)
|
||||
G4String rowWiseMode;
|
||||
if ( rowWise ) {
|
||||
rowWiseMode = "row-wise with extra branch";
|
||||
}
|
||||
else if ( rowMode ) {
|
||||
rowWiseMode = "row-wise";
|
||||
}
|
||||
else {
|
||||
rowWiseMode = "column-wise";
|
||||
}
|
||||
|
||||
if ( fState.GetVerboseL1() )
|
||||
fState.GetVerboseL1()
|
||||
->Message("set", "ntuple merging row mode", rowWiseMode);
|
||||
#endif
|
||||
|
||||
// Do nothing if the mode is not changed
|
||||
if ( fNtupleRowWise == rowWise ) return;
|
||||
if ( fNtupleRowWise == rowWise && fNtupleRowMode == rowMode ) return;
|
||||
|
||||
fNtupleRowWise = rowWise;
|
||||
fNtupleRowMode = rowMode;
|
||||
|
||||
// Clear existing managers
|
||||
ClearNtupleManagers();
|
||||
if ( fNtupleManager ) {
|
||||
fNtupleManager->SetNtupleRowWise(rowWise, rowMode);
|
||||
}
|
||||
|
||||
// Re-create managers
|
||||
CreateNtupleManagers();
|
||||
if ( fSlaveNtupleManager ) {
|
||||
fSlaveNtupleManager->SetNtupleRowWise(rowWise, rowMode);
|
||||
}
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootAnalysisManager::SetBasketSize(unsigned int basketSize)
|
||||
{
|
||||
fFileManager->SetBasketSize(basketSize);
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootAnalysisManager::SetBasketEntries(unsigned int basketEntries)
|
||||
{
|
||||
fFileManager->SetBasketEntries(basketEntries);
|
||||
}
|
||||
|
||||
@@ -47,7 +47,8 @@ G4RootFileManager::G4RootFileManager(const G4AnalysisManagerState& state)
|
||||
fNofNtupleFiles(0),
|
||||
fNtupleFiles(),
|
||||
fMainNtupleDirectories(),
|
||||
fBasketSize(0)
|
||||
fBasketSize(0),
|
||||
fBasketEntries(0)
|
||||
{}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
|
||||
@@ -39,13 +39,14 @@ using namespace G4Analysis;
|
||||
//_____________________________________________________________________________
|
||||
G4RootNtupleManager::G4RootNtupleManager(const G4AnalysisManagerState& state,
|
||||
G4int nofMainManagers,
|
||||
G4bool rowWise)
|
||||
G4bool rowWise, G4bool rowMode)
|
||||
: G4TNtupleManager<tools::wroot::ntuple>(state),
|
||||
fCreateMode(G4NtupleCreateMode::kUndefined),
|
||||
fFileManager(nullptr),
|
||||
fNtupleDirectory(nullptr),
|
||||
fMainNtupleManagers(),
|
||||
fRowWise(rowWise)
|
||||
fRowWise(rowWise),
|
||||
fRowMode(rowMode)
|
||||
{
|
||||
for ( G4int i=0; i<nofMainManagers; ++i) {
|
||||
fMainNtupleManagers.push_back(
|
||||
@@ -114,6 +115,20 @@ void G4RootNtupleManager::SetCreateMode()
|
||||
#endif
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootNtupleManager::SetNtupleRowWise(G4bool rowWise, G4bool rowMode)
|
||||
{
|
||||
// Set rowWise mode and propagate it to main ntuple managers
|
||||
|
||||
fRowWise = rowWise;
|
||||
fRowMode = rowMode;
|
||||
|
||||
for (auto& mainNtupleManager : fMainNtupleManagers ) {
|
||||
mainNtupleManager->SetRowWise(rowWise);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootNtupleManager::CreateTNtuple(
|
||||
G4TNtupleDescription<tools::wroot::ntuple>* ntupleDescription)
|
||||
@@ -251,3 +266,16 @@ unsigned int G4RootNtupleManager::GetBasketSize() const
|
||||
return fFileManager->GetBasketSize();
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
unsigned int G4RootNtupleManager::GetBasketEntries() const
|
||||
{
|
||||
if ( ! fFileManager ) {
|
||||
G4String inFunction = "G4RootNtupleManager::::GetBasketEntries";
|
||||
G4ExceptionDescription description;
|
||||
description << " " << "File manager must be defined first.";
|
||||
G4Exception(inFunction, "Analysis_W011", JustWarning, description);
|
||||
return 0;
|
||||
}
|
||||
|
||||
return fFileManager->GetBasketEntries();
|
||||
}
|
||||
|
||||
@@ -41,11 +41,14 @@ namespace {
|
||||
|
||||
//_____________________________________________________________________________
|
||||
G4RootPNtupleManager::G4RootPNtupleManager(G4RootMainNtupleManager* main,
|
||||
const G4AnalysisManagerState& state)
|
||||
const G4AnalysisManagerState& state,
|
||||
G4bool rowWise, G4bool rowMode)
|
||||
: G4BaseNtupleManager(state),
|
||||
fCreateMode(G4PNtupleCreateMode::kUndefined),
|
||||
fMainNtupleManager(main),
|
||||
fNtupleVector()
|
||||
fNtupleVector(),
|
||||
fRowWise(rowWise),
|
||||
fRowMode(rowMode)
|
||||
{}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
@@ -142,15 +145,13 @@ void G4RootPNtupleManager::CreateNtuple(G4RootPNtupleDescription* ntupleDescript
|
||||
auto rfile = fMainNtupleManager->GetNtupleFile();
|
||||
// auto directory = fMainNtupleManager->GetNtupleDirectory();
|
||||
|
||||
// Get parameters from main ntuple
|
||||
auto mainBranch = mainNtuple->get_row_wise_branch();
|
||||
auto rowWise = mainBranch ? true : false;
|
||||
|
||||
// Get parameters from ntupleDescription
|
||||
ntupleDescription->fFile = rfile.get();
|
||||
mainNtuple->get_branches(ntupleDescription->fMainBranches);
|
||||
|
||||
G4bool verbose = true;
|
||||
if ( rowWise ) {
|
||||
if ( fRowWise ) {
|
||||
auto mainBranch = mainNtuple->get_row_wise_branch();
|
||||
tools::wroot::mt_ntuple_row_wise* mtNtuple
|
||||
= new tools::wroot::mt_ntuple_row_wise(
|
||||
G4cout, rfile->byte_swap(), rfile->compression(),
|
||||
@@ -168,13 +169,15 @@ void G4RootPNtupleManager::CreateNtuple(G4RootPNtupleDescription* ntupleDescript
|
||||
tools_vforcit(tools::wroot::branch*, ntupleDescription->fMainBranches, it) {
|
||||
basketSizes.push_back((*it)->basket_size());
|
||||
}
|
||||
auto basketEntries = fMainNtupleManager->GetBasketEntries();
|
||||
|
||||
tools::wroot::mt_ntuple_column_wise* mtNtuple =
|
||||
new tools::wroot::mt_ntuple_column_wise(
|
||||
G4cout, rfile->byte_swap(), rfile->compression(),
|
||||
mainNtuple->dir().seek_directory(),
|
||||
ntupleDescription->fMainBranches, basketSizes,
|
||||
ntupleDescription->fNtupleBooking, verbose);
|
||||
ntupleDescription->fNtupleBooking,
|
||||
fRowMode, basketEntries, verbose);
|
||||
|
||||
ntupleDescription->fNtuple
|
||||
= static_cast<tools::wroot::imt_ntuple*>(mtNtuple);
|
||||
@@ -498,3 +501,9 @@ G4bool G4RootPNtupleManager::IsEmpty() const
|
||||
return ! fNtupleDescriptionVector.size();
|
||||
}
|
||||
|
||||
//_____________________________________________________________________________
|
||||
void G4RootPNtupleManager::SetNtupleRowWise(G4bool rowWise, G4bool rowMode)
|
||||
{
|
||||
fRowWise = rowWise;
|
||||
fRowMode = rowMode;
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user