CMS 3D CMS Logo

RecoTauIsolationDiscriminantPlugins.cc
Go to the documentation of this file.
1 #include <boost/foreach.hpp>
4 
5 namespace reco { namespace tau {
6 
7 template<class Extractor>
10  public:
13  std::vector<reco::PFCandidatePtr> extractIsoObjects(
14  const reco::PFTauRef& tau) const override {
15  return extractor_(tau);
16  }
17  private:
18  Extractor extractor_;
19 };
20 
21 }} // end namespace reco::tau
22 
23 
24 // Methods to get the right kind of canddiates
25 namespace {
26 
27 class TrackExtractor {
28  public:
29  TrackExtractor(const edm::ParameterSet& pset){};
30  std::vector<reco::PFCandidatePtr> operator()(const reco::PFTauRef& tau) const {
31  return tau->isolationPFChargedHadrCands();
32  }
33 };
34 
35 class ECALExtractor {
36  public:
37  ECALExtractor(const edm::ParameterSet& pset){};
38  std::vector<reco::PFCandidatePtr> operator()(const reco::PFTauRef& tau) const {
39  return tau->isolationPFGammaCands();
40  }
41 };
42 
43 class MaskedECALExtractor {
44  public:
45  MaskedECALExtractor(const edm::ParameterSet& pset)
46  :mask_(pset.getParameter<edm::ParameterSet>("mask")){};
47  std::vector<reco::PFCandidatePtr> operator()(const reco::PFTauRef& tau) const {
48  std::vector<reco::PFCandidatePtr> output;
50  result = mask_.mask(*tau);
51  output.reserve(result.gammas.size());
52  BOOST_FOREACH(const reco::PFCandidatePtr gamma, result.gammas) {
53  output.push_back(gamma);
54  }
55  return output;
56  }
57  private:
59 };
60 
61 class HCALExtractor {
62  public:
63  HCALExtractor(const edm::ParameterSet& pset){};
64  std::vector<reco::PFCandidatePtr> operator()(const reco::PFTauRef& tau) const {
65  return tau->isolationPFNeutrHadrCands();
66  }
67 };
68 
69 class MaskedHCALExtractor {
70  public:
71  MaskedHCALExtractor(const edm::ParameterSet& pset)
72  :mask_(pset.getParameter<edm::ParameterSet>("mask")){};
73  std::vector<reco::PFCandidatePtr> operator()(const reco::PFTauRef& tau) const {
74  std::vector<reco::PFCandidatePtr> output;
76  result = mask_.mask(*tau);
77  output.reserve(result.h0s.size());
78  BOOST_FOREACH(const reco::PFCandidatePtr h0, result.h0s) {
79  output.push_back(h0);
80  }
81  return output;
82  }
83  private:
85 };
86 }
87 
91  "RecoTauDiscriminationBinnedTrackIsolation");
94  "RecoTauDiscriminationBinnedECALIsolation");
97  "RecoTauDiscriminationBinnedMaskedECALIsolation");
100  "RecoTauDiscriminationBinnedHCALIsolation");
103  "RecoTauDiscriminationBinnedMaskedHCALIsolation");
T getParameter(std::string const &) const
std::vector< double > operator()(const reco::PFTauRef &tau) const
fixed size matrix
std::vector< reco::PFCandidatePtr > extractIsoObjects(const reco::PFTauRef &tau) const override
#define DEFINE_EDM_PLUGIN(factory, type, name)