Import Geant4 10.3.0 source tree
This commit is contained in:
@@ -59,7 +59,7 @@ public:
|
||||
public: //icolumn<T>
|
||||
virtual bool get_entry(T& a_v) const {
|
||||
unsigned int n;
|
||||
if(!m_leaf.branch().find_entry(uint32(m_index),n)) {
|
||||
if(!m_branch.find_entry(m_file,uint32(m_index),n)) {
|
||||
a_v = T();
|
||||
return false;
|
||||
}
|
||||
@@ -69,7 +69,7 @@ public:
|
||||
virtual bool fetch_entry() const {
|
||||
//NOTE : it is ok to have a NULL m_user_var.
|
||||
unsigned int n;
|
||||
if(!m_leaf.branch().find_entry(uint32(m_index),n)) {
|
||||
if(!m_branch.find_entry(m_file,uint32(m_index),n)) {
|
||||
if(m_user_var) *m_user_var = T();
|
||||
return false;
|
||||
}
|
||||
@@ -77,8 +77,10 @@ public:
|
||||
return true;
|
||||
}
|
||||
public:
|
||||
column(leaf<T>& a_leaf,int64& a_index,T* a_user_var = 0)
|
||||
:m_leaf(a_leaf)
|
||||
column(ifile& a_file,branch& a_branch,leaf<T>& a_leaf,int64& a_index,T* a_user_var = 0)
|
||||
:m_file(a_file)
|
||||
,m_branch(a_branch)
|
||||
,m_leaf(a_leaf)
|
||||
,m_index(a_index) //WARNING : we keep the ref !
|
||||
,m_user_var(a_user_var) //not owner
|
||||
{}
|
||||
@@ -87,6 +89,8 @@ public:
|
||||
column(const column& a_from)
|
||||
:read::intuple(a_from)
|
||||
,parent(a_from)
|
||||
,m_file(a_from.m_file)
|
||||
,m_branch(a_from.m_branch)
|
||||
,m_leaf(a_from.m_leaf)
|
||||
,m_index(a_from.m_index)
|
||||
,m_user_var(a_from.m_user_var)
|
||||
@@ -97,6 +101,8 @@ public:
|
||||
return *this;
|
||||
}
|
||||
protected:
|
||||
ifile& m_file;
|
||||
branch& m_branch;
|
||||
leaf<T>& m_leaf;
|
||||
int64& m_index; //WARNING : a ref.
|
||||
T* m_user_var;
|
||||
@@ -119,7 +125,7 @@ public:
|
||||
virtual bool fetch_entry() const {
|
||||
//NOTE : it is ok to have a NULL m_user_var.
|
||||
unsigned int n;
|
||||
if(!m_leaf.branch().find_entry(uint32(m_index),n)) {
|
||||
if(!m_branch.find_entry(m_file,uint32(m_index),n)) {
|
||||
if(m_user_var) *m_user_var = std::string();
|
||||
return false;
|
||||
}
|
||||
@@ -127,8 +133,10 @@ public:
|
||||
return true;
|
||||
}
|
||||
public:
|
||||
column_string(leaf_string& a_leaf,int64& a_index,std::string* a_user_var = 0)
|
||||
:m_leaf(a_leaf)
|
||||
column_string(ifile& a_file,branch& a_branch,leaf_string& a_leaf,int64& a_index,std::string* a_user_var = 0)
|
||||
:m_file(a_file)
|
||||
,m_branch(a_branch)
|
||||
,m_leaf(a_leaf)
|
||||
,m_index(a_index) //WARNING : we keep the ref !
|
||||
,m_user_var(a_user_var) //not owner
|
||||
{}
|
||||
@@ -136,6 +144,8 @@ public:
|
||||
protected:
|
||||
column_string(const column_string& a_from)
|
||||
:read::icol(a_from)
|
||||
,m_file(a_from.m_file)
|
||||
,m_branch(a_from.m_branch)
|
||||
,m_leaf(a_from.m_leaf)
|
||||
,m_index(a_from.m_index)
|
||||
,m_user_var(a_from.m_user_var)
|
||||
@@ -146,6 +156,8 @@ public:
|
||||
return *this;
|
||||
}
|
||||
protected:
|
||||
ifile& m_file;
|
||||
branch& m_branch;
|
||||
leaf_string& m_leaf;
|
||||
int64& m_index; //WARNING : a ref.
|
||||
std::string* m_user_var;
|
||||
@@ -167,9 +179,8 @@ public:
|
||||
public: //icolumn<T>
|
||||
virtual bool get_entry(T& a_v) const {
|
||||
unsigned int n;
|
||||
if(!m_leaf.branch().find_entry(uint32(m_index),n)) {a_v = T();return false;}
|
||||
if(!m_be) {a_v = T();return false;}
|
||||
iro* obj = m_be->object(); //Not owner.
|
||||
if(!m_be.find_entry(m_file,uint32(m_index),n)) {a_v = T();return false;}
|
||||
iro* obj = m_be.object(); //Not owner.
|
||||
if(!obj) {a_v = T();return false;}
|
||||
RT* v = id_cast<iro,RT>(*obj);
|
||||
if(!v) {a_v = T();return false;}
|
||||
@@ -178,15 +189,11 @@ public:
|
||||
}
|
||||
virtual bool fetch_entry() const {
|
||||
unsigned int n;
|
||||
if(!m_leaf.branch().find_entry(uint32(m_index),n)) {
|
||||
if(!m_be.find_entry(m_file,uint32(m_index),n)) {
|
||||
if(m_user_var) *m_user_var = T();
|
||||
return false;
|
||||
}
|
||||
if(!m_be) {
|
||||
if(m_user_var) *m_user_var = T();
|
||||
return false;
|
||||
}
|
||||
iro* obj = m_be->object(); //Not owner.
|
||||
iro* obj = m_be.object(); //Not owner.
|
||||
if(!obj) {
|
||||
if(m_user_var) *m_user_var = T();
|
||||
return false;
|
||||
@@ -200,33 +207,33 @@ public:
|
||||
return true;
|
||||
}
|
||||
public:
|
||||
column_element(leaf_element& a_leaf,int64& a_index,T* a_user_var = 0)
|
||||
:m_leaf(a_leaf)
|
||||
column_element(ifile& a_file,branch_element& a_branch,leaf_element& a_leaf,int64& a_index,T* a_user_var = 0)
|
||||
:m_file(a_file)
|
||||
,m_be(a_branch)
|
||||
,m_leaf(a_leaf)
|
||||
,m_index(a_index) //WARNING : we keep the ref !
|
||||
,m_be(0)
|
||||
,m_user_var(a_user_var) //not owner
|
||||
{
|
||||
m_be = safe_cast<branch,branch_element>(m_leaf.branch());
|
||||
}
|
||||
{}
|
||||
virtual ~column_element(){}
|
||||
protected:
|
||||
column_element(const column_element& a_from)
|
||||
:read::intuple(a_from),parent(a_from)
|
||||
,m_file(a_from.m_file)
|
||||
,m_be(a_from.m_be)
|
||||
,m_leaf(a_from.m_leaf)
|
||||
,m_index(a_from.m_index)
|
||||
,m_be(a_from.m_be)
|
||||
,m_user_var(a_from.m_user_var)
|
||||
{}
|
||||
column_element& operator=(const column_element& a_from){
|
||||
if(&a_from==this) return *this;
|
||||
m_be = a_from.m_be;
|
||||
m_user_var = a_from.m_user_var;
|
||||
return *this;
|
||||
}
|
||||
protected:
|
||||
ifile& m_file;
|
||||
branch_element& m_be;
|
||||
leaf_element& m_leaf;
|
||||
int64& m_index; //WARNING : a ref.
|
||||
branch_element* m_be;
|
||||
T* m_user_var;
|
||||
};
|
||||
|
||||
@@ -254,7 +261,8 @@ public:
|
||||
bool initialize(std::ostream& a_out,const ntuple_binding& a_bd = ntuple_binding()) {
|
||||
tools::clear<read::icol>(m_cols);
|
||||
|
||||
std::vector<base_leaf*> leaves = m_tree.find_leaves();
|
||||
std::vector<base_leaf*> leaves;
|
||||
m_tree.find_leaves(leaves);
|
||||
tools_vforcit(base_leaf*,leaves,it) {
|
||||
base_leaf* bl = (*it);
|
||||
if(find_named<read::icol>(m_cols,bl->name())) {
|
||||
@@ -265,6 +273,14 @@ public:
|
||||
tools::clear<read::icol>(m_cols);
|
||||
return false;
|
||||
}
|
||||
branch* _branch = m_tree.find_leaf_branch(*bl);
|
||||
if(!_branch) {
|
||||
a_out << "tools::rroot::ntuple::initialize :"
|
||||
<< " can't find branch of leaf " << sout(bl->name()) << "."
|
||||
<< std::endl;
|
||||
tools::clear<read::icol>(m_cols);
|
||||
return false;
|
||||
}
|
||||
|
||||
//a_out << "tools::rroot::ntuple::initialize :"
|
||||
// << " entries " << bl->branch().entry_number() << "."
|
||||
@@ -272,32 +288,41 @@ public:
|
||||
|
||||
if(leaf<float>* lf = safe_cast<base_leaf, leaf<float> >(*bl) ){
|
||||
|
||||
column<float>* col = new column<float>(*lf,m_index,a_bd.find_variable<float>(bl->name()));
|
||||
column<float>* col = new column<float>(m_tree.file(),*_branch,*lf,
|
||||
m_index,a_bd.find_variable<float>(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(leaf<double>* ld = safe_cast<base_leaf, leaf<double> >(*bl) ){
|
||||
|
||||
column<double>* col = new column<double>(*ld,m_index,a_bd.find_variable<double>(bl->name()));
|
||||
column<double>* col = new column<double>(m_tree.file(),*_branch,*ld,
|
||||
m_index,a_bd.find_variable<double>(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(leaf<int>* li = safe_cast<base_leaf, leaf<int> >(*bl) ){
|
||||
|
||||
column<int>* col = new column<int>(*li,m_index,a_bd.find_variable<int>(bl->name()));
|
||||
column<int>* col = new column<int>(m_tree.file(),*_branch,*li,
|
||||
m_index,a_bd.find_variable<int>(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(leaf_string* ls = safe_cast<base_leaf, leaf_string >(*bl) ){
|
||||
|
||||
column_string* col = new column_string(*ls,m_index,a_bd.find_variable<std::string>(bl->name()));
|
||||
column_string* col = new column_string(m_tree.file(),*_branch,*ls,
|
||||
m_index,a_bd.find_variable<std::string>(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(leaf_element* le = safe_cast<base_leaf,leaf_element>(*bl) ){
|
||||
|
||||
branch_element* be = safe_cast<branch,branch_element>(le->branch());
|
||||
branch_element* be = safe_cast<branch,branch_element>(*_branch);
|
||||
if(!be) {
|
||||
a_out << "tools::rroot::ntuple::initialize : branch is not a branch_element." << std::endl;
|
||||
tools::clear<read::icol>(m_cols);
|
||||
return false;
|
||||
}
|
||||
|
||||
if(be->class_name()=="vector<string>") {
|
||||
typedef std::string el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
//unsigned int n;
|
||||
@@ -306,25 +331,25 @@ public:
|
||||
} else if(be->class_name()=="vector<unsigned short>") {
|
||||
typedef unsigned short el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<short>") {
|
||||
typedef short el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<unsigned int>") {
|
||||
typedef unsigned int el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<unsigned long>") { //beurk!
|
||||
typedef uint64 el_t; //it is ok to map to an uint64 ?
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
//unsigned int n;
|
||||
@@ -333,49 +358,49 @@ public:
|
||||
} else if(be->class_name()=="vector<int>") {
|
||||
typedef int el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<float>") {
|
||||
typedef float el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<double>") {
|
||||
typedef double el_t;
|
||||
typedef column_element< stl_vector<el_t> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<vector<unsigned short> >") {
|
||||
typedef std::vector<unsigned short> el_t;
|
||||
typedef column_element< stl_vector_vector<unsigned short> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<vector<short> >") {
|
||||
typedef std::vector<short> el_t;
|
||||
typedef column_element< stl_vector_vector<short> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<vector<unsigned int> >") {
|
||||
typedef std::vector<unsigned int> el_t;
|
||||
typedef column_element< stl_vector_vector<unsigned int> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<vector<int> >") {
|
||||
typedef std::vector<int> el_t;
|
||||
typedef column_element< stl_vector_vector<int> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else if(be->class_name()=="vector<vector<float> >") {
|
||||
typedef std::vector<float> el_t;
|
||||
typedef column_element< stl_vector_vector<float> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
//unsigned int n;
|
||||
@@ -384,7 +409,7 @@ public:
|
||||
} else if(be->class_name()=="vector<vector<double> >") {
|
||||
typedef std::vector<double> el_t;
|
||||
typedef column_element< stl_vector_vector<double> , std::vector<el_t> > ce_t;
|
||||
ce_t* col = new ce_t(*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
ce_t* col = new ce_t(m_tree.file(),*be,*le,m_index,a_bd.find_variable< std::vector<el_t> >(bl->name()));
|
||||
m_cols.push_back(col);
|
||||
|
||||
} else {
|
||||
@@ -409,7 +434,7 @@ public:
|
||||
|
||||
}
|
||||
|
||||
unsigned int num = m_cols.size();
|
||||
size_t num = m_cols.size();
|
||||
if(!num) {
|
||||
a_out << "tools::rroot::ntuple::initialize :"
|
||||
<< " zero columns."
|
||||
|
||||
Reference in New Issue
Block a user