File indexing completed on 2024-04-06 12:01:19
0001 #ifndef CommonTools_Utils_ExpressionCondition_h
0002 #define CommonTools_Utils_ExpressionCondition_h
0003
0004
0005
0006
0007
0008
0009
0010
0011
0012
0013 #include "CommonTools/Utils/interface/parser/ExpressionBase.h"
0014 #include "CommonTools/Utils/interface/parser/SelectorBase.h"
0015 #include "CommonTools/Utils/interface/parser/SelectorStack.h"
0016 #include "CommonTools/Utils/interface/parser/ExpressionStack.h"
0017
0018 namespace reco {
0019 namespace parser {
0020 struct ExpressionCondition : public ExpressionBase {
0021 double value(const edm::ObjectWithDict& o) const override {
0022 return (*cond_)(o) ? true_->value(o) : false_->value(o);
0023 }
0024 ExpressionCondition(ExpressionStack& expStack, SelectorStack& selStack) {
0025 false_ = expStack.back();
0026 expStack.pop_back();
0027 true_ = expStack.back();
0028 expStack.pop_back();
0029 cond_ = selStack.back();
0030 selStack.pop_back();
0031 }
0032
0033 private:
0034 ExpressionPtr true_, false_;
0035 SelectorPtr cond_;
0036 };
0037 }
0038 }
0039
0040 #endif