CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
TrainerMonitoring.cc
Go to the documentation of this file.
1 #include <string>
2 #include <vector>
3 #include <memory>
4 #include <ostream>
5 
6 #include <boost/shared_ptr.hpp>
7 
8 #include <TFile.h>
9 #include <TDirectory.h>
10 #include <TObject.h>
11 
13 
15 
16 namespace { // anonymous
17 
18 class ROOTContextSentinel {
19  public:
20  ROOTContextSentinel() : dir(gDirectory), file(gFile) {}
21  ~ROOTContextSentinel() { gDirectory = dir; gFile = file; }
22 
23  private:
24  TDirectory *dir;
25  TFile *file;
26 };
27 
28 } // anonymous namespace
29 
30 namespace PhysicsTools {
31 
33 {
34  ROOTContextSentinel ctx;
35 
36  rootFile.reset(TFile::Open(fileName.c_str(), "RECREATE"));
37 }
38 
40 {
41 }
42 
44 {
45  ROOTContextSentinel ctx;
46 
47  typedef std::map<std::string, boost::shared_ptr<Module> > Map;
48  for(Map::const_iterator iter = modules.begin();
49  iter != modules.end(); ++iter) {
50  rootFile->cd();
51  TDirectory *dir = rootFile->mkdir(iter->first.c_str());
52  dir->cd();
53  iter->second->write(dir);
54  }
55 }
56 
58 {
59 }
60 
62 {
63 }
64 
66 {
67  typedef std::map<std::string, boost::shared_ptr<Object> > Map;
68  for(Map::const_iterator iter = data.begin();
69  iter != data.end(); ++iter)
70  iter->second->write(dir);
71 }
72 
74 {
75  boost::shared_ptr<Object> ptr(object);
76  if (!data.insert(std::make_pair(object->getName(), ptr)).second)
77  throw cms::Exception("DuplicateNode")
78  << "Node \"" << object->getName() << "\" already"
79  " exists." << std::endl;
80 }
81 
83 {
84  boost::shared_ptr<Module> module(new Module);
85  if (!modules.insert(std::make_pair(name, module)).second)
86  throw cms::Exception("DuplicateModule")
87  << "Module \"" << name << "\" already"
88  " exists." << std::endl;
89 
90  return module.get();
91 }
92 
93 } // namespace PhysicsTools
const std::string & getName() const
std::map< std::string, boost::shared_ptr< Module > > modules
Module * book(const std::string &name)
std::auto_ptr< TFile > rootFile
TrainerMonitoring(const std::string &fileName)
char data[epos_bytes_allocation]
Definition: EPOS_Wrapper.h:82
dbl *** dir
Definition: mlp_gen.cc:35