Back to home page

EIC code displayed by LXR

 
 

    


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