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 hasAbilityToProduceInLumis () const final
 
bool hasAbilityToProduceInRuns () 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 {
10  token_ = consumes<reco::MuonCollection>(cfg.getParameter<edm::InputTag>("src"));
11  muonCorrectionMapToken_ = 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.

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

Member Function Documentation

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

Definition at line 21 of file MuonMETcorrInputProducer.cc.

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

22 {
23  std::unique_ptr<CorrMETData> unclEnergySum(new CorrMETData());
24 
26  evt.getByToken(token_, muons);
27 
28  typedef edm::ValueMap<reco::MuonMETCorrectionData> MuonMETCorrectionMap;
29  edm::Handle<MuonMETCorrectionMap> muonCorrections;
30  evt.getByToken(muonCorrectionMapToken_, muonCorrections);
31 
32 //--- sum muon corrections.
33 //
34 // NOTE: MET = -(jets + muon corrections + "unclustered energy"),
35 // so "unclustered energy" = -(MET + jets + muons),
36 // i.e. muon corrections enter the sum of "unclustered energy" with negative sign.
37 //
38  int numMuons = muons->size();
39  for ( int muonIndex = 0; muonIndex < numMuons; ++muonIndex ) {
40  const reco::Muon& muon = muons->at(muonIndex);
41 
42  reco::MuonRef muonRef(muons, muonIndex);
43 
44  reco::MuonMETCorrectionData muonCorrection = (*muonCorrections)[muonRef];
45  if ( muonCorrection.type() != reco::MuonMETCorrectionData::NotUsed ) {
46  unclEnergySum->mex -= muon.px();
47  unclEnergySum->mey -= muon.py();
48  unclEnergySum->sumet -= muon.pt();
49  }
50  }
51 
52 //--- add sum of muon corrections to the event
53  evt.put(std::move(unclEnergySum));
54 }
OrphanHandle< PROD > put(std::unique_ptr< PROD > product)
Put a new product.
Definition: Event.h:125
edm::EDGetTokenT< reco::MuonCollection > token_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
Definition: Event.h:517
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 41 of file MuonMETcorrInputProducer.h.

Referenced by MuonMETcorrInputProducer(), and produce().

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

Definition at line 40 of file MuonMETcorrInputProducer.h.

Referenced by MuonMETcorrInputProducer(), and produce().