DQWorkerClient

ProcessType

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 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70
#ifndef DQWorkerClient_H
#define DQWorkerClient_H

#include <utility>

#include "DQM/EcalCommon/interface/DQWorker.h"
#include "FWCore/Framework/interface/ConsumesCollector.h"

class DetId;
namespace edm {
  class ConsumesCollector;
}  // namespace edm

namespace ecaldqm {
  class StatusManager;

  class DQWorkerClient : public DQWorker {
  public:
    enum ProcessType { kLumi, kJob, nProcessType };

    DQWorkerClient();
    ~DQWorkerClient() override {}

    static void fillDescriptions(edm::ParameterSetDescription&);

    void endLuminosityBlock(edm::LuminosityBlock const&, edm::EventSetup const&) override;
    void resetPerLumi();

    void bookMEs(DQMStore::IBooker&) override;
    void releaseMEs() override;

    void releaseSource();
    bool retrieveSource(DQMStore::IGetter&, ProcessType);

    bool runsOn(ProcessType _type) const { return _type == kJob || hasLumiPlots_; }
    virtual void resetMEs();
    virtual void producePlots(ProcessType) = 0;

    // mechanisms to register EDGetTokens for any additional objects used internally
    virtual void setTokens(edm::ConsumesCollector&) {}

    void setStatusManager(StatusManager const& _manager) { statusManager_ = &_manager; }

    static constexpr int kBad = 0, kGood = 1, kUnknown = 2, kMBad = 3, kMGood = 4, kMUnknown = 5;

  protected:
    void setME(edm::ParameterSet const& _ps) final;
    void setSource(edm::ParameterSet const&) override;

    bool using_(std::string const& _name, ProcessType _type = kJob) const {
      MESetCollection::const_iterator itr(sources_.find(_name));
      if (itr == sources_.end())
        return false;
      if (_type == kJob)
        return true;
      else
        return itr->second->getLumiFlag();
    }

    void towerAverage_(MESet&, MESet const&, float);

    MESetCollection sources_;
    std::set<std::string> qualitySummaries_;

    bool hasLumiPlots_;

    StatusManager const* statusManager_;
  };
}  // namespace ecaldqm
#endif