CMS 3D CMS Logo

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

#include <MuonMETcorrInputProducer.h>

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

Public Member Functions

 MuonMETcorrInputProducer (const edm::ParameterSet &)
 
 ~MuonMETcorrInputProducer () override
 
- Public Member Functions inherited from edm::stream::EDProducer<>
 EDProducer ()=default
 
bool hasAbilityToProduceInBeginLumis () const final
 
bool hasAbilityToProduceInBeginRuns () const final
 
bool hasAbilityToProduceInEndLumis () const final
 
bool hasAbilityToProduceInEndRuns () const final
 

Private Member Functions

void produce (edm::Event &, const edm::EventSetup &) override
 

Private Attributes

std::string moduleLabel_
 
edm::EDGetTokenT< edm::ValueMap< reco::MuonMETCorrectionData > > muonCorrectionMapToken_
 
edm::EDGetTokenT< reco::MuonCollectiontoken_
 

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

Sum CaloMET muon corrections, needed to compute Type 2 MET corrections in case muon corrected CaloMET is used as input to CorrectedCaloMETProducer

Author
Christian Veelken, LLR

Definition at line 27 of file MuonMETcorrInputProducer.h.

Constructor & Destructor Documentation

MuonMETcorrInputProducer::MuonMETcorrInputProducer ( const edm::ParameterSet cfg)
explicit

Definition at line 7 of file MuonMETcorrInputProducer.cc.

References edm::ParameterSet::getParameter(), muonCorrectionMapToken_, and token_.

8  : moduleLabel_(cfg.getParameter<std::string>("@module_label")) {
9  token_ = consumes<reco::MuonCollection>(cfg.getParameter<edm::InputTag>("src"));
11  consumes<edm::ValueMap<reco::MuonMETCorrectionData> >(cfg.getParameter<edm::InputTag>("srcMuonCorrections"));
12 
13  produces<CorrMETData>();
14 }
T getParameter(std::string const &) const
edm::EDGetTokenT< reco::MuonCollection > token_
edm::EDGetTokenT< edm::ValueMap< reco::MuonMETCorrectionData > > muonCorrectionMapToken_
MuonMETcorrInputProducer::~MuonMETcorrInputProducer ( )
override

Definition at line 16 of file MuonMETcorrInputProducer.cc.

16  {
17  // nothing to be done yet...
18 }

Member Function Documentation

void MuonMETcorrInputProducer::produce ( edm::Event evt,
const edm::EventSetup es 
)
overrideprivate

Definition at line 20 of file MuonMETcorrInputProducer.cc.

References DEFINE_FWK_MODULE, edm::Event::getByToken(), eostools::move(), muonCorrectionMapToken_, PDWG_BPHSkim_cff::muons, reco::MuonMETCorrectionData::NotUsed, patZpeak::numMuons, reco::LeafCandidate::pt(), edm::Event::put(), reco::LeafCandidate::px(), reco::LeafCandidate::py(), token_, and reco::MuonMETCorrectionData::type().

20  {
21  std::unique_ptr<CorrMETData> unclEnergySum(new CorrMETData());
22 
24  evt.getByToken(token_, muons);
25 
26  typedef edm::ValueMap<reco::MuonMETCorrectionData> MuonMETCorrectionMap;
27  edm::Handle<MuonMETCorrectionMap> muonCorrections;
28  evt.getByToken(muonCorrectionMapToken_, muonCorrections);
29 
30  //--- sum muon corrections.
31  //
32  // NOTE: MET = -(jets + muon corrections + "unclustered energy"),
33  // so "unclustered energy" = -(MET + jets + muons),
34  // i.e. muon corrections enter the sum of "unclustered energy" with negative sign.
35  //
36  int numMuons = muons->size();
37  for (int muonIndex = 0; muonIndex < numMuons; ++muonIndex) {
38  const reco::Muon& muon = muons->at(muonIndex);
39 
40  reco::MuonRef muonRef(muons, muonIndex);
41 
42  reco::MuonMETCorrectionData muonCorrection = (*muonCorrections)[muonRef];
43  if (muonCorrection.type() != reco::MuonMETCorrectionData::NotUsed) {
44  unclEnergySum->mex -= muon.px();
45  unclEnergySum->mey -= muon.py();
46  unclEnergySum->sumet -= muon.pt();
47  }
48  }
49 
50  //--- add sum of muon corrections to the event
51  evt.put(std::move(unclEnergySum));
52 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:131
edm::EDGetTokenT< reco::MuonCollection > token_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:525
double px() const final
x coordinate of momentum vector
double pt() const final
transverse momentum
edm::EDGetTokenT< edm::ValueMap< reco::MuonMETCorrectionData > > muonCorrectionMapToken_
double py() const final
y coordinate of momentum vector
a MET correction term
Definition: CorrMETData.h:14
def move(src, dest)
Definition: eostools.py:511

Member Data Documentation

std::string MuonMETcorrInputProducer::moduleLabel_
private
edm::EDGetTokenT<edm::ValueMap<reco::MuonMETCorrectionData> > MuonMETcorrInputProducer::muonCorrectionMapToken_
private

Definition at line 38 of file MuonMETcorrInputProducer.h.

Referenced by MuonMETcorrInputProducer(), and produce().

edm::EDGetTokenT<reco::MuonCollection> MuonMETcorrInputProducer::token_
private

Definition at line 37 of file MuonMETcorrInputProducer.h.

Referenced by MuonMETcorrInputProducer(), and produce().