CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
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::CaloJetCollection
m_theGoodJetToken
 
edm::EDGetTokenT
< reco::CaloJetCollection
m_theJetToken
 
edm::EDGetTokenT
< reco::CaloMETCollection
m_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 ( 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.
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.
T getParameter(std::string const &) const
Definition: ParameterSet.h:303
edm::EDGetTokenT< reco::CaloJetCollection > m_theJetToken
HLTMETCleanerUsingJetID::~HLTMETCleanerUsingJetID ( )
overridedefault

Member Function Documentation

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

Definition at line 31 of file HLTMETCleanerUsingJetID.cc.

References edm::ConfigurationDescriptions::add(), edm::ParameterSetDescription::add(), submitPVResolutionJobs::desc, and HLT_FULL_cff::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 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void HLTMETCleanerUsingJetID::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 42 of file HLTMETCleanerUsingJetID.cc.

References funct::abs(), PVValHelper::eta, edm::Event::getByToken(), topObjectSelection_cff::goodJets, dqmiolumiharvest::j, fwrapper::jets, m_theGoodJetToken, m_theJetToken, m_theMETToken, maxEta_, objects.METAnalyzer::met, minPt_, eostools::move(), DiDispStaMuonMonitor_cfi::pt, edm::Event::put(), 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 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:133
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:539
double maxEta_
Maximum (abs) eta requirement for jets.
edm::EDGetTokenT< reco::CaloMETCollection > m_theMETToken
tuple result
Definition: mps_fire.py:311
edm::EDGetTokenT< reco::CaloJetCollection > m_theGoodJetToken
double minPt_
Minimum pt requirement for jets.
T sqrt(T t)
Definition: SSEVec.h:19
vector< PseudoJet > jets
def move
Definition: eostools.py:511
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

Member Data Documentation

edm::InputTag HLTMETCleanerUsingJetID::goodJetsLabel_
private

Input tag for the 'good jets' collection.

Definition at line 54 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

edm::InputTag HLTMETCleanerUsingJetID::jetsLabel_
private

Input tag for the 'all jets' collection.

Definition at line 51 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

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

Definition at line 58 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

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

Definition at line 57 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

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

Definition at line 56 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID(), and produce().

double HLTMETCleanerUsingJetID::maxEta_
private

Maximum (abs) eta requirement for jets.

Definition at line 45 of file HLTMETCleanerUsingJetID.h.

Referenced by produce().

edm::InputTag HLTMETCleanerUsingJetID::metLabel_
private

Input tag for the MET collection.

Definition at line 48 of file HLTMETCleanerUsingJetID.h.

Referenced by HLTMETCleanerUsingJetID().

double HLTMETCleanerUsingJetID::minPt_
private

Minimum pt requirement for jets.

Definition at line 42 of file HLTMETCleanerUsingJetID.h.

Referenced by produce().