CMS 3D CMS Logo

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

This produces a reco::MET object that stores MHT (or MET) More...

#include <HLTTrackMETProducer.h>

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

Public Member Functions

 HLTTrackMETProducer (const edm::ParameterSet &iConfig)
 
void produce (edm::Event &iEvent, const edm::EventSetup &iSetup) override
 
 ~HLTTrackMETProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () const final
 

Static Public Member Functions

static void fillDescriptions (edm::ConfigurationDescriptions &descriptions)
 

Private Attributes

bool excludePFMuons_
 
edm::InputTag jetsLabel_
 Input jet, track, PFRecTrack, PFCandidate collections. More...
 
edm::EDGetTokenT< reco::JetViewm_theJetToken
 
edm::EDGetTokenT< reco::PFCandidateCollectionm_thePFCandidateToken
 
edm::EDGetTokenT< reco::PFRecTrackCollectionm_theRecTrackToken
 
edm::EDGetTokenT< reco::TrackCollectionm_theTrackToken
 
double maxEtaJet_
 Maximum (abs) eta requirement for jets (or objects used as input) More...
 
int minNJet_
 
double minPtJet_
 Minimum pt requirement for jets (or objects used as input) More...
 
edm::InputTag pfCandidatesLabel_
 
edm::InputTag pfRecTracksLabel_
 
edm::InputTag tracksLabel_
 
bool usePFCandidates_
 Use PF candidates as input instead of jets. More...
 
bool usePFCandidatesCharged_
 
bool usePFRecTracks_
 
bool usePt_
 
bool useTracks_
 

Additional Inherited Members

- Public Types inherited from edm::stream::EDProducer<>
typedef CacheContexts< T... > CacheTypes
 
typedef CacheTypes::GlobalCache GlobalCache
 
typedef AbilityChecker< T... > HasAbility
 
typedef CacheTypes::LuminosityBlockCache LuminosityBlockCache
 
typedef LuminosityBlockContextT< LuminosityBlockCache, RunCache, GlobalCacheLuminosityBlockContext
 
typedef CacheTypes::LuminosityBlockSummaryCache LuminosityBlockSummaryCache
 
typedef CacheTypes::RunCache RunCache
 
typedef RunContextT< RunCache, GlobalCacheRunContext
 
typedef CacheTypes::RunSummaryCache RunSummaryCache
 

Detailed Description

This produces a reco::MET object that stores MHT (or MET)

Author
Steven Lowette
Michele de Gruttola, Jia Fu Low (Nov 2013)

MHT (or MET) is calculated using one of the input collections:

See header file for documentation

Author
Steven Lowette

Definition at line 42 of file HLTTrackMETProducer.h.

Constructor & Destructor Documentation

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

Definition at line 18 of file HLTTrackMETProducer.cc.

References jetsLabel_, m_theJetToken, m_thePFCandidateToken, m_theRecTrackToken, m_theTrackToken, pfCandidatesLabel_, pfRecTracksLabel_, tracksLabel_, and ~HLTTrackMETProducer().

