CMS 3D CMS Logo

HLTHcalNoiseFilter.cc
Go to the documentation of this file.
1 // Author: Alfredo Gurrola
2 //(20/11/08 make MET and JET logic independent /Grigory Safronov)
3 
6 
7 #include "HLTHcalNoiseFilter.h"
11 
13 {
14  JetSource_ = iConfig.getParameter<edm::InputTag>("JetSource");
15  MetSource_ = iConfig.getParameter<edm::InputTag>("MetSource");
16  TowerSource_ = iConfig.getParameter<edm::InputTag>("TowerSource");
17  useMet_ = iConfig.getParameter<bool>("UseMET");
18  useJet_ = iConfig.getParameter<bool>("UseJet");
19  MetCut_ = iConfig.getParameter<double>("MetCut");
20  JetMinE_ = iConfig.getParameter<double>("JetMinE");
21  JetHCALminEnergyFraction_ = iConfig.getParameter<double>("JetHCALminEnergyFraction");
22 
23  if (useMet_) {
24  MetSourceToken_ = consumes<reco::CaloMETCollection>(MetSource_);
25  }
26  if (useJet_) {
27  JetSourceToken_ = consumes<reco::CaloJetCollection>(JetSource_);
28  TowerSourceToken_ = consumes<CaloTowerCollection>(TowerSource_);
29  }
30 }
31 
33 
34 void
38  desc.add<edm::InputTag>("JetSource",edm::InputTag("iterativeCone5CaloJets"));
39  desc.add<edm::InputTag>("MetSource",edm::InputTag("met"));
40  desc.add<edm::InputTag>("TowerSource",edm::InputTag("towerMaker"));
41  desc.add<bool>("UseJet",true);
42  desc.add<bool>("UseMET",false);
43  desc.add<double>("MetCut",0.);
44  desc.add<double>("JetMinE",20.);
45  desc.add<double>("JetHCALminEnergyFraction",0.98);
46  descriptions.add("hltHcalNoiseFilter",desc);
47 }
48 
49 //
50 // member functions
51 //
52 
54 {
55  using namespace edm;
56  using namespace reco;
57 
58  bool isAnomalous_BasedOnMET = false;
59  bool isAnomalous_BasedOnEnergyFraction=false;
60 
61  if (useMet_)
62  {
64  iEvent.getByToken(MetSourceToken_, metHandle);
65  const CaloMETCollection *metCol = metHandle.product();
66  const CaloMET met = metCol->front();
67 
68  if(met.pt() > MetCut_) isAnomalous_BasedOnMET=true;
69  }
70 
71  if (useJet_)
72  {
73  Handle<CaloJetCollection> calojetHandle;
74  iEvent.getByToken(JetSourceToken_,calojetHandle);
75 
76  Handle<CaloTowerCollection> towerHandle;
77  iEvent.getByToken(TowerSourceToken_, towerHandle);
78 
79  std::vector<CaloTower> TowerContainer;
80  std::vector<CaloJet> JetContainer;
81  TowerContainer.clear();
82  JetContainer.clear();
83  CaloTower seedTower;
84  for(auto const & calojetIter : *calojetHandle) {
85  if( ((calojetIter.et())*cosh(calojetIter.eta()) > JetMinE_) and (calojetIter.energyFractionHadronic() > JetHCALminEnergyFraction_) ) {
86  JetContainer.push_back(calojetIter);
87  double maxTowerE = 0.0;
88  for(auto const & kal : *towerHandle) {
89  double dR = deltaR(calojetIter.eta(),calojetIter.phi(),kal.eta(),kal.phi());
90  if( (dR < 0.50) and (kal.p() > maxTowerE) ) {
91  maxTowerE = kal.p();
92  seedTower = kal;
93  }
94  }
95  TowerContainer.push_back(seedTower);
96  }
97 
98  }
99  if(!JetContainer.empty()) {
100  isAnomalous_BasedOnEnergyFraction = true;
101  }
102  }
103 
104  return ((useMet_ and isAnomalous_BasedOnMET) or (useJet_ and isAnomalous_BasedOnEnergyFraction));
105 }
106 
107 // declare this class as a framework plugin
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::CaloMETCollection > MetSourceToken_
edm::InputTag TowerSource_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
double pt() const final
transverse momentum
Collection of Calo MET.
edm::InputTag MetSource_
int iEvent
Definition: GenABIO.cc:224
#define DEFINE_FWK_MODULE(type)
Definition: MakerMacros.h:16
The Signals That Services Can Subscribe To This is based on ActivityRegistry and is current per Services can connect to the signals distributed by the ActivityRegistry in order to monitor the activity of the application Each possible callback has some defined which we here list in angle e< void, edm::EventID const &, edm::Timestamp const & > We also list in braces which AR_WATCH_USING_METHOD_ is used for those or
Definition: Activities.doc:12
edm::EDGetTokenT< reco::CaloJetCollection > JetSourceToken_
ParameterDescriptionBase * add(U const &iLabel, T const &value)
bool hltFilter(edm::Event &, const edm::EventSetup &, trigger::TriggerFilterObjectWithRefs &filterproduct) const override
edm::EDGetTokenT< CaloTowerCollection > TowerSourceToken_
static void makeHLTFilterDescription(edm::ParameterSetDescription &desc)
Definition: HLTFilter.cc:29
T const * product() const
Definition: Handle.h:74
met
===> hadronic RAZOR
HLTHcalNoiseFilter(const edm::ParameterSet &)
~HLTHcalNoiseFilter() override
void add(std::string const &label, ParameterSetDescription const &psetDescription)
edm::InputTag JetSource_
fixed size matrix
HLT enums.
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)