g4tools  5.4.0
fac
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_rroot_fac
5 #define tools_rroot_fac
6 
7 #include "../sout"
8 #include "../S_STRING"
9 
10 #include "branch_element"
11 #include "branch_object"
12 #include "leaf"
13 #include "basket"
14 #include "tree_index"
15 #include "stl_vector"
16 #include "dummy"
17 #include "obj_list"
18 #include "vector3"
19 #include "matrix"
20 
21 #ifdef TOOLS_MEM
22 #include "../mem"
23 #endif
24 
25 namespace tools {
26 namespace rroot {
27 
28 class fac : public virtual ifac {
29 public:
31 public: //ifac
32  virtual std::ostream& out() const {return m_out;}
33  virtual iro* create(const std::string& a_class,const args&) {
34  //m_out << "tools::rroot::fac::create :"
35  // << " create object of class " << a_class << "..."
36  // << std::endl;
37  if(a_class=="TBranch") {
38  return new branch(m_out,*this);
39  } else if(a_class=="TBranchElement") {
40  return new branch_element(m_out,*this);
41  } else if(a_class=="TBranchObject") {
42  return new branch_object(m_out,*this);
43 
44  } else if(a_class=="TLeafB") {
45  return new leaf<char>(m_out,*this);
46 
47  } else if(a_class=="TLeafS") {
48  return new leaf<short>(m_out,*this);
49 
50  } else if(a_class=="TLeafI") {
51  return new leaf<int>(m_out,*this);
52 
53  } else if(a_class=="TLeafF") {
54  return new leaf<float>(m_out,*this);
55 
56  } else if(a_class=="TLeafD") {
57  return new leaf<double>(m_out,*this);
58 
59  } else if(a_class=="TLeafO") {
60  return new leaf<bool>(m_out,*this);
61 
62  } else if(a_class=="TLeafC") {
63  return new leaf_string(m_out,*this);
64 
65  } else if(a_class=="TLeafElement") {
66  return new leaf_element(m_out,*this);
67 
68  } else if(a_class=="TLeafObject") {
69  return new leaf_object(m_out,*this);
70 
71  } else if(a_class=="TBasket") {
72  return new basket(m_out);
73 
74  // L.Duflot ATLAS file :
75  } else if(a_class=="TTreeIndex") {
76  return new tree_index();
77 
78  } else if(a_class=="TList") {
79  return new obj_list(*this);
80  } else if(a_class=="TVector3") {
81  return new vector3();
82  } else if(a_class=="TMatrix") {
83  return new matrix();
84 
85  } else if(a_class=="TNamed") {
86  return new named();
87 
88  } else if(a_class=="vector<unsigned short>") {
89  return new stl_vector<unsigned short>();
90  } else if(a_class=="vector<short>") {
91  return new stl_vector<short>();
92  } else if(a_class=="vector<unsigned int>") {
93  return new stl_vector<unsigned int>();
94  } else if(a_class=="vector<int>") {
95  return new stl_vector<int>();
96  } else if(a_class=="vector<float>") {
97  return new stl_vector<float>();
98  } else if(a_class=="vector<double>") {
99  return new stl_vector<double>();
100 
101  } else if(a_class=="vector<unsigned long>") { //beurk
102  return new stl_vector<uint64>(); //is it ok to map to an uint64 ?
103 
104  } else if(a_class=="vector<string>") {
105  return new stl_vector_string();
106 
107  } else if(a_class=="vector<vector<unsigned short> >") {
109  } else if(a_class=="vector<vector<short> >") {
110  return new stl_vector_vector<short>();
111  } else if(a_class=="vector<vector<unsigned int> >") {
112  return new stl_vector_vector<unsigned int>();
113  } else if(a_class=="vector<vector<int> >") {
114  return new stl_vector_vector<int>();
115  } else if(a_class=="vector<vector<float> >") {
116  return new stl_vector_vector<float>();
117  } else if(a_class=="vector<vector<double> >") {
118  return new stl_vector_vector<double>();
119 
120  } else if(a_class=="TBranchRef") {
121  return new dummy();
122 
123  } else {
124  m_out << "tools::rroot::fac::create :"
125  << " unknown class " << sout(a_class) << "."
126  << " Create a tools::rroot::dummy object."
127  << std::endl;
128  return new dummy();
129  }
130  }
131 public:
132  fac(std::ostream& a_out):m_out(a_out){
133 #ifdef TOOLS_MEM
134  mem::increment(s_class().c_str());
135 #endif
136  }
137  virtual ~fac(){
138 #ifdef TOOLS_MEM
139  mem::decrement(s_class().c_str());
140 #endif
141  }
142 public:
143  fac(const fac& a_from):ifac(a_from),m_out(a_from.m_out){
144 #ifdef TOOLS_MEM
145  mem::increment(s_class().c_str());
146 #endif
147  }
148  fac& operator=(const fac&){return *this;}
149 protected:
150 /*
151  branch* arg_branch(const args& a_args) {
152  void* p = ifac::find_args(a_args,ifac::arg_branch());
153  if(!p) {
154  m_out << "tools::rroot::fac::arg_branch :"
155  << " branch not found in args."
156  << std::endl;
157  return 0;
158  }
159  return (branch*)p;
160  }
161 */
162 protected:
163  std::ostream& m_out;
164 };
165 
166 }}
167 
168 #endif
tools::rroot::tree_index
Definition: tree_index:12
obj_list
tools::rroot::fac::fac
fac(std::ostream &a_out)
Definition: fac:132
tools::rroot::stl_vector_vector
Definition: stl_vector:102
tools::rroot::fac::fac
fac(const fac &a_from)
Definition: fac:143
tools::rroot::fac
Definition: fac:28
tools::rroot::branch
Definition: branch:23
dummy
tools::rroot::leaf_object
Definition: leaf:378
tools::rroot::obj_list
Definition: obj_list:20
tools::rroot::fac::out
virtual std::ostream & out() const
Definition: fac:32
tree_index
branch_element
tools::rroot::leaf_element
Definition: leaf:314
tools::rroot::fac::create
virtual iro * create(const std::string &a_class, const args &)
Definition: fac:33
tools::rroot::matrix
Definition: matrix:16
tools::rroot::dummy
Definition: dummy:22
matrix
TOOLS_SCLASS
#define TOOLS_SCLASS(a_name)
Definition: S_STRING:41
tools::rroot::vector3
Definition: vector3:14
tools::sout
Definition: sout:17
tools::rroot::branch_object
Definition: branch_object:12
stl_vector
branch_object
basket
tools::rroot::ifac
Definition: ifac:19
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::rroot::basket
Definition: basket:17
tools::rroot::leaf_string
Definition: leaf:207
tools::rroot::fac::operator=
fac & operator=(const fac &)
Definition: fac:148
tools::rroot::fac::m_out
std::ostream & m_out
Definition: fac:163
vector3
tools::rroot::iro
Definition: iro:19
tools::rroot::fac::~fac
virtual ~fac()
Definition: fac:137
tools::rroot::ifac::args
std::map< char, void * > args
Definition: ifac:21
tools::rroot::leaf
Definition: leaf:57
tools::rroot::stl_vector
Definition: stl_vector:18
tools::rroot::named
Definition: named:104
tools::rroot::stl_vector_string
Definition: stl_vector:192
tools::rroot::branch_element
Definition: branch_element:18
leaf