Import Geant4 10.6.0 source tree
This commit is contained in:
@@ -80,11 +80,11 @@ class G4RootAnalysisManager : public G4ToolsAnalysisManager
|
||||
std::vector<tools::wroot::ntuple*>::const_iterator EndConstNtuple() const;
|
||||
|
||||
// MT/MPI
|
||||
void SetNtupleMerging(G4bool mergeNtuples,
|
||||
G4int nofReducedNtupleFiles = 0,
|
||||
G4bool rowWise = true,
|
||||
unsigned int basketSize = fgkDefaultBasketSize);
|
||||
void SetNtupleRowWise(G4bool rowWise);
|
||||
virtual void SetNtupleMerging(G4bool mergeNtuples,
|
||||
G4int nofReducedNtupleFiles = 0) override;
|
||||
virtual void SetNtupleRowWise(G4bool rowWise, G4bool rowMode = true) override;
|
||||
virtual void SetBasketSize(unsigned int basketSize) override;
|
||||
virtual void SetBasketEntries(unsigned int basketEntries) override;
|
||||
|
||||
protected:
|
||||
// virtual methods from base class
|
||||
@@ -97,17 +97,13 @@ class G4RootAnalysisManager : public G4ToolsAnalysisManager
|
||||
virtual G4bool Reset();
|
||||
|
||||
private:
|
||||
// constants
|
||||
static constexpr unsigned int fgkDefaultBasketSize = 32000;
|
||||
|
||||
// static data members
|
||||
static G4RootAnalysisManager* fgMasterInstance;
|
||||
static G4ThreadLocal G4RootAnalysisManager* fgInstance;
|
||||
static G4ThreadLocal G4RootAnalysisManager* fgInstance;
|
||||
|
||||
// methods
|
||||
void SetNtupleMergingMode(G4bool mergeNtuples,
|
||||
G4int nofNtupleFiles,
|
||||
G4bool rowWise);
|
||||
G4int nofNtupleFiles);
|
||||
void ClearNtupleManagers();
|
||||
void CreateNtupleManagers();
|
||||
G4int GetNtupleFileNumber();
|
||||
@@ -127,6 +123,7 @@ class G4RootAnalysisManager : public G4ToolsAnalysisManager
|
||||
// data members
|
||||
G4int fNofNtupleFiles;
|
||||
G4bool fNtupleRowWise;
|
||||
G4bool fNtupleRowMode;
|
||||
G4NtupleMergeMode fNtupleMergeMode;
|
||||
G4RootNtupleManager* fNtupleManager;
|
||||
G4RootPNtupleManager* fSlaveNtupleManager;
|
||||
|
||||
@@ -61,13 +61,15 @@ class G4RootFileManager : public G4VFileManager
|
||||
// Set methods
|
||||
void SetNofNtupleFiles(G4int nofFiles);
|
||||
void SetBasketSize(unsigned int basketSize);
|
||||
void SetBasketEntries(unsigned int basketEntries);
|
||||
|
||||
// Get methods
|
||||
tools::wroot::directory* GetHistoDirectory() const;
|
||||
tools::wroot::directory* GetNtupleDirectory() const;
|
||||
std::shared_ptr<tools::wroot::file> GetNtupleFile(G4int index) const;
|
||||
tools::wroot::directory* GetMainNtupleDirectory(G4int index) const;
|
||||
unsigned int GetBasketSize() const;
|
||||
unsigned int GetBasketSize() const;
|
||||
unsigned int GetBasketEntries() const;
|
||||
|
||||
private:
|
||||
// methods
|
||||
@@ -85,6 +87,7 @@ class G4RootFileManager : public G4VFileManager
|
||||
std::vector<std::shared_ptr<tools::wroot::file> > fNtupleFiles;
|
||||
std::vector<tools::wroot::directory*> fMainNtupleDirectories;
|
||||
unsigned int fBasketSize;
|
||||
unsigned int fBasketEntries;
|
||||
};
|
||||
|
||||
// inline functions
|
||||
@@ -95,6 +98,9 @@ inline void G4RootFileManager::SetNofNtupleFiles(G4int nofFiles)
|
||||
inline void G4RootFileManager::SetBasketSize(unsigned int basketSize)
|
||||
{ fBasketSize = basketSize; }
|
||||
|
||||
inline void G4RootFileManager::SetBasketEntries(unsigned int basketEntries)
|
||||
{ fBasketEntries = basketEntries; }
|
||||
|
||||
inline tools::wroot::directory* G4RootFileManager::GetHistoDirectory() const
|
||||
{ return fHistoDirectory; }
|
||||
|
||||
@@ -104,5 +110,8 @@ inline tools::wroot::directory* G4RootFileManager::GetNtupleDirectory() const
|
||||
inline unsigned int G4RootFileManager::GetBasketSize() const
|
||||
{ return fBasketSize; }
|
||||
|
||||
inline unsigned int G4RootFileManager::GetBasketEntries() const
|
||||
{ return fBasketEntries; }
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -69,9 +69,10 @@ class G4RootMainNtupleManager : public G4BaseAnalysisManager
|
||||
G4bool Merge();
|
||||
G4bool Reset(G4bool deleteNtuple);
|
||||
|
||||
// Set methods
|
||||
// Set/get methods
|
||||
void SetNtupleFile(std::shared_ptr<tools::wroot::file> rfile);
|
||||
void SetNtupleDirectory(tools::wroot::directory* directory);
|
||||
void SetRowWise(G4bool rowWise);
|
||||
std::shared_ptr<tools::wroot::file> GetNtupleFile() const;
|
||||
tools::wroot::directory* GetNtupleDirectory() const;
|
||||
|
||||
@@ -80,7 +81,7 @@ class G4RootMainNtupleManager : public G4BaseAnalysisManager
|
||||
{ return fNtupleBuilder->GetNtupleDescriptionVector(); }
|
||||
const std::vector<tools::wroot::ntuple*>& GetNtupleVector()
|
||||
{ return fNtupleVector; }
|
||||
unsigned int GetBasketSize() const;
|
||||
unsigned int GetBasketEntries() const;
|
||||
|
||||
private:
|
||||
// Data members
|
||||
@@ -97,11 +98,17 @@ inline void G4RootMainNtupleManager::SetNtupleFile(std::shared_ptr<tools::wroot:
|
||||
inline void G4RootMainNtupleManager::SetNtupleDirectory(tools::wroot::directory* directory)
|
||||
{ fNtupleDirectory = directory; }
|
||||
|
||||
inline void G4RootMainNtupleManager::SetRowWise(G4bool rowWise)
|
||||
{ fRowWise = rowWise; }
|
||||
|
||||
inline std::shared_ptr<tools::wroot::file> G4RootMainNtupleManager::GetNtupleFile() const
|
||||
{ return fNtupleFile; }
|
||||
|
||||
inline tools::wroot::directory* G4RootMainNtupleManager::GetNtupleDirectory() const
|
||||
{ return fNtupleDirectory; }
|
||||
|
||||
inline unsigned int G4RootMainNtupleManager::GetBasketEntries() const
|
||||
{ return fNtupleBuilder->GetBasketEntries(); }
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -72,7 +72,7 @@ class G4RootNtupleManager : public G4TNtupleManager<tools::wroot::ntuple>
|
||||
public:
|
||||
explicit G4RootNtupleManager(const G4AnalysisManagerState& state,
|
||||
G4int nofMainManagers,
|
||||
G4bool rowWise);
|
||||
G4bool rowWise, G4bool rowMode);
|
||||
virtual ~G4RootNtupleManager();
|
||||
|
||||
private:
|
||||
@@ -108,10 +108,12 @@ class G4RootNtupleManager : public G4TNtupleManager<tools::wroot::ntuple>
|
||||
const std::vector<NtupleDescriptionType*>& GetNtupleDescriptionVector() const;
|
||||
G4RootMainNtupleManager* GetMainNtupleManager(G4int index) const;
|
||||
unsigned int GetBasketSize() const;
|
||||
unsigned int GetBasketEntries() const;
|
||||
|
||||
// Utility functions
|
||||
//
|
||||
void SetCreateMode();
|
||||
void SetNtupleRowWise(G4bool rowWise, G4bool rowMode);
|
||||
|
||||
// data members
|
||||
//
|
||||
@@ -120,6 +122,7 @@ class G4RootNtupleManager : public G4TNtupleManager<tools::wroot::ntuple>
|
||||
tools::wroot::directory* fNtupleDirectory;
|
||||
std::vector<G4RootMainNtupleManager*> fMainNtupleManagers;
|
||||
G4bool fRowWise;
|
||||
G4bool fRowMode;
|
||||
};
|
||||
|
||||
// inline functions
|
||||
|
||||
@@ -81,7 +81,8 @@ class G4RootPNtupleManager : public G4BaseNtupleManager
|
||||
|
||||
public:
|
||||
explicit G4RootPNtupleManager(G4RootMainNtupleManager* main,
|
||||
const G4AnalysisManagerState& state);
|
||||
const G4AnalysisManagerState& state,
|
||||
G4bool rowWise, G4bool rowMode);
|
||||
~G4RootPNtupleManager();
|
||||
|
||||
private:
|
||||
@@ -147,6 +148,9 @@ class G4RootPNtupleManager : public G4BaseNtupleManager
|
||||
virtual G4int GetNofNtuples() const final;
|
||||
virtual G4int GetNofNtupleBookings() const final;
|
||||
|
||||
// Set methods
|
||||
void SetNtupleRowWise(G4bool rowWise, G4bool rowMode);
|
||||
|
||||
private:
|
||||
G4RootPNtupleDescription*
|
||||
GetNtupleDescriptionInFunction(G4int id, G4String function, G4bool warn = true) const;
|
||||
@@ -174,6 +178,8 @@ class G4RootPNtupleManager : public G4BaseNtupleManager
|
||||
G4RootMainNtupleManager* fMainNtupleManager;
|
||||
std::vector<G4RootPNtupleDescription*> fNtupleDescriptionVector;
|
||||
std::vector<tools::wroot::imt_ntuple*> fNtupleVector;
|
||||
G4bool fRowWise;
|
||||
G4bool fRowMode;
|
||||
};
|
||||
|
||||
// inline functions
|
||||
@@ -349,4 +355,3 @@ G4bool G4RootPNtupleManager::FillNtupleTColumn(G4int columnId, const T& value) {
|
||||
}
|
||||
|
||||
#endif
|
||||
|
||||
|
||||
@@ -29,45 +29,14 @@
|
||||
#ifndef g4root_defs_h
|
||||
#define g4root_defs_h
|
||||
|
||||
#include "tools/histo/h1d"
|
||||
#include "tools/histo/h2d"
|
||||
#include "tools/histo/h3d"
|
||||
#include "tools/histo/p1d"
|
||||
#include "tools/histo/p2d"
|
||||
#include "tools/wroot/ntuple"
|
||||
#include "tools/rroot/ntuple"
|
||||
#include "G4RootAnalysisManager.hh"
|
||||
#include "G4RootAnalysisReader.hh"
|
||||
#include "g4hntools_defs.hh"
|
||||
|
||||
namespace G4Root {
|
||||
|
||||
// H1 types
|
||||
using G4AnaH1 = tools::histo::h1d; // keep for backward compatibility
|
||||
using G4H1 = tools::histo::h1d;
|
||||
using G4H1Iterator = std::vector<tools::histo::h1d*>::iterator;
|
||||
using G4H1ConstIterator = std::vector<tools::histo::h1d*>::const_iterator;
|
||||
|
||||
// H2 types
|
||||
using G4AnaH2 = tools::histo::h2d; // keep for backward compatibility
|
||||
using G4H2 = tools::histo::h2d;
|
||||
using G4H2Iterator = std::vector<tools::histo::h2d*>::iterator;
|
||||
using G4H2ConstIterator = std::vector<tools::histo::h2d*>::const_iterator;
|
||||
|
||||
// H3 types
|
||||
using G4H3 = tools::histo::h3d;
|
||||
using G4H3Iterator = std::vector<tools::histo::h3d*>::iterator;
|
||||
using G4H3ConstIterator = std::vector<tools::histo::h3d*>::const_iterator;
|
||||
|
||||
// P1 types
|
||||
using G4P1 = tools::histo::p1d;
|
||||
using G4P1Iterator = std::vector<tools::histo::p1d*>::iterator;
|
||||
using G4P1ConstIterator = std::vector<tools::histo::p1d*>::const_iterator;
|
||||
|
||||
// P2 types
|
||||
using G4P2 = tools::histo::p2d;
|
||||
using G4P2Iterator = std::vector<tools::histo::p2d*>::iterator;
|
||||
using G4P2ConstIterator = std::vector<tools::histo::p2d*>::const_iterator;
|
||||
|
||||
namespace G4Root
|
||||
{
|
||||
// Ntuple types
|
||||
using G4Ntuple = tools::wroot::ntuple;
|
||||
using G4NtupleIterator = std::vector<tools::wroot::ntuple*>::iterator;
|
||||
|
||||
@@ -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