Evaluator

Macros

Line Code
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54
#ifndef HLTrigger_HLTcore_TriggerExpressionEvaluator_h
#define HLTrigger_HLTcore_TriggerExpressionEvaluator_h

#include <iostream>
#include <string>
#include <vector>
#include <utility>

namespace triggerExpression {

  class Data;

  class Evaluator {
  public:
    Evaluator() = default;

    // virtual destructor
    virtual ~Evaluator() = default;

    // check if the data satisfies the logical expression
    virtual bool operator()(const Data& data) const = 0;

    // (re)initialise the logical expression
    virtual void init(const Data& data) {}

    // list CMSSW path patterns associated to the logical expression
    virtual std::vector<std::string> patterns() const { return {}; }

    // list of triggers associated to the Evaluator (filled only for certain derived classes)
    virtual std::vector<std::pair<std::string, unsigned int>> triggers() const { return {}; }

    // dump the logical expression to the output stream
    virtual void dump(std::ostream& out, bool const ignoreMasks = false) const = 0;

    // apply masks based on another Evaluator
    virtual void mask(Evaluator const&) {}

    // methods to control m_masksEnabled boolean
    virtual bool masksEnabled() const { return m_masksEnabled; }
    virtual void enableMasks() { m_masksEnabled = true; }
    virtual void disableMasks() { m_masksEnabled = false; }

  private:
    bool m_masksEnabled = false;
  };

  inline std::ostream& operator<<(std::ostream& out, const Evaluator& eval) {
    eval.dump(out);
    return out;
  }

}  // namespace triggerExpression

#endif  // HLTrigger_HLTcore_TriggerExpressionEvaluator_h