CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
formulaEvaluatorBase.h
Go to the documentation of this file.
1 #ifndef CommonTools_Utils_formulaEvaluatorBase_h
2 #define CommonTools_Utils_formulaEvaluatorBase_h
3 // -*- C++ -*-
4 //
5 // Package: CommonTools/Utils
6 // Class : reco::formula::EvaluatorBase
7 //
18 //
19 // Original Author: Christopher Jones
20 // Created: Wed, 23 Sep 2015 16:26:00 GMT
21 //
22 
23 // system include files
24 
25 // user include files
26 
27 // forward declarations
28 
29 namespace reco {
30  namespace formula {
32  {
33 
34  public:
35  enum class Precidence {
36  kPlusMinus = 1,
37  kMultDiv = 2,
38  kPower = 3,
39  kFunction = 4, //default
40  kParenthesis = 5,
42  };
43 
44  EvaluatorBase();
46  virtual ~EvaluatorBase();
47 
48  // ---------- const member functions ---------------------
49  //inputs are considered to be 'arrays' which have already been validated to
50  // be of the appropriate length
51  virtual double evaluate(double const* iVariables, double const* iParameters) const = 0;
52 
53  unsigned int precidence() const { return m_precidence; }
54  void setPrecidenceToParenthesis() { m_precidence = static_cast<unsigned int>(Precidence::kParenthesis); }
55 
56  private:
57  EvaluatorBase(const EvaluatorBase&) = delete;
58 
59  const EvaluatorBase& operator=(const EvaluatorBase&) = delete;
60 
61  // ---------- member data --------------------------------
62  unsigned int m_precidence;
63  };
64  }
65 }
66 
67 
68 #endif
virtual double evaluate(double const *iVariables, double const *iParameters) const =0
const EvaluatorBase & operator=(const EvaluatorBase &)=delete
unsigned int precidence() const