CMS 3D CMS Logo

List of all members | Public Member Functions | Static Public Member Functions | Private Attributes
HLTMETCleanerUsingJetID Class Reference

This creates a MET object from the difference in MET between two input jet collections. More...

#include <HLTMETCleanerUsingJetID.h>

Inheritance diagram for HLTMETCleanerUsingJetID:
edm::stream::EDProducer<>

Public Member Functions

 HLTMETCleanerUsingJetID (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~HLTMETCleanerUsingJetID () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
 EDProducer (const EDProducer &)=delete
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginProcessBlocks () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndProcessBlocks () const final
 
bool hasAbilityToProduceInEndRuns () const final
 
const EDProduceroperator= (const EDProducer &)=delete
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

edm::InputTag goodJetsLabel_
 Input tag for the 'good jets' collection. More...
 
edm::InputTag jetsLabel_
 Input tag for the 'all jets' collection. More...
 
edm::EDGetTokenT< reco::CaloJetCollectionm_theGoodJetToken
 
edm::EDGetTokenT< reco::CaloJetCollectionm_theJetToken
 
edm::EDGetTokenT< reco::CaloMETCollectionm_theMETToken
 
double maxEta_
 Maximum (abs) eta requirement for jets. More...
 
edm::InputTag metLabel_
 Input tag for the MET collection. More...
 
double minPt_
 Minimum pt requirement for jets. More...
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
using CacheTypes = CacheContexts< T... >
 
using GlobalCache = typename CacheTypes::GlobalCache
 
using HasAbility = AbilityChecker< T... >
 
using InputProcessBlockCache = typename CacheTypes::InputProcessBlockCache
 
using LuminosityBlockCache = typename CacheTypes::LuminosityBlockCache
 
using LuminosityBlockContext = LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCache >
 
using LuminosityBlockSummaryCache = typename CacheTypes::LuminosityBlockSummaryCache
 
using RunCache = typename CacheTypes::RunCache
 
using RunContext = RunContextT< RunCache, GlobalCache >
 
using RunSummaryCache = typename CacheTypes::RunSummaryCache
 

Detailed Description

This creates a MET object from the difference in MET between two input jet collections.

Author
Jia Fu Low (Nov 2013)

This code creates a new MET vector defined as:

output MET = input MET + MET from 'good jets' - MET from 'all jets'

See header file for more information.

Author
a Jet/MET person

Definition at line 32 of file HLTMETCleanerUsingJetID.h.

Constructor & Destructor Documentation

◆ HLTMETCleanerUsingJetID()

HLTMETCleanerUsingJetID::HLTMETCleanerUsingJetID ( const edm::ParameterSet iConfig)
explicit

Definition at line 13 of file HLTMETCleanerUsingJetID.cc.

References goodJetsLabel_, jetsLabel_, m_theGoodJetToken, m_theJetToken, m_theMETToken, and metLabel_.

14  : minPt_(iConfig.getParameter<double>("minPt")),
15  maxEta_(iConfig.getParameter<double>("maxEta")),
16  metLabel_(iConfig.getParameter<edm::InputTag>("metLabel")),
17  jetsLabel_(iConfig.getParameter<edm::InputTag>("jetsLabel")),
18  goodJetsLabel_(iConfig.getParameter<edm::InputTag>("goodJetsLabel")) {
19  m_theMETToken = consumes<reco::CaloMETCollection>(metLabel_);
20  m_theJetToken = consumes<reco::CaloJetCollection>(jetsLabel_);
21  m_theGoodJetToken = consumes<reco::CaloJetCollection>(goodJetsLabel_);
22 
23  // Register the products
24  produces<reco::CaloMETCollection>();
25 }
edm::InputTag jetsLabel_
Input tag for the &#39;all jets&#39; collection.
edm::InputTag goodJetsLabel_
Input tag for the &#39;good jets&#39; collection.
T getParameter(std::string const &) const
Definition: ParameterSet.h:307
double maxEta_
Maximum (abs) eta requirement for jets.
edm::EDGetTokenT< reco::CaloMETCollection > m_theMETToken
edm::InputTag metLabel_
Input tag for the MET collection.
edm::EDGetTokenT< reco::CaloJetCollection > m_theGoodJetToken
double minPt_
Minimum pt requirement for jets.
edm::EDGetTokenT< reco::CaloJetCollection > m_theJetToken

◆ ~HLTMETCleanerUsingJetID()

HLTMETCleanerUsingJetID::~HLTMETCleanerUsingJetID ( )
overridedefault

Member Function Documentation

◆ fillDescriptions()

void HLTMETCleanerUsingJetID::fillDescriptions ( edm::ConfigurationDescriptions descriptions)
static

Definition at line 31 of file HLTMETCleanerUsingJetID.cc.

References edm::ConfigurationDescriptions::add(), submitPVResolutionJobs::desc, and ProducerED_cfi::InputTag.

31  {
33  desc.add<double>("minPt", 20.);
34  desc.add<double>("maxEta", 5.);
35  desc.add<edm::InputTag>("metLabel", edm::InputTag("hltMet"));
36  desc.add<edm::InputTag>("jetsLabel", edm::InputTag("hltAntiKT4CaloJets"));
37  desc.add<edm::InputTag>("goodJetsLabel", edm::InputTag("hltCaloJetIDPassed"));
38  descriptions.add("hltMETCleanerUsingJetID", desc);
39 }
void add(std::string const &label, ParameterSetDescription const &psetDescription)

◆ produce()

void HLTMETCleanerUsingJetID::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 42 of file HLTMETCleanerUsingJetID.cc.

References funct::abs(), PVValHelper::eta, topObjectSelection_cff::goodJets, iEvent, dqmiolumiharvest::j, PDWG_EXODelayedJetMET_cff::jets, m_theGoodJetToken, m_theJetToken, m_theMETToken, maxEta_, BTaggingMonitor_cfi::met, minPt_, eostools::move(), DiDispStaMuonMonitor_cfi::pt, multPhiCorr_741_25nsDY_cfi::px, multPhiCorr_741_25nsDY_cfi::py, mps_fire::result, and mathSSE::sqrt().

42  {
43  // Create a pointer to the products
44  std::unique_ptr<reco::CaloMETCollection> result(new reco::CaloMETCollection);
45 
49 
50  iEvent.getByToken(m_theMETToken, met);
51  iEvent.getByToken(m_theJetToken, jets);
52  iEvent.getByToken(m_theGoodJetToken, goodJets);
53 
54  double mex_jets = 0.;
55  double mey_jets = 0.;
56  //double sumet_jets = 0.;
57  if (!jets->empty()) {
58  for (auto const& j : *jets) {
59  double pt = j.pt();
60  double eta = j.eta();
61  double px = j.px();
62  double py = j.py();
63 
64  if (pt > minPt_ && std::abs(eta) < maxEta_) {
65  mex_jets -= px;
66  mey_jets -= py;
67  //sumet_jets += pt;
68  }
69  }
70  }
71 
72  double mex_goodJets = 0.;
73  double mey_goodJets = 0.;
74  //double sumet_goodJets = 0.;
75  if (!goodJets->empty()) {
76  for (auto const& j : *goodJets) {
77  double pt = j.pt();
78  double eta = j.eta();
79  double px = j.px();
80  double py = j.py();
81 
82  if (pt > minPt_ && std::abs(eta) < maxEta_) {
83  mex_goodJets -= px;
84  mey_goodJets -= py;
85  //sumet_goodJets += pt;
86  }
87  }
88  }
89 
90  if (!met->empty()) {
91  double mex_diff = mex_goodJets - mex_jets;
92  double mey_diff = mey_goodJets - mey_jets;
93  //double sumet_diff = sumet_goodJets - sumet_jets; // cannot set sumet...
94  reco::Candidate::LorentzVector p4_clean(met->front().px() + mex_diff,
95  mey_diff + met->front().py(),
96  0,
97  sqrt((met->front().px() + mex_diff) * (met->front().px() + mex_diff) +
98  (met->front().py() + mey_diff) * (met->front().py() + mey_diff)));
99 
100  reco::CaloMET cleanmet = met->front();
101  cleanmet.setP4(p4_clean);
102  result->push_back(cleanmet);
103  }
104 
105  iEvent.put(std::move(result));
106 }
double maxEta_
Maximum (abs) eta requirement for jets.
edm::EDGetTokenT< reco::CaloMETCollection > m_theMETToken
int iEvent
Definition: GenABIO.cc:224
edm::EDGetTokenT< reco::CaloJetCollection > m_theGoodJetToken
double minPt_
Minimum pt requirement for jets.
T sqrt(T t)
Definition: SSEVec.h:23
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
std::vector< reco::CaloMET > CaloMETCollection
collection of CaloMET objects
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:36
edm::EDGetTokenT< reco::CaloJetCollection > m_theJetToken
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

◆ goodJetsLabel_

edm::InputTag HLTMETCleanerUsingJetID::goodJetsLabel_
private

Input tag for the 'good jets' collection.

Definition at line 54 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

◆ jetsLabel_

edm::InputTag HLTMETCleanerUsingJetID::jetsLabel_
private

Input tag for the 'all jets' collection.

Definition at line 51 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

◆ m_theGoodJetToken

edm::EDGetTokenT<reco::CaloJetCollection> HLTMETCleanerUsingJetID::m_theGoodJetToken
private

Definition at line 58 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

◆ m_theJetToken

edm::EDGetTokenT<reco::CaloJetCollection> HLTMETCleanerUsingJetID::m_theJetToken
private

Definition at line 57 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

◆ m_theMETToken

edm::EDGetTokenT<reco::CaloMETCollection> HLTMETCleanerUsingJetID::m_theMETToken
private

Definition at line 56 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

◆ maxEta_

double HLTMETCleanerUsingJetID::maxEta_
private

Maximum (abs) eta requirement for jets.

Definition at line 45 of file HLTMETCleanerUsingJetID.h.

Referenced by produce().

◆ metLabel_

edm::InputTag HLTMETCleanerUsingJetID::metLabel_
private

Input tag for the MET collection.

Definition at line 48 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

◆ minPt_

double HLTMETCleanerUsingJetID::minPt_
private

Minimum pt requirement for jets.

Definition at line 42 of file HLTMETCleanerUsingJetID.h.

Referenced by produce().