CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
List of all members | Public Member Functions | Private Member Functions | Private Attributes
reco::FormulaEvaluator Class Reference

#include <FormulaEvaluator.h>

Public Member Functions

template<typename V , typename P >
double evaluate (V const &iVariables, P const &iParameters) const
 
 FormulaEvaluator (std::string const &iFormula)
 

Private Member Functions

double evaluate (double const *iVariables, double const *iParameters) const
 
void throwWrongNumberOfParameters (size_t) const
 
void throwWrongNumberOfVariables (size_t) const
 

Private Attributes

std::shared_ptr
< formula::EvaluatorBase const > 
m_evaluator
 
unsigned int m_nParameters = 0
 
unsigned int m_nVariables = 0
 

Detailed Description

Definition at line 49 of file FormulaEvaluator.h.

Constructor & Destructor Documentation

FormulaEvaluator::FormulaEvaluator ( std::string const &  iFormula)
explicit

Definition at line 562 of file FormulaEvaluator.cc.

References Exception, m_evaluator, m_nParameters, m_nVariables, eostools::move(), or, and AlCaHLTBitMon_QueryRunRegistry::string.

563 {
564  auto info = s_expressionFinder.createEvaluator(iFormula.begin(), iFormula.end());
565 
566  if(info.nextParseIndex != static_cast<int>(iFormula.size()) or info.evaluator.get() == nullptr) {
567  throw cms::Exception("FormulaEvaluatorParseError")<<"While parsing '"<<iFormula<<"' could not parse beyond '"<<std::string(iFormula.begin(),iFormula.begin()+info.nextParseIndex) <<"'";
568  }
569  m_evaluator = std::move(info.evaluator);
570  m_nVariables = info.maxNumVariables;
571  m_nParameters = info.maxNumParameters;
572 }
static const TGPicture * info(bool iBackgroundIsBlack)
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventIDconst &, edm::Timestampconst & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
def move
Definition: eostools.py:508
std::shared_ptr< formula::EvaluatorBase const > m_evaluator

Member Function Documentation

template<typename V , typename P >
double reco::FormulaEvaluator::evaluate ( V const &  iVariables,
P const &  iParameters 
) const
inline

Definition at line 56 of file FormulaEvaluator.h.

References m_nParameters, m_nVariables, reco::formula::startingAddress(), throwWrongNumberOfParameters(), and throwWrongNumberOfVariables().

56  {
57  if (m_nVariables > iVariables.size()) {
58  throwWrongNumberOfVariables(iVariables.size());
59  }
60  if (m_nParameters > iParameters.size()) {
61  throwWrongNumberOfParameters(iParameters.size());
62  }
63  return evaluate( formula::startingAddress(iVariables),
64  formula::startingAddress(iParameters));
65  }
double const * startingAddress(std::vector< double > const &iV)
double evaluate(V const &iVariables, P const &iParameters) const
void throwWrongNumberOfParameters(size_t) const
void throwWrongNumberOfVariables(size_t) const
double FormulaEvaluator::evaluate ( double const *  iVariables,
double const *  iParameters 
) const
private

Definition at line 578 of file FormulaEvaluator.cc.

References m_evaluator.

579 {
580  return m_evaluator->evaluate(iVariables, iParameters);
581 }
std::shared_ptr< formula::EvaluatorBase const > m_evaluator
void FormulaEvaluator::throwWrongNumberOfParameters ( size_t  iSize) const
private

Definition at line 588 of file FormulaEvaluator.cc.

References Exception, and m_nParameters.

Referenced by evaluate().

588  {
589  throw cms::Exception("WrongNumParameters")<<"FormulaEvaluator expected at least "<<m_nParameters<<" but was passed only "<<iSize;
590 }
void FormulaEvaluator::throwWrongNumberOfVariables ( size_t  iSize) const
private

Definition at line 584 of file FormulaEvaluator.cc.

References Exception, and m_nVariables.

Referenced by evaluate().

584  {
585  throw cms::Exception("WrongNumVariables")<<"FormulaEvaluator expected at least "<<m_nVariables<<" but was passed only "<<iSize;
586 }

Member Data Documentation

std::shared_ptr<formula::EvaluatorBase const> reco::FormulaEvaluator::m_evaluator
private

Definition at line 74 of file FormulaEvaluator.h.

Referenced by evaluate(), and FormulaEvaluator().

unsigned int reco::FormulaEvaluator::m_nParameters = 0
private

Definition at line 76 of file FormulaEvaluator.h.

Referenced by evaluate(), FormulaEvaluator(), and throwWrongNumberOfParameters().

unsigned int reco::FormulaEvaluator::m_nVariables = 0
private

Definition at line 75 of file FormulaEvaluator.h.

Referenced by evaluate(), FormulaEvaluator(), and throwWrongNumberOfVariables().