CMS 3D CMS Logo

VariableHelper.h
Go to the documentation of this file.
1 #ifndef ConfigurableAnalysis_VariableHelper_H
2 #define ConfigurableAnalysis_VariableHelper_H
3 
10 
12 public:
15  for (iterator it = variables_.begin(); it != variables_.end(); ++it) {
16  delete it->second;
17  }
18  }
19  typedef std::map<std::string, const CachingVariable*>::const_iterator iterator;
20 
22 
23  iterator begin() { return variables_.begin(); }
24  iterator end() { return variables_.end(); }
25 
26  void setHolder(std::string hn);
27  void print() const;
29 
30 private:
31  std::map<std::string, const CachingVariable*> variables_;
32 };
33 
35 private:
37  std::map<std::string, VariableHelper*> multipleInstance_;
38 
41 
42 public:
44  : SetVariableHelperUniqueInstance_(nullptr) {
45  //r.watchPreModule(this, &VariableHelperService::preModule );
47  //r.watchPostProcessEvent(this, &VariableHelperService::postProcess );
49  printValuesForEachEvent_ = iConfig.exists("printValuesForEachEventCategory");
50  if (printValuesForEachEvent_)
51  printValuesForEachEventCategory_ = iConfig.getParameter<std::string>("printValuesForEachEventCategory");
52  }
54  for (std::map<std::string, VariableHelper*>::iterator it = multipleInstance_.begin(); it != multipleInstance_.end();
55  ++it) {
56  delete it->second;
57  }
58  }
59 
61  if (multipleInstance_.find(user) != multipleInstance_.end()) {
62  std::cerr << user << " VariableHelper user already defined." << std::endl;
63  throw;
64  } else
65  SetVariableHelperUniqueInstance_ = new VariableHelper(iConfig, iC);
66  multipleInstance_[user] = SetVariableHelperUniqueInstance_;
67  SetVariableHelperUniqueInstance_->setHolder(user);
68 
69  SetVariableHelperUniqueInstance_->print();
70  return (*SetVariableHelperUniqueInstance_);
71  }
72 
73  VariableHelper& get() {
74  if (!SetVariableHelperUniqueInstance_) {
75  std::cerr << " none of VariableHelperUniqueInstance_ or SetVariableHelperUniqueInstance_ is valid." << std::endl;
76  throw;
77  } else
78  return (*SetVariableHelperUniqueInstance_);
79  }
80 
82  const edm::ModuleDescription& desc = *mcc.moduleDescription();
83  //does a set with the module name, except that it does not throw on non-configured modules
84  std::map<std::string, VariableHelper*>::iterator f = multipleInstance_.find(desc.moduleLabel());
85  if (f != multipleInstance_.end()) {
86  SetVariableHelperUniqueInstance_ = (f->second);
87  return;
88  }
89  SetVariableHelperUniqueInstance_ = nullptr;
90  }
91 
93  if (!printValuesForEachEvent_)
94  return;
95 
96  /*const edm::Event & event;
97  std::map<std::string, VariableHelper* >::iterator f= multipleInstance_.begin();
98  for (; f!=multipleInstance_.end();++f){
99  // std::cout<<" category is: "<<printValuesForEachEventCategory_+"|"+f->first<<std::endl;
100  // std::cout<<f->first<<"\n" <<f->second->printValues(event);
101 
102  edm::LogInfo(printValuesForEachEventCategory_+"|"+f->first)<<f->first<<"\n"
103  <<f->second->printValues(event);
104  }
105  */
106  }
107 
109  std::map<std::string, VariableHelper*>::iterator f = multipleInstance_.find(user);
110  if (f == multipleInstance_.end()) {
111  std::cerr << user << " VariableHelper user not defined." << std::endl;
112  throw;
113  } else {
114  SetVariableHelperUniqueInstance_ = (f->second);
115  return (*SetVariableHelperUniqueInstance_);
116  }
117  }
118 };
119 
120 #endif
T getParameter(std::string const &) const
VariableHelper(const edm::ParameterSet &iConfig, edm::ConsumesCollector &iC)
const CachingVariable * variable(std::string name) const
void watchPreModuleEvent(PreModuleEvent::slot_type const &iSlot)
void watchPostEvent(PostEvent::slot_type const &iSlot)
#define nullptr
bool exists(std::string const &parameterName) const
checks if a parameter exists
VariableHelper * SetVariableHelperUniqueInstance_
iterator end()
std::string printValuesForEachEventCategory_
std::string const & moduleLabel() const
void postProcess(edm::StreamContext const &sc)
ModuleDescription const * moduleDescription() const
std::string printValues(const edm::Event &event) const
double f[11][100]
void preModule(edm::StreamContext const &, edm::ModuleCallingContext const &mcc)
std::map< std::string, const CachingVariable * > variables_
void setHolder(std::string hn)
std::map< std::string, const CachingVariable * >::const_iterator iterator
VariableHelperService(const edm::ParameterSet &iConfig, edm::ActivityRegistry &r)
std::map< std::string, VariableHelper * > multipleInstance_
iterator begin()
void print() const
VariableHelper & init(std::string user, const edm::ParameterSet &iConfig, edm::ConsumesCollector &&iC)
Definition: event.py:1