18  :
19  usePt_ ( iConfig.getParameter<bool>("usePt") ),
20  useTracks_ ( iConfig.getParameter<bool>("useTracks") ),
21  usePFRecTracks_ ( iConfig.getParameter<bool>("usePFRecTracks") ),
22  usePFCandidatesCharged_ ( iConfig.getParameter<bool>("usePFCandidatesCharged") ),
23  usePFCandidates_ ( iConfig.getParameter<bool>("usePFCandidates") ),
24  excludePFMuons_ ( iConfig.getParameter<bool>("excludePFMuons") ),
25  minNJet_ ( iConfig.getParameter<int>("minNJet") ),
26  minPtJet_ ( iConfig.getParameter<double>("minPtJet") ),
27  maxEtaJet_ ( iConfig.getParameter<double>("maxEtaJet") ),
28  jetsLabel_ ( iConfig.getParameter<edm::InputTag>("jetsLabel") ),
29  tracksLabel_ ( iConfig.getParameter<edm::InputTag>("tracksLabel") ),
30  pfRecTracksLabel_ ( iConfig.getParameter<edm::InputTag>("pfRecTracksLabel") ),
31  pfCandidatesLabel_ ( iConfig.getParameter<edm::InputTag>("pfCandidatesLabel") ) {
32  m_theJetToken = consumes<edm::View<reco::Jet>>(jetsLabel_);
33  m_theTrackToken = consumes<reco::TrackCollection>(tracksLabel_);
34  m_theRecTrackToken = consumes<reco::PFRecTrackCollection>(pfRecTracksLabel_);
35  m_thePFCandidateToken = consumes<reco::PFCandidateCollection>(pfCandidatesLabel_);
36 
37  // Register the products
38  produces<reco::METCollection>();
39 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::TrackCollection > m_theTrackToken
bool usePFCandidates_
Use PF candidates as input instead of jets.
edm::InputTag pfRecTracksLabel_
edm::InputTag pfCandidatesLabel_
edm::InputTag tracksLabel_
edm::EDGetTokenT< reco::PFCandidateCollection > m_thePFCandidateToken
edm::InputTag jetsLabel_
Input jet, track, PFRecTrack, PFCandidate collections.
double minPtJet_
Minimum pt requirement for jets (or objects used as input)
edm::EDGetTokenT< reco::PFRecTrackCollection > m_theRecTrackToken
edm::EDGetTokenT< reco::JetView > m_theJetToken
double maxEtaJet_
Maximum (abs) eta requirement for jets (or objects used as input)
HLTTrackMETProducer::~HLTTrackMETProducer ( )
overridedefault

Referenced by HLTTrackMETProducer().

Member Function Documentation

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

Definition at line 45 of file HLTTrackMETProducer.cc.

References edm::ConfigurationDescriptions::add(), and edm::ParameterSetDescription::add().

45  {
46  // Current default is for hltPFMET
48  desc.add<bool>("usePt", true);
49  desc.add<bool>("useTracks", false);
50  desc.add<bool>("usePFRecTracks", false);
51  desc.add<bool>("usePFCandidatesCharged", true);
52  desc.add<bool>("usePFCandidates", false);
53  desc.add<bool>("excludePFMuons", false);
54  desc.add<int>("minNJet",0);
55  desc.add<double>("minPtJet", 0.);
56  desc.add<double>("maxEtaJet", 999.);
57  desc.add<edm::InputTag>("jetsLabel", edm::InputTag("hltAntiKT4PFJets"));
58  desc.add<edm::InputTag>("tracksLabel", edm::InputTag("hltL3Muons"));
59  desc.add<edm::InputTag>("pfRecTracksLabel", edm::InputTag("hltLightPFTracks"));
60  desc.add<edm::InputTag>("pfCandidatesLabel", edm::InputTag("hltParticleFlow"));
61  descriptions.add("hltTrackMETProducer", desc);
62 }
ParameterDescriptionBase * add(U const &iLabel, T const &value)
void add(std::string const &label, ParameterSetDescription const &psetDescription)
void HLTTrackMETProducer::produce ( edm::Event iEvent,
const edm::EventSetup iSetup 
)
override

Definition at line 65 of file HLTTrackMETProducer.cc.

References funct::abs(), edm::View< T >::begin(), funct::cos(), edm::View< T >::empty(), edm::View< T >::end(), PVValHelper::eta, excludePFMuons_, edm::Event::getByToken(), fwrapper::jets, edm::InputTag::label(), m_theJetToken, m_thePFCandidateToken, m_theRecTrackToken, m_theTrackToken, maxEtaJet_, minNJet_, minPtJet_, eostools::move(), p4, patMuonMerger_cfi::pfCandidates, pfCandidatesLabel_, phi, EnergyCorrector::pt, edm::Event::put(), mps_fire::result, funct::sin(), mathSSE::sqrt(), l1t::tracks, usePFCandidates_, usePFCandidatesCharged_, usePFRecTracks_, usePt_, useTracks_, and badGlobalMuonTaggersAOD_cff::vtx.

65  {
66 
67  // Create a pointer to the products
68  std::unique_ptr<reco::METCollection> result(new reco::METCollection());
69 
70  if (pfCandidatesLabel_.label() == "")
71  excludePFMuons_ = false;
72 
74  if (!useJets) {
75  minNJet_ = 0;
76  }
77 
79  if (useJets) iEvent.getByToken(m_theJetToken, jets);
80 
82  if (useTracks_) iEvent.getByToken(m_theTrackToken, tracks);
83 
85  if (usePFRecTracks_) iEvent.getByToken(m_theRecTrackToken, pfRecTracks);
86 
89  iEvent.getByToken(m_thePFCandidateToken, pfCandidates);
90 
91  int nj = 0;
92  double sumet = 0., mhx = 0., mhy = 0.;
93 
94  if (useJets && !jets->empty()) {
95  for(reco::JetView::const_iterator j = jets->begin(); j != jets->end(); ++j) {
96  double pt = usePt_ ? j->pt() : j->et();
97  double eta = j->eta();
98  double phi = j->phi();
99  double px = usePt_ ? j->px() : j->et() * cos(phi);
100  double py = usePt_ ? j->py() : j->et() * sin(phi);
101 
102  if (pt > minPtJet_ && std::abs(eta) < maxEtaJet_) {
103  mhx -= px;
104  mhy -= py;
105  sumet += pt;
106  ++nj;
107  }
108  }
109 
110  } else if (useTracks_ && !tracks->empty()) {
111  for (auto const & j : *tracks) {
112  double pt = j.pt();
113  double px = j.px();
114  double py = j.py();
115  double eta = j.eta();
116 
117  if (pt > minPtJet_ && std::abs(eta) < maxEtaJet_) {
118  mhx -= px;
119  mhy -= py;
120  sumet += pt;
121  ++nj;
122  }
123  }
124 
125  } else if (usePFRecTracks_ && !pfRecTracks->empty()) {
126  for (auto const & j : *pfRecTracks) {
127  double pt = j.trackRef()->pt();
128  double px = j.trackRef()->px();
129  double py = j.trackRef()->py();
130  double eta = j.trackRef()->eta();
131 
132  if (pt > minPtJet_ && std::abs(eta) < maxEtaJet_) {
133  mhx -= px;
134  mhy -= py;
135  sumet += pt;
136  ++nj;
137  }
138  }
139 
140  } else if ((usePFCandidatesCharged_ || usePFCandidates_) && !pfCandidates->empty()) {
141  for (auto const & j : *pfCandidates) {
142  if (usePFCandidatesCharged_ && j.charge() == 0) continue;
143  double pt = j.pt();
144  double px = j.px();
145  double py = j.py();
146  double eta = j.eta();
147 
148  if (pt > minPtJet_ && std::abs(eta) < maxEtaJet_) {
149  mhx -= px;
150  mhy -= py;
151  sumet += pt;
152  ++nj;
153  }
154  }
155  }
156 
157  if (excludePFMuons_) {
158  for (auto const & j : *pfCandidates) {
159  if (std::abs(j.pdgId()) == 13) {
160  mhx += j.px();
161  mhy += j.py();
162  }
163  }
164  }
165 
166  if (nj < minNJet_) { sumet = 0; mhx = 0; mhy = 0; }
167 
168  reco::MET::LorentzVector p4(mhx, mhy, 0, sqrt(mhx*mhx + mhy*mhy));
169  reco::MET::Point vtx(0, 0, 0);
170  reco::MET mht(sumet, p4, vtx);
171  result->push_back(mht);
172 
173  // Put the products into the Event
174  iEvent.put(std::move(result));
175 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
edm::EDGetTokenT< reco::TrackCollection > m_theTrackToken
bool usePFCandidates_
Use PF candidates as input instead of jets.
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
Sin< T >::type sin(const T &t)
Definition: Sin.h:22
edm::InputTag pfCandidatesLabel_
std::vector< reco::MET > METCollection
collection of MET objects
Definition: METCollection.h:23
const_iterator begin() const
Definition: MET.h:42
T sqrt(T t)
Definition: SSEVec.h:18
double p4[4]
Definition: TauolaWrapper.h:92
edm::EDGetTokenT< reco::PFCandidateCollection > m_thePFCandidateToken
vector< PseudoJet > jets
Cos< T >::type cos(const T &t)
Definition: Cos.h:22
bool empty() const
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
double minPtJet_
Minimum pt requirement for jets (or objects used as input)
edm::EDGetTokenT< reco::PFRecTrackCollection > m_theRecTrackToken
math::XYZTLorentzVector LorentzVector
Lorentz vector.
Definition: Candidate.h:37
std::string const & label() const
Definition: InputTag.h:36
boost::indirect_iterator< typename seq_t::const_iterator > const_iterator
Definition: View.h:86
edm::EDGetTokenT< reco::JetView > m_theJetToken
math::XYZPoint Point
point in the space
Definition: Candidate.h:41
const_iterator end() const
double maxEtaJet_
Maximum (abs) eta requirement for jets (or objects used as input)
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

bool HLTTrackMETProducer::excludePFMuons_
private

Exclude PF muons in the MHT calculation (but not HT) Ignored if pfCandidatesLabel_ is empty.

Definition at line 71 of file HLTTrackMETProducer.h.

Referenced by produce().

edm::InputTag HLTTrackMETProducer::jetsLabel_
private

Input jet, track, PFRecTrack, PFCandidate collections.

Definition at line 84 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer().

edm::EDGetTokenT<reco::JetView> HLTTrackMETProducer::m_theJetToken
private

Definition at line 89 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer(), and produce().

edm::EDGetTokenT<reco::PFCandidateCollection> HLTTrackMETProducer::m_thePFCandidateToken
private

Definition at line 92 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer(), and produce().

edm::EDGetTokenT<reco::PFRecTrackCollection> HLTTrackMETProducer::m_theRecTrackToken
private

Definition at line 91 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer(), and produce().

edm::EDGetTokenT<reco::TrackCollection> HLTTrackMETProducer::m_theTrackToken
private

Definition at line 90 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer(), and produce().

double HLTTrackMETProducer::maxEtaJet_
private

Maximum (abs) eta requirement for jets (or objects used as input)

Definition at line 81 of file HLTTrackMETProducer.h.

Referenced by produce().

int HLTTrackMETProducer::minNJet_
private

Minimum number of jets passing pt and eta requirements Ignored if jets are not used as input

Definition at line 75 of file HLTTrackMETProducer.h.

Referenced by produce().

double HLTTrackMETProducer::minPtJet_
private

Minimum pt requirement for jets (or objects used as input)

Definition at line 78 of file HLTTrackMETProducer.h.

Referenced by produce().

edm::InputTag HLTTrackMETProducer::pfCandidatesLabel_
private

Definition at line 87 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer(), and produce().

edm::InputTag HLTTrackMETProducer::pfRecTracksLabel_
private

Definition at line 86 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer().

edm::InputTag HLTTrackMETProducer::tracksLabel_
private

Definition at line 85 of file HLTTrackMETProducer.h.

Referenced by HLTTrackMETProducer().

bool HLTTrackMETProducer::usePFCandidates_
private

Use PF candidates as input instead of jets.

Definition at line 67 of file HLTTrackMETProducer.h.

Referenced by produce().

bool HLTTrackMETProducer::usePFCandidatesCharged_
private

Use PF charged candidates as input instead of jets. If true, it overrides usePFCandidates_.

Definition at line 64 of file HLTTrackMETProducer.h.

Referenced by produce().

bool HLTTrackMETProducer::usePFRecTracks_
private

Use PF tracks as input instead of jets. If true, it overrides usePFCandidatesCharged_ & usePFCandidates_.

Definition at line 60 of file HLTTrackMETProducer.h.

Referenced by produce().

bool HLTTrackMETProducer::usePt_
private

Use pt; otherwise, use et. Ignored if jets are not used as input.

Definition at line 52 of file HLTTrackMETProducer.h.

Referenced by produce().

bool HLTTrackMETProducer::useTracks_
private

Use reco tracks as input instead of jets. If true, it overrides usePFRecTracks, usePFCandidatesCharged_ & usePFCandidates_.

Definition at line 56 of file HLTTrackMETProducer.h.

Referenced by produce().