Warning, /include/Geant4/tools/rroot/fac is written in an unsupported language. File is not indexed.
0001 // Copyright (C) 2010, Guy Barrand. All rights reserved.
0002 // See the file tools.license for terms.
0003
0004 #ifndef tools_rroot_fac
0005 #define tools_rroot_fac
0006
0007 #include "../sout"
0008 #include "../S_STRING"
0009
0010 #include "branch_element"
0011 #include "branch_object"
0012 #include "leaf"
0013 #include "basket"
0014 #include "tree_index"
0015 #include "stl_vector"
0016 #include "dummy"
0017 #include "obj_list"
0018 #include "vector3"
0019 #include "matrix"
0020
0021 namespace tools {
0022 namespace rroot {
0023
0024 class fac : public virtual ifac {
0025 public:
0026 TOOLS_SCLASS(tools::rroot::fac)
0027 public: //ifac
0028 virtual std::ostream& out() const {return m_out;}
0029 virtual iro* create(const std::string& a_class,const args&) {
0030 if(a_class=="TBranch") {
0031 return new branch(m_out,*this);
0032 } else if(a_class=="TBranchElement") {
0033 return new branch_element(m_out,*this);
0034 } else if(a_class=="TBranchObject") {
0035 return new branch_object(m_out,*this);
0036
0037 } else if(a_class=="TLeafB") {
0038 return new leaf<char>(m_out,*this);
0039
0040 } else if(a_class=="TLeafS") {
0041 return new leaf<short>(m_out,*this);
0042
0043 } else if(a_class=="TLeafI") {
0044 return new leaf<int>(m_out,*this);
0045
0046 } else if(a_class=="TLeafF") {
0047 return new leaf<float>(m_out,*this);
0048
0049 } else if(a_class=="TLeafD") {
0050 return new leaf<double>(m_out,*this);
0051
0052 } else if(a_class=="TLeafO") {
0053 return new leaf<bool>(m_out,*this);
0054
0055 } else if(a_class=="TLeafC") {
0056 return new leaf_string(m_out,*this);
0057
0058 } else if(a_class=="TLeafElement") {
0059 return new leaf_element(m_out,*this);
0060
0061 } else if(a_class=="TLeafObject") {
0062 return new leaf_object(m_out,*this);
0063
0064 } else if(a_class=="TBasket") {
0065 return new basket(m_out);
0066
0067 // L.Duflot ATLAS file :
0068 } else if(a_class=="TTreeIndex") {
0069 return new tree_index();
0070
0071 } else if(a_class=="TList") {
0072 return new obj_list(*this);
0073 } else if(a_class=="TVector3") {
0074 return new vector3();
0075 } else if(a_class=="TMatrix") {
0076 return new matrix();
0077
0078 } else if(a_class=="TNamed") {
0079 return new named();
0080
0081 } else if(a_class=="vector<unsigned short>") {
0082 return new stl_vector<unsigned short>();
0083 } else if(a_class=="vector<short>") {
0084 return new stl_vector<short>();
0085 } else if(a_class=="vector<unsigned int>") {
0086 return new stl_vector<unsigned int>();
0087 } else if(a_class=="vector<int>") {
0088 return new stl_vector<int>();
0089 } else if(a_class=="vector<float>") {
0090 return new stl_vector<float>();
0091 } else if(a_class=="vector<double>") {
0092 return new stl_vector<double>();
0093
0094 } else if(a_class=="vector<unsigned long>") { //beurk
0095 return new stl_vector<uint64>(); //is it ok to map to an uint64 ?
0096
0097 } else if(a_class=="vector<string>") {
0098 return new stl_vector_string();
0099
0100 } else if(a_class=="vector<vector<unsigned short> >") {
0101 return new stl_vector_vector<unsigned short>();
0102 } else if(a_class=="vector<vector<short> >") {
0103 return new stl_vector_vector<short>();
0104 } else if(a_class=="vector<vector<unsigned int> >") {
0105 return new stl_vector_vector<unsigned int>();
0106 } else if(a_class=="vector<vector<int> >") {
0107 return new stl_vector_vector<int>();
0108 } else if(a_class=="vector<vector<float> >") {
0109 return new stl_vector_vector<float>();
0110 } else if(a_class=="vector<vector<double> >") {
0111 return new stl_vector_vector<double>();
0112
0113 } else if(a_class=="TBranchRef") {
0114 return new dummy();
0115
0116 } else {
0117 m_out << "tools::rroot::fac::create :"
0118 << " unknown class " << sout(a_class) << "."
0119 << " Create a tools::rroot::dummy object."
0120 << std::endl;
0121 return new dummy();
0122 }
0123 }
0124 public:
0125 fac(std::ostream& a_out):m_out(a_out){
0126 }
0127 virtual ~fac(){
0128 }
0129 public:
0130 fac(const fac& a_from):ifac(a_from),m_out(a_from.m_out){
0131 }
0132 fac& operator=(const fac&){return *this;}
0133 protected:
0134 std::ostream& m_out;
0135 };
0136
0137 }}
0138
0139 #endif