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
#include "DQMOffline/Trigger/interface/FunctionDefs.h"

template <>
std::function<float(const reco::GsfElectron&)> hltdqm::getUnaryFuncExtraFloat<reco::GsfElectron>(
    const std::string& varName) {
  std::function<float(const reco::GsfElectron&)> varFunc;
  if (varName == "scEta")
    varFunc = scEtaFunc<reco::GsfElectron>;
  else if (varName == "hOverE")
    varFunc = [](const reco::GsfElectron& ele) -> float { return ele.hcalOverEcal(); };
  return varFunc;
}

template <>
std::function<float(const reco::Photon&)> hltdqm::getUnaryFuncExtraFloat<reco::Photon>(const std::string& varName) {
  std::function<float(const reco::Photon&)> varFunc;
  if (varName == "scEta")
    varFunc = scEtaFunc<reco::Photon>;
  else if (varName == "hOverE")
    varFunc = [](const reco::Photon& pho) -> float { return pho.hadTowOverEm(); };
  return varFunc;
}

template <>
std::function<float(const HLTGenValObject&)> hltdqm::getUnaryFuncExtraFloat<HLTGenValObject>(
    const std::string& varName) {
  std::function<float(const HLTGenValObject&)> varFunc;

  if (varName == "ptRes")
    varFunc = &HLTGenValObject::ptRes;
  else if (varName == "etaRes")
    varFunc = &HLTGenValObject::etaRes;
  else if (varName == "phiRes")
    varFunc = &HLTGenValObject::phiRes;
  else if (varName == "massRes")
    varFunc = &HLTGenValObject::massRes;
  return varFunc;
}