DESY Hbb Analysis Framework
Public Member Functions | Private Attributes | List of all members
JME::JetResolutionObject::Definition Class Reference

#include <JetResolutionObject.h>

Public Member Functions

 Definition ()
 
 Definition (const std::string &definition)
 
std::string getBinName (size_t bin) const
 
const std::vector< Binning > & getBins () const
 
const std::vector< std::string > & getBinsName () const
 
TFormula const * getFormula () const
 
std::string getFormulaString () const
 
const std::vector< std::string > & getParametersName () const
 
std::string getVariableName (size_t variable) const
 
const std::vector< Binning > & getVariables () const
 
const std::vector< std::string > & getVariablesName () const
 
void init ()
 
size_t nBins () const
 
size_t nParameters () const
 
size_t nVariables () const
 

Private Attributes

 COND_SERIALIZABLE
 
std::shared_ptr< TFormula > m_formula COND_TRANSIENT
 
std::vector< Binning > m_bins COND_TRANSIENT
 
std::vector< Binning > m_variables COND_TRANSIENT
 
std::vector< std::string > m_parameters_name COND_TRANSIENT
 
std::vector< std::string > m_bins_name
 
std::string m_formula_str
 
std::vector< std::string > m_variables_name
 

Detailed Description

Definition at line 142 of file JetResolutionObject.h.

Constructor & Destructor Documentation

JME::JetResolutionObject::Definition::Definition ( )
inline

Definition at line 145 of file JetResolutionObject.h.

145  {
146  // Empty
147  }
JME::JetResolutionObject::Definition::Definition ( const std::string &  definition)

Definition at line 128 of file JetResolutionObject.cc.

References edm::errors::ConfigFileReadError, and JME::throwException().

128  {
129 
130  std::vector<std::string> tokens = getTokens(definition);
131 
132  // We need at least 3 tokens
133  if (tokens.size() < 3) {
134  throwException(edm::errors::ConfigFileReadError, "Definition line needs at least three tokens. Please check file format.");
135  }
136 
137  size_t n_bins = std::stoul(tokens[0]);
138 
139  if (tokens.size() < (n_bins + 2)) {
140  throwException(edm::errors::ConfigFileReadError, "Invalid file format. Please check.");
141  }
142 
143  for (size_t i = 0; i < n_bins; i++) {
144  m_bins_name.push_back(tokens[i + 1]);
145  }
146 
147  size_t n_variables = std::stoul(tokens[n_bins + 1]);
148 
149  if (tokens.size() < (1 + n_bins + 1 + n_variables + 1)) {
150  throwException(edm::errors::ConfigFileReadError, "Invalid file format. Please check.");
151  }
152 
153  for (size_t i = 0; i < n_variables; i++) {
154  m_variables_name.push_back(tokens[n_bins + 2 + i]);
155  }
156 
157  m_formula_str = tokens[n_bins + n_variables + 2];
158 
159  std::string formula_str_lower = m_formula_str;
160  std::transform(formula_str_lower.begin(), formula_str_lower.end(), formula_str_lower.begin(), ::tolower);
161 
162  if (formula_str_lower == "none") {
163  m_formula_str = "";
164 
165  if ((tokens.size() > n_bins + n_variables + 3) && (std::atoi(tokens[n_bins + n_variables + 3].c_str()))) {
166  size_t n_parameters = std::stoul(tokens[n_bins + n_variables + 3]);
167 
168  if (tokens.size() < (1 + n_bins + 1 + n_variables + 1 + 1 + n_parameters)) {
169  throwException(edm::errors::ConfigFileReadError, "Invalid file format. Please check.");
170  }
171 
172  for (size_t i = 0; i < n_parameters; i++) {
173  m_formula_str += tokens[n_bins + n_variables + 4 + i] + " ";
174  }
175  }
176  }
177 
178  init();
179  }
std::vector< std::string > m_variables_name
std::vector< std::string > m_bins_name
void throwException(uint32_t code, const std::string &message)

Member Function Documentation

std::string JME::JetResolutionObject::Definition::getBinName ( size_t  bin) const
inline

Definition at line 159 of file JetResolutionObject.h.

159  {
160  return m_bins_name[bin];
161  }
std::vector< std::string > m_bins_name
const std::vector<Binning>& JME::JetResolutionObject::Definition::getBins ( ) const
inline

Definition at line 155 of file JetResolutionObject.h.

155  {
156  return m_bins;
157  }
const std::vector<std::string>& JME::JetResolutionObject::Definition::getBinsName ( ) const
inline

Definition at line 151 of file JetResolutionObject.h.

