CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ExpressionQuaterOperator.h
Go to the documentation of this file.
1 #ifndef CommonTools_Utils_ExpressionQuaterOperator_h
2 #define CommonTools_Utils_ExpressionQuaterOperator_h
3 /* \class reco::parser::ExpressionQuaterOperator
4  *
5  * Quater Operator expression
6  *
7  * \author original version: Chris Jones, Cornell,
8  * adapted to Reflex by Luca Lista, INFN
9  *
10  * \version $Revision: 1.1 $
11  *
12  */
15 
16 namespace reco {
17  namespace parser {
18  template<typename Op>
20  virtual double value(const Reflex::Object& o) const {
21  return op_(args_[0]->value(o), args_[1]->value(o), args_[2]->value(o), args_[3]->value(o));
22  }
24  args_[3] = expStack.back(); expStack.pop_back();
25  args_[2] = expStack.back(); expStack.pop_back();
26  args_[1] = expStack.back(); expStack.pop_back();
27  args_[0] = expStack.back(); expStack.pop_back();
28  }
29  private:
30  Op op_;
32  };
33  }
34 }
35 
36 #endif
ExpressionQuaterOperator(ExpressionStack &expStack)
boost::shared_ptr< ExpressionBase > ExpressionPtr
std::vector< boost::shared_ptr< ExpressionBase > > ExpressionStack
virtual double value(const Reflex::Object &o) const