CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
PayLoadInspector.h
Go to the documentation of this file.
1 #ifndef PayLoadInspector_H
2 #define PayLoadInspector_H
7 #include "TFile.h"
8 #include "Cintex/Cintex.h"
9 #include <sstream>
10 #include <iostream>
11 //#include <fstream>
12 #include <string>
13 #include <utility>
14 #include <vector>
15 
16 namespace cond {
17  // to be moved elsewhere
19  public:
22  elem(new Elem(db)){}
23  private:
24  struct Elem {
26  pooldb.transaction().start(true);
27  }
30  };
31  boost::shared_ptr<Elem> elem;
32 
33  };
34 
35  template<typename T>
37  public:
38  typedef T Class;
39 
41 
42  virtual ~BaseValueExtractor(){}
43  void computeW(Class const &o){
44  reset();
45  compute(o);
46  }
47  std::vector<float> const & values() const { return m_values;}
48  protected:
49  void add(float v) { m_values.push_back(v); }
50  void swap(std::vector<float> & v) {m_values.swap(v);}
51  private:
52  void reset() { m_values.clear();}
53  virtual void compute(Class const &){}
54 
55 
56  private:
57  std::vector<float> m_values;
58  };
59 
60 
61  // a collection of enumerators, strings, ints
62  template<typename T>
63  struct ExtractWhat {
64 
65  };
66 
67 
68 
69  template<typename T>
70  class ValueExtractor : public BaseValueExtractor<T> {
71  public:
72  typedef T Class;
75  ValueExtractor(What const &){}
76  static What what() { return What();}
77  private:
78  void compute(Class const &){}
79  private:
80  };
81 
82  template<typename DataT>
84  public:
85  typedef DataT Class;
87 
89 
92  }
93 
94  PayLoadInspector(const cond::IOVElementProxy & elem): m_since(elem.since()), m_token(elem.token()) {
95  ROOT::Cintex::Cintex::Enable();
96  cond::DbSession db = elem.db();
97  db.transaction().start(true);
98  load(db,m_token);
99  db.transaction().commit();
100  }
101 
102  std::string dumpXML(std::string filename) const {
103  size_t pos = filename.find(".xml");
104  if(pos == std::string::npos)
105  filename.append(".xml");
107  TFile * xml =0;
108  xml = TFile::Open(filename.c_str(), "recreate");
109  xml->WriteObjectAny(m_object.address(), m_object.typeName().c_str(), filename.c_str());
110  xml->Close();
111  return filename;
112  }
113 
114  std::string dump() const {
115  std::ostringstream ss;
116  //token parser
117  std::pair<std::string,int> oidData = parseToken( m_token );
118  ss << m_since << "_"<< oidData.first << "_" << oidData.second;
119  //std::string filename(ss.str()+".xml");
120  return this->dumpXML(ss.str()+".xml");
121  }
122 
123  // specialize...
124  std::string summary() const {
125  std::ostringstream os;
126  os << std::endl;
127  return os.str();
128  }
129 
130  // return the real name of the file including extension...
131  std::string plot(std::string const & /* filename */,
132  std::string const &,
133  std::vector<int> const&, std::vector<float> const& ) const {return "";}
134 
135 
136  // return the real name of the file including extension...
137  std::string trend_plot(std::string const & /* filename */,//
138  std::string const &,
139  std::vector<int> const&, std::vector<float> const&, std::vector<std::string> const&) const {return "";}
140 
141  // summary, which takes arguments
142  std::string summary_adv(//int const &,
143  std::string const &,
144  std::vector<int> const&, std::vector<float> const&, std::vector<std::string> const&) const {return "";}
145 
146  //returns a file in the format chosen by the user (typically root)
147  std::string dumpFile(std::string const & /* filename */,//
148  std::string const &,
149  std::vector<int> const&, std::vector<float> const&, std::vector<std::string> const&) const {return "";}
150 
151  void extract(Extractor & extractor) const {extractor.computeW(object()); }
152 
153  Class const & object() const {
154  return *(m_object.cast<Class>());
155  }
156 
157  ora::Object const & ora_object() const {
158  return m_object;
159  }
160 
161  private:
162  bool load( cond::DbSession & db, std::string const & token) {
163  bool ok = false;
164  //m_Data = db.getTypedObject<DataT>(token);
165  m_object = db.getObject(token);
166  //if (m_Data.get()) ok = true;
167  if(m_object.address()) ok = true;
168  return ok;
169  }
170 
171  private:
172  //boost::shared_ptr<DataT> m_Data;
175  std::string m_token;
176  };
177 
178 }
179 
180 #endif // PayLoadInspector_H
void * cast(const std::type_info &asType) const
Definition: Object.cc:53
std::string trend_plot(std::string const &, std::string const &, std::vector< int > const &, std::vector< float > const &, std::vector< std::string > const &) const
std::string plot(std::string const &, std::string const &, std::vector< int > const &, std::vector< float > const &) const
std::vector< float > const & values() const
ValueExtractor(What const &)
ora::Object const & ora_object() const
std::string typeName() const
Definition: Object.cc:49
std::pair< std::string, int > parseToken(const std::string &objectId)
Definition: PoolToken.cc:16
DbTransaction & transaction()
Definition: DbSession.cc:153
ExtractWhat< Class > What
void * address() const
Definition: Object.cc:41
int commit()
commit transaction.
tuple db
Definition: EcalCondDB.py:151
std::string dumpXML(std::string filename) const
void extract(Extractor &extractor) const
boost::shared_ptr< Elem > elem
std::string summary() const
Definition: DTT0.h:68
int start(bool readOnly=false)
start transaction
virtual void compute(Class const &)
unsigned long long Time_t
Definition: Time.h:16
bool load(cond::DbSession &db, std::string const &token)
PoolTransactionSentry(cond::DbSession &db)
void computeW(Class const &o)
Class const & object() const
std::string summary_adv(std::string const &, std::vector< int > const &, std::vector< float > const &, std::vector< std::string > const &) const
std::string dumpFile(std::string const &, std::string const &, std::vector< int > const &, std::vector< float > const &, std::vector< std::string > const &) const
void swap(std::vector< float > &v)
std::vector< float > m_values
PayLoadInspector(const cond::IOVElementProxy &elem)
void compute(Class const &)
cond::DbSession & db() const
Definition: IOVProxy.h:42
tuple filename
Definition: lut2db_cfg.py:20
ora::Object getObject(const std::string &objectId)
Definition: DbSession.cc:201
void destruct()
Definition: Object.cc:63
std::string dump() const
mathSSE::Vec4< T > v
ValueExtractor< DataT > Extractor