41 bool to_vector(base_ntu& a_ntu,std::vector<T>& a_vec) {
43 const std::vector<base_col*>& cols = a_ntu.cols();
44 if(cols.empty())
return false;
45 base_col* _base_col = cols.front();
46 aida_col<T>* _col = safe_cast<base_col, aida_col<T> >(*_base_col);
47 if(!_col)
return false;
49 uint64 _rows = a_ntu.rows();
52 {
for(
uint64 row=0;row<_rows;row++) {
53 if(!a_ntu.next()) {a_vec.clear();
return false;}
54 if(!_col->get_entry(v)) {a_vec.clear();
return false;}
71 std::vector<G4XmlRNtupleDescription*>::iterator it;
72 for (it = fNtupleVector.begin(); it != fNtupleVector.end(); it++ ) {
86 if ( index < 0 || index >=
G4int(fNtupleVector.size()) ) {
88 G4String inFunction =
"G4XmlRNtupleManager::";
89 inFunction += functionName;
91 description <<
" " <<
"ntuple " <<
id <<
" does not exist.";
97 return fNtupleVector[index];
107 return ! fNtupleVector.size();
115 std::vector<G4XmlRNtupleDescription*>::iterator it;
116 for (it = fNtupleVector.begin(); it != fNtupleVector.end(); it++ ) {
135 = GetNtupleInFunction(ntupleId,
"GetRNtuple");
137 if ( ! rntupleDescription )
return nullptr;
139 return rntupleDescription->
fNtuple;
147 fNtupleVector.push_back(rntupleDescription);
182 std::vector<G4int>& vector)
189 std::vector<G4float>& vector)
196 std::vector<G4double>& vector)
209 description <<
" ntupleId " << ntupleId <<
" " << columnName;
215 = GetNtupleInFunction(ntupleId,
"SetNtupleIColumn");
216 if ( ! ntupleDescription )
return false;
218 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
219 ntupleBinding->add_column(columnName, value);
224 description <<
" ntupleId " << ntupleId <<
" " << columnName;
240 description <<
" ntupleId " << ntupleId <<
" " << columnName;
246 = GetNtupleInFunction(ntupleId,
"SetNtupleFColumn");
247 if ( ! ntupleDescription )
return false;
249 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
250 ntupleBinding->add_column(columnName, value);
255 description <<
" ntupleId " << ntupleId <<
" " << columnName;
273 description <<
" ntupleId " << ntupleId <<
" " << columnName;
279 = GetNtupleInFunction(ntupleId,
"SetNtupleDColumn");
280 if ( ! ntupleDescription )
return false;
282 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
283 ntupleBinding->add_column(columnName, value);
288 description <<
" ntupleId " << ntupleId <<
" " << columnName;
306 description <<
" ntupleId " << ntupleId <<
" " << columnName;
312 = GetNtupleInFunction(ntupleId,
"SetNtupleSColumn");
313 if ( ! ntupleDescription )
return false;
315 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
316 ntupleBinding->add_column(columnName, value);
321 description <<
" ntupleId " << ntupleId <<
" " << columnName;
332 std::vector<G4int>& vector)
339 description <<
" ntupleId " << ntupleId <<
" " << columnName;
345 = GetNtupleInFunction(ntupleId,
"SetNtupleIColumn");
346 if ( ! ntupleDescription )
return false;
352 tools::aida::ntuple* subNtuple =
new tools::aida::ntuple(
G4cout, columnName);
354 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
355 ntupleBinding->add_column(columnName, *subNtuple);
360 description <<
" ntupleId " << ntupleId <<
" " << columnName;
371 std::vector<G4float>& vector)
378 description <<
" ntupleId " << ntupleId <<
" " << columnName;
384 = GetNtupleInFunction(ntupleId,
"SetNtupleFColumn");
385 if ( ! ntupleDescription )
return false;
391 tools::aida::ntuple* subNtuple =
new tools::aida::ntuple(
G4cout, columnName);
393 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
394 ntupleBinding->add_column(columnName, *subNtuple);
399 description <<
" ntupleId " << ntupleId <<
" " << columnName;
410 std::vector<G4double>& vector)
417 description <<
" ntupleId " << ntupleId <<
" " << columnName;
423 = GetNtupleInFunction(ntupleId,
"SetNtupleDColumn");
424 if ( ! ntupleDescription )
return false;
430 tools::aida::ntuple* subNtuple =
new tools::aida::ntuple(
G4cout, columnName);
432 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
433 ntupleBinding->add_column(columnName, *subNtuple);
438 description <<
" ntupleId " << ntupleId <<
" " << columnName;
458 description <<
" ntupleId " << ntupleId;
464 = GetNtupleInFunction(ntupleId,
"GetNtupleRow");
465 if ( ! ntupleDescription )
return false;
467 tools::aida::ntuple* ntuple = ntupleDescription->
fNtuple;
470 if ( ! isInitialized ) {
471 tools::ntuple_binding* ntupleBinding = ntupleDescription->
fNtupleBinding;
472 if ( ! ntuple->set_binding(std::cout, *ntupleBinding) ) {
476 <<
"Ntuple initialization failed !!";
485 G4bool next = ntuple->next();
487 if ( ! ntuple->get_row() ) {
491 <<
"Ntuple get_row() failed !!";
499 {std::map<tools::aida::ntuple*, std::vector<int>* >::iterator it;
502 tools::aida::to_vector<int>(*(it->first), *(it->second));
504 {std::map<tools::aida::ntuple*, std::vector<float>* >::iterator it;
507 tools::aida::to_vector<float>(*(it->first), *(it->second));
509 {std::map<tools::aida::ntuple*, std::vector<double>* >::iterator it;
512 tools::aida::to_vector<double>(*(it->first), *(it->second));
519 description <<
" ntupleId " << ntupleId;
std::map< tools::aida::ntuple *, std::vector< double > * > fDVectorBindingMap
void Message(const G4String &action, const G4String &object, const G4String &objectName, G4bool success=true) const
tools::ntuple_binding * fNtupleBinding
std::ostringstream G4ExceptionDescription
virtual G4bool SetNtupleDColumn(const G4String &columnName, G4double &value)
std::map< tools::aida::ntuple *, std::vector< int > * > fIVectorBindingMap
const G4AnalysisVerbose * GetVerboseL2() const
G4GLOB_DLL std::ostream G4cout
const XML_Char int const XML_Char * value
const G4AnalysisVerbose * GetVerboseL4() const
virtual G4bool SetNtupleIColumn(const G4String &columnName, G4int &value)
virtual G4bool SetNtupleSColumn(const G4String &columnName, G4String &value)
tools::aida::ntuple * GetNtuple() const
virtual G4bool SetNtupleFColumn(const G4String &columnName, G4float &value)
void G4Exception(const char *originOfException, const char *exceptionCode, G4ExceptionSeverity severity, const char *comments)
G4XmlRNtupleManager(const G4AnalysisManagerState &state)
unsigned long long uint64
tools::aida::ntuple * fNtuple
std::map< tools::aida::ntuple *, std::vector< float > * > fFVectorBindingMap
G4int SetNtuple(G4XmlRNtupleDescription *rntupleDescription)
virtual G4bool GetNtupleRow()
virtual ~G4XmlRNtupleManager()
const G4AnalysisManagerState & fState