CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
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:
14  const reco::PFTauRef& tau) const {
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  reco::PFCandidateRefVector 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  reco::PFCandidateRefVector 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  reco::PFCandidateRefVector operator()(const reco::PFTauRef& tau) const {
50  result = mask_.mask(*tau);
51  output.reserve(result.gammas.size());
52  BOOST_FOREACH(const reco::PFCandidateRef 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  reco::PFCandidateRefVector 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  reco::PFCandidateRefVector operator()(const reco::PFTauRef& tau) const {
76  result = mask_.mask(*tau);
77  output.reserve(result.h0s.size());
78  BOOST_FOREACH(const reco::PFCandidateRef 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");
reco::PFCandidateRefVector extractIsoObjects(const reco::PFTauRef &tau) const
tuple result
Definition: query.py:137
void reserve(size_type n)
Reserve space for RefVector.
Definition: RefVector.h:95
void push_back(value_type const &ref)
Add a Ref&lt;C, T&gt; to the RefVector.
Definition: RefVector.h:64
#define DEFINE_EDM_PLUGIN(factory, type, name)