151  {
152  return m_bins_name;
153  }
std::vector< std::string > m_bins_name
TFormula const* JME::JetResolutionObject::Definition::getFormula ( ) const
inline

Definition at line 191 of file JetResolutionObject.h.

191  {
192  return m_formula.get();
193  }
std::string JME::JetResolutionObject::Definition::getFormulaString ( ) const
inline

Definition at line 187 of file JetResolutionObject.h.

187  {
188  return m_formula_str;
189  }
const std::vector<std::string>& JME::JetResolutionObject::Definition::getParametersName ( ) const
inline

Definition at line 183 of file JetResolutionObject.h.

183 { return m_parameters_name; }
std::string JME::JetResolutionObject::Definition::getVariableName ( size_t  variable) const
inline

Definition at line 175 of file JetResolutionObject.h.

175  {
176  return m_variables_name[variable];
177  }
std::vector< std::string > m_variables_name
const std::vector<Binning>& JME::JetResolutionObject::Definition::getVariables ( ) const
inline

Definition at line 171 of file JetResolutionObject.h.

171  {
172  return m_variables;
173  }
const std::vector<std::string>& JME::JetResolutionObject::Definition::getVariablesName ( ) const
inline

Definition at line 167 of file JetResolutionObject.h.

167  {
168  return m_variables_name;
169  }
std::vector< std::string > m_variables_name
void JME::JetResolutionObject::Definition::init ( )

Definition at line 181 of file JetResolutionObject.cc.

References JME::throwException(), and edm::errors::UnimplementedFeature.

181  {
182  if (!m_formula_str.empty()) {
183  if (m_formula_str.find(' ') == std::string::npos)
184  m_formula = std::make_shared<TFormula>("jet_resolution_formula", m_formula_str.c_str());
185  else
186  m_parameters_name = getTokens(m_formula_str);
187  }
188  for (const auto& bin: m_bins_name) {
189  const auto& b = JetParameters::binning_to_string.right.find(bin);
190  if (b == JetParameters::binning_to_string.right.cend()) {
191  throwException(edm::errors::UnimplementedFeature, "Bin name not supported: '" + bin + "'");
192  }
193  m_bins.push_back(b->second);
194  }
195 
196  for (const auto& v: m_variables_name) {
197  const auto& var = JetParameters::binning_to_string.right.find(v);
198  if (var == JetParameters::binning_to_string.right.cend()) {
199  throwException(edm::errors::UnimplementedFeature, "Variable name not supported: '" + v + "'");
200  }
201  m_variables.push_back(var->second);
202  }
203  }
std::vector< std::string > m_variables_name
std::vector< std::string > m_bins_name
right_type right
void throwException(uint32_t code, const std::string &message)
static const bimap< Binning, std::string > binning_to_string
size_t JME::JetResolutionObject::Definition::nBins ( ) const
inline

Definition at line 163 of file JetResolutionObject.h.

Referenced by JME::JetResolutionObject::Record::Record().

163  {
164  return m_bins_name.size();
165  }
std::vector< std::string > m_bins_name
size_t JME::JetResolutionObject::Definition::nParameters ( ) const
inline

Definition at line 185 of file JetResolutionObject.h.

185 { return m_parameters_name.size(); }
size_t JME::JetResolutionObject::Definition::nVariables ( ) const
inline

Definition at line 179 of file JetResolutionObject.h.

Referenced by JME::JetResolutionObject::Record::Record().

179  {
180  return m_variables.size();
181  }

Member Data Documentation

JME::JetResolutionObject::Definition::COND_SERIALIZABLE
private

Definition at line 206 of file JetResolutionObject.h.

std::shared_ptr<TFormula> m_formula JME::JetResolutionObject::Definition::COND_TRANSIENT
private

Definition at line 201 of file JetResolutionObject.h.

std::vector<Binning> m_bins JME::JetResolutionObject::Definition::COND_TRANSIENT
private

Definition at line 202 of file JetResolutionObject.h.

std::vector<Binning> m_variables JME::JetResolutionObject::Definition::COND_TRANSIENT
private

Definition at line 203 of file JetResolutionObject.h.

std::vector<std::string> m_parameters_name JME::JetResolutionObject::Definition::COND_TRANSIENT
private

Definition at line 204 of file JetResolutionObject.h.

std::vector<std::string> JME::JetResolutionObject::Definition::m_bins_name
private

Definition at line 197 of file JetResolutionObject.h.

std::string JME::JetResolutionObject::Definition::m_formula_str
private

Definition at line 199 of file JetResolutionObject.h.

std::vector<std::string> JME::JetResolutionObject::Definition::m_variables_name
private

Definition at line 198 of file JetResolutionObject.h.


The documentation for this class was generated from the following files: