CMS 3D CMS Logo

HLTMultipletFilter.cc
Go to the documentation of this file.
1 #include "HLTMultipletFilter.h"
2 
5 
8 
12 
13 #include <cmath>
14 
16 
17  hltEGammaSeedLabel_= iConfig.getParameter<edm::InputTag>("L1EGammaInputTag");
18  hltEtSumSeedLabel_ = iConfig.getParameter<edm::InputTag>("L1EtSumInputTag");
19  hltJetSeedLabel_ = iConfig.getParameter<edm::InputTag>("L1JetInputTag");
20  hltMuonSeedLabel_ = iConfig.getParameter<edm::InputTag>("L1MuonInputTag");
21  hltTauSeedLabel_ = iConfig.getParameter<edm::InputTag>("L1TauInputTag");
22  minN_ = iConfig.getParameter<int> ("MinN");
23  ibxMin_ = iConfig.getParameter<int> ("IBxMin");
24  ibxMax_ = iConfig.getParameter<int> ("IBxMax");
25  minEta_ = iConfig.getParameter<double> ("MinEta");
26  maxEta_ = iConfig.getParameter<double> ("MaxEta");
27  minPhi_ = iConfig.getParameter<double> ("MinPhi");
28  maxPhi_ = iConfig.getParameter<double> ("MaxPhi");
29  minPt_ = iConfig.getParameter<double> ("MinPt");
30 
32  flag_[EGamma] = false;
33  } else {
34  flag_[EGamma] = true;
35  hltEGammaToken_ = consumes<l1t::EGammaBxCollection>(hltEGammaSeedLabel_);
36  }
37  if (hltEtSumSeedLabel_ == edm::InputTag()) {
38  flag_[EtSum] = false;
39  } else {
40  flag_[EtSum] = true;
41  hltEtSumToken_ = consumes<l1t::EtSumBxCollection>(hltEtSumSeedLabel_);
42  }
43  if (hltJetSeedLabel_ == edm::InputTag()) {
44  flag_[Jet] = false;
45  } else {
46  flag_[Jet] = true;
47  hltJetToken_ = consumes<l1t::JetBxCollection>(hltJetSeedLabel_);
48  }
49  if (hltMuonSeedLabel_ == edm::InputTag()) {
50  flag_[Muon] = false;
51  } else {
52  flag_[Muon] = true;
53  hltMuonToken_ = consumes<l1t::MuonBxCollection>(hltMuonSeedLabel_);
54  }
55  if (hltTauSeedLabel_ == edm::InputTag()) {
56  flag_[Tau] = false;
57  } else {
58  flag_[Tau] = true;
59  hltTauToken_ = consumes<l1t::TauBxCollection>(hltTauSeedLabel_);
60  }
61  edm::LogVerbatim("Report") << "Input Parameters:: minN = " << minN_
62  << " Bx Range = " << ibxMin_ << ":" << ibxMax_
63  << " minPt = " << minPt_ << " Eta " << minEta_
64  << ":" << maxEta_ << " Phi " << minPhi_ << ":"
65  << maxPhi_ << " GT Seed for EGamma "
66  << hltEGammaSeedLabel_ << ", EtSum "
67  << hltEtSumSeedLabel_ << ", Jet "
68  << hltJetSeedLabel_ << ", Muon "
69  << hltMuonSeedLabel_ << ", and Tau "
70  << hltTauSeedLabel_ << std::endl;
71 }
72 
74 
75 void
79  desc.add<edm::InputTag>("L1EGammaInputTag",edm::InputTag());
80  desc.add<edm::InputTag>("L1EtSumInputTag",edm::InputTag());
81  desc.add<edm::InputTag>("L1JetInputTag",edm::InputTag("hltCaloStage2Digis:Jet"));
82  desc.add<edm::InputTag>("L1MuonInputTag",edm::InputTag());
83  desc.add<edm::InputTag>("L1TauInputTag",edm::InputTag("hltCaloStage2Digis:Tau"));
84  desc.add<int>("MinN",1);
85  desc.add<int>("IBxMin",0);
86  desc.add<int>("IBxMax",0);
87  desc.add<double>("MinEta",1.305);
88  desc.add<double>("MaxEta",3.000);
89  desc.add<double>("MinPhi",5.4105);
90  desc.add<double>("MaxPhi",5.5796);
91  desc.add<double>("MinPt", 20.0);
92  descriptions.add("hltMultipletFilter",desc);
93 }
94 
96 
97  // the filter object
98  if (saveTags()) {
99  if (flag_[EGamma]) filterproduct.addCollectionTag(hltEGammaSeedLabel_);
100  if (flag_[EtSum]) filterproduct.addCollectionTag(hltEtSumSeedLabel_);
101  if (flag_[Jet]) filterproduct.addCollectionTag(hltJetSeedLabel_);
102  if (flag_[Muon]) filterproduct.addCollectionTag(hltMuonSeedLabel_);
103  if (flag_[Tau]) filterproduct.addCollectionTag(hltTauSeedLabel_);
104  }
105 
106  int nobj(0);
107 
108  if (flag_[EGamma]) {
109  nobj += objects(iEvent,hltEGammaToken_,hltEGammaSeedLabel_,EGamma);
110  if (nobj >= minN_) return true;
111  }
112  if (flag_[EtSum]) {
113  nobj += objects(iEvent,hltEtSumToken_,hltEtSumSeedLabel_,EtSum);
114  if (nobj >= minN_) return true;
115  }
116  if (flag_[Jet]) {
117  nobj += objects(iEvent,hltJetToken_,hltJetSeedLabel_,Jet);
118  if (nobj >= minN_) return true;
119  }
120  if (flag_[Muon]) {
121  nobj += objects(iEvent,hltMuonToken_,hltMuonSeedLabel_,Muon);
122  if (nobj >= minN_) return true;
123  }
124  if (flag_[Tau]) {
125  nobj += objects(iEvent,hltTauToken_,hltTauSeedLabel_,Tau);
126  if (nobj >= minN_) return true;
127  }
128  return false;
129 }
130 
131 template<typename T1>
133  edm::EDGetTokenT<T1> const& hltToken,
134  edm::InputTag const& hltSeedLabel,
136  int nobj(0);
137  edm::Handle<T1> objs;
138  iEvent.getByToken(hltToken, objs);
139  if (!objs.isValid()) {
140  edm::LogWarning("Report") << "Collection with input tag " << hltSeedLabel
141  << " requested, but not found in the event.";
142  } else {
143  edm::LogVerbatim("Report") << "Collection for type " << type
144  << " has " << objs->size() << " in "
145  << ibxMin_ << ":" << ibxMax_ << " BX's";
146  for (int ibx=ibxMin_; ibx<=ibxMax_; ++ibx) {
147  for (auto p = objs->begin(ibx); p != objs->end(ibx); ++p) {
148  if (p->pt() > minPt_) {
149  if (p->eta() > minEta_ && p->eta() < maxEta_) {
150  double phi = p->phi();
151  if (phi < 0) phi += 2*M_PI;
152  if (phi > minPhi_ && phi < maxPhi_) ++nobj;
153  }
154  }
155  }
156  }
157  }
158  return nobj;
159 }
160 
161 // declare this class as a framework plugin
HLTMultipletFilter(const edm::ParameterSet &)
type
Definition: HCALResponse.h:21
T getParameter(std::string const &) const
~HLTMultipletFilter() override
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
edm::EDGetTokenT< l1t::EtSumBxCollection > hltEtSumToken_
edm::EDGetTokenT< l1t::JetBxCollection > hltJetToken_
edm::EDGetTokenT< l1t::MuonBxCollection > hltMuonToken_
edm::InputTag hltMuonSeedLabel_
edm::InputTag hltEGammaSeedLabel_
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
Definition: Muon.py:1
Definition: Jet.py:1
edm::EDGetTokenT< l1t::TauBxCollection > hltTauToken_
edm::EDGetTokenT< l1t::EGammaBxCollection > hltEGammaToken_
edm::InputTag hltJetSeedLabel_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool isValid() const
Definition: HandleBase.h:74
int objects(edm::Event &, edm::EDGetTokenT< T1 > const &, edm::InputTag const &, HLTMultipletFilter::Types) const
#define M_PI
Definition: Tau.py:1
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
void addCollectionTag(const edm::InputTag &collectionTag)
collectionTags
void add(std::string const &label, ParameterSetDescription const &psetDescription)
bool saveTags() const
Definition: HLTFilter.h:45
edm::InputTag hltEtSumSeedLabel_
edm::InputTag hltTauSeedLabel_