MonElemWithCutEBEE

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
#ifndef DQMOFFLINE_TRIGGER_EGHLTMONELEMWITHCUTEBEE
#define DQMOFFLINE_TRIGGER_EGHLTMONELEMWITHCUTEBEE

//struct: MonElemWithEBEE (Monitor Element Manger With Cut Barrel and Endcap)
//
//author: Sam Harper (July 2008)
//
//WARNING: interface is NOT final, please dont use this class for now without clearing it with me
//         as I will change it and possibly break all your code
//
//aim:  a monitor element which seperates transparently the objects into barrel and endcap
//
//implimentation: class simply has two MonElemWithCuts, one for endcap electrons, one for barrel electrons
//                and fills them approprately. It assumes that the class passed in has a detEta function
//                and uses 1.5 as the barrel,endcap descriminate
//
//

#include <cmath>

#include "DQMOffline/Trigger/interface/EgHLTMonElemWithCut.h"

namespace egHLT {
  template <class T, typename varType>
  class MonElemWithCutEBEE : public MonElemWithCutBase<T> {
  private:
    MonElemWithCut<T, varType> barrel_;
    MonElemWithCut<T, varType> endcap_;

  public:
    MonElemWithCutEBEE(DQMStore::IBooker& iBooker,
                       const std::string& name,
                       const std::string& title,
                       int nrBins,
                       float min,
                       float max,
                       varType (T::*varFunc)() const)
        : barrel_(iBooker, name + "_eb", "Barrel " + title, nrBins, min, max, varFunc, nullptr),
          endcap_(iBooker, name + "_ee", "Endcap " + title, nrBins, min, max, varFunc, nullptr) {}

    MonElemWithCutEBEE(DQMStore::IBooker& iBooker,
                       const std::string& name,
                       const std::string& title,
                       int nrBins,
                       float min,
                       float max,
                       varType (T::*varFunc)() const,
                       const EgHLTDQMCut<T>* cut)
        : barrel_(iBooker, name + "_eb", "Barrel " + title, nrBins, min, max, varFunc, cut),
          endcap_(iBooker, name + "_ee", "Endcap " + title, nrBins, min, max, varFunc, cut ? cut->clone() : nullptr) {}
    ~MonElemWithCutEBEE() override = default;

    void fill(const T& obj, const OffEvt& evt, float weight) override;
  };
}  // namespace egHLT

template <class T, typename varType>
void egHLT::MonElemWithCutEBEE<T, varType>::fill(const T& obj, const OffEvt& evt, float weight) {
  if (std::fabs(obj.detEta()) < 1.5)
    barrel_.fill(obj, evt, weight);
  else
    endcap_.fill(obj, evt, weight);
}

#endif