/
githubmirror
/
cmssw
Обзор
Документация
Войти
/
githubmirror
/
cmssw
Код
Запросы
0
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
PhysicsTools/SelectorUtils/plugins/EtaMultiRangeCut.cc
35 строк
1 KB
Cms Build
Clang-Format
05 июн 2019, 13:58
05 июн 2019, 13:58
4bb99cd
Код
Авторство
О чём код?
#include "PhysicsTools/SelectorUtils/interface/CutApplicatorBase.h" class EtaMultiRangeCut : public CutApplicatorBase { public: EtaMultiRangeCut(const edm::ParameterSet& c) : CutApplicatorBase(c), _absEta(c.getParameter<bool>("useAbsEta")) { const std::vector<edm::ParameterSet>& ranges = c.getParameterSetVector("allowedEtaRanges"); for (const auto& range : ranges) { const double min = range.getParameter<double>("minEta"); const double max = range.getParameter<double>("maxEta"); _ranges.emplace_back(min, max); } } double value(const reco::CandidatePtr& cand) const final { return (_absEta ? std::abs(cand->eta()) : cand->eta()); } result_type asCandidate(const argument_type&) const final; private: const bool _absEta; std::vector<std::pair<double, double> > _ranges; }; DEFINE_EDM_PLUGIN(CutApplicatorFactory, EtaMultiRangeCut, "EtaMultiRangeCut"); CutApplicatorBase::result_type EtaMultiRangeCut::asCandidate(const argument_type& cand) const { const double the_eta = (_absEta ? std::abs(cand->eta()) : cand->eta()); bool result = false; for (const auto& range : _ranges) { if (the_eta >= range.first && the_eta < range.second) { result = true; break; } } return result; }