Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

added esConsumes to modules in JetMETCorrections/Type1MET #30685

Merged
merged 3 commits into from
Jul 15, 2020
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -31,12 +31,12 @@ class AddCorrectionsToGenericMET {

void setCorTokens(std::vector<edm::EDGetTokenT<CorrMETData> > const& corrTokens);

reco::MET getCorrectedMET(const reco::MET& srcMET, edm::Event& evt, const edm::EventSetup& es);
reco::PFMET getCorrectedPFMET(const reco::PFMET& srcMET, edm::Event& evt, const edm::EventSetup& es);
reco::CaloMET getCorrectedCaloMET(const reco::CaloMET& srcMET, edm::Event& evt, const edm::EventSetup& es);
reco::MET getCorrectedMET(const reco::MET& srcMET, edm::Event& evt);
reco::PFMET getCorrectedPFMET(const reco::PFMET& srcMET, edm::Event& evt);
reco::CaloMET getCorrectedCaloMET(const reco::CaloMET& srcMET, edm::Event& evt);

private:
CorrMETData getCorrection(const reco::MET& srcMET, edm::Event& evt, const edm::EventSetup& es);
CorrMETData getCorrection(const reco::MET& srcMET, edm::Event& evt);

std::vector<edm::EDGetTokenT<CorrMETData> > corrTokens_;
reco::Candidate::LorentzVector constructP4From(const reco::MET& met, const CorrMETData& correction);
Expand Down
72 changes: 27 additions & 45 deletions JetMETCorrections/Type1MET/interface/CorrectedMETProducerT.h
Original file line number Diff line number Diff line change
Expand Up @@ -35,94 +35,76 @@

#include <vector>

namespace CorrectedMETProducer_namespace
{
namespace CorrectedMETProducer_namespace {
template <typename T>
reco::Candidate::LorentzVector correctedP4(const T& rawMEt, const CorrMETData& correction)
{
reco::Candidate::LorentzVector correctedP4(const T& rawMEt, const CorrMETData& correction) {
double correctedMEtPx = rawMEt.px() + correction.mex;
double correctedMEtPy = rawMEt.py() + correction.mey;
double correctedMEtPt = sqrt(correctedMEtPx*correctedMEtPx + correctedMEtPy*correctedMEtPy);
double correctedMEtPt = sqrt(correctedMEtPx * correctedMEtPx + correctedMEtPy * correctedMEtPy);
return reco::Candidate::LorentzVector(correctedMEtPx, correctedMEtPy, 0., correctedMEtPt);
}

template <typename T>
double correctedSumEt(const T& rawMEt, const CorrMETData& correction)
{
double correctedSumEt(const T& rawMEt, const CorrMETData& correction) {
return rawMEt.sumEt() + correction.sumet;
}

template <typename T>
class CorrectedMETFactoryT
{
public:

T operator()(const T&, const CorrMETData&) const
{
assert(0); // "place-holder" for template instantiations for concrete T types only, **not** to be called
}
class CorrectedMETFactoryT {
public:
T operator()(const T&, const CorrMETData&) const {
assert(0); // "place-holder" for template instantiations for concrete T types only, **not** to be called
}
};
}
} // namespace CorrectedMETProducer_namespace

template<typename T>
class CorrectedMETProducerT : public edm::stream::EDProducer<>
{
template <typename T>
class CorrectedMETProducerT : public edm::stream::EDProducer<> {
typedef std::vector<T> METCollection;

public:

public:
explicit CorrectedMETProducerT(const edm::ParameterSet& cfg)
: moduleLabel_(cfg.getParameter<std::string>("@module_label")),
algorithm_(0)
{
: moduleLabel_(cfg.getParameter<std::string>("@module_label")), algorithm_(0) {
token_ = consumes<METCollection>(cfg.getParameter<edm::InputTag>("src"));

algorithm_ = new METCorrectionAlgorithm(cfg, consumesCollector());

produces<METCollection>("");
}
~CorrectedMETProducerT()
{
delete algorithm_;
}

~CorrectedMETProducerT() { delete algorithm_; }

static void fillDescriptions(edm::ConfigurationDescriptions& descriptions) {
edm::ParameterSetDescription desc;
desc.add<edm::InputTag>("src",edm::InputTag("corrPfMetType1", "type1"));
descriptions.add(defaultModuleLabel<CorrectedMETProducerT<T> >(),desc);
desc.add<edm::InputTag>("src", edm::InputTag("corrPfMetType1", "type1"));
descriptions.add(defaultModuleLabel<CorrectedMETProducerT<T> >(), desc);
}

private:

void produce(edm::Event& evt, const edm::EventSetup& es)
{
private:
void produce(edm::Event& evt, const edm::EventSetup& es) {
std::unique_ptr<METCollection> correctedMEtCollection(new METCollection);

edm::Handle<METCollection> rawMEtCollection;
evt.getByToken(token_, rawMEtCollection);

for ( typename METCollection::const_iterator rawMEt = rawMEtCollection->begin();
rawMEt != rawMEtCollection->end(); ++rawMEt ) {
CorrMETData correction = algorithm_->compMETCorrection(evt, es);
for (typename METCollection::const_iterator rawMEt = rawMEtCollection->begin(); rawMEt != rawMEtCollection->end();
++rawMEt) {
CorrMETData correction = algorithm_->compMETCorrection(evt);

static const CorrectedMETProducer_namespace::CorrectedMETFactoryT<T> correctedMET_factory {};
static const CorrectedMETProducer_namespace::CorrectedMETFactoryT<T> correctedMET_factory{};
T correctedMEt = correctedMET_factory(*rawMEt, correction);

correctedMEtCollection->push_back(correctedMEt);
}
//--- add collection of MET objects with Type 1 / Type 1 + 2 corrections applied to the event

//--- add collection of MET objects with Type 1 / Type 1 + 2 corrections applied to the event
evt.put(std::move(correctedMEtCollection));
}

std::string moduleLabel_;

edm::EDGetTokenT<METCollection> token_;

METCorrectionAlgorithm* algorithm_; // algorithm for computing Type 1 / Type 1 + 2 MET corrections
METCorrectionAlgorithm* algorithm_; // algorithm for computing Type 1 / Type 1 + 2 MET corrections
};

#endif



Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,7 @@ class METCorrectionAlgorithm {
explicit METCorrectionAlgorithm(const edm::ParameterSet&, edm::ConsumesCollector&& iConsumesCollector);
~METCorrectionAlgorithm();

CorrMETData compMETCorrection(edm::Event&, const edm::EventSetup&);
CorrMETData compMETCorrection(edm::Event&);

private:
typedef std::vector<edm::InputTag> vInputTag;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -49,7 +49,7 @@ class CorrectedCaloMETProducer : public edm::stream::EDProducer<> {

const reco::CaloMET& srcMET = (*srcMETCollection)[0];

reco::CaloMET outMET = corrector.getCorrectedCaloMET(srcMET, evt, es);
reco::CaloMET outMET = corrector.getCorrectedCaloMET(srcMET, evt);

std::unique_ptr<METCollection> product(new METCollection);
product->push_back(outMET);
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -62,7 +62,7 @@ class CorrectedPFMETProducer : public edm::stream::EDProducer<> {

const reco::PFMET& srcMET = (*srcMETCollection)[0];

reco::PFMET outMET = corrector.getCorrectedPFMET(srcMET, evt, es);
reco::PFMET outMET = corrector.getCorrectedPFMET(srcMET, evt);

std::unique_ptr<METCollection> product(new METCollection);
product->push_back(outMET);
Expand Down
4 changes: 2 additions & 2 deletions JetMETCorrections/Type1MET/plugins/CorrectedPatMETProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -70,13 +70,13 @@ class CorrectedPatMETProducer : public edm::stream::EDProducer<> {
//std::unique_ptr<patMETCollection> product(new patMETCollection);
std::unique_ptr<patMETCollection> product(new patMETCollection);
const reco::MET& srcMET = (*srcPatMETCollection)[0];
pat::MET outMEtPat = corrector.getCorrectedMET(srcMET, evt, es);
pat::MET outMEtPat = corrector.getCorrectedMET(srcMET, evt);
product->push_back(outMEtPat);
evt.put(std::move(product));
} else {
std::unique_ptr<pfMETCollection> product(new pfMETCollection);
const reco::PFMET& srcMET = (*srcPfMETCollection)[0];
reco::PFMET outPfMEtReco = corrector.getCorrectedPFMET(srcMET, evt, es);
reco::PFMET outPfMEtReco = corrector.getCorrectedPFMET(srcMET, evt);
product->push_back(outPfMEtReco);
evt.put(std::move(product));
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,9 +2,7 @@

#include "FWCore/Utilities/interface/Exception.h"
#include "FWCore/Framework/interface/ESHandle.h"
#include "CondFormats/JetMETObjects/interface/MEtXYcorrectParameters.h"
#include "CondFormats/JetMETObjects/interface/Utilities.h"
#include "JetMETCorrections/Objects/interface/MEtXYcorrectRecord.h"

#include "DataFormats/METReco/interface/CorrMETData.h"
#include "DataFormats/VertexReco/interface/Vertex.h"
Expand Down Expand Up @@ -43,6 +41,8 @@ MultShiftMETcorrDBInputProducer::MultShiftMETcorrDBInputProducer(const edm::Para

pflow_ = consumes<edm::View<reco::Candidate>>(cfg.getParameter<edm::InputTag>("srcPFlow"));
vertices_ = consumes<edm::View<reco::Vertex>>(cfg.getParameter<edm::InputTag>("vertexCollection"));
mMEtXYcorParaColl_ =
esConsumes<MEtXYcorrectParametersCollection, MEtXYcorrectRecord>(edm::ESInputTag("", mPayloadName));

edm::InputTag srcWeights = cfg.getParameter<edm::InputTag>("srcWeights");
if (!srcWeights.label().empty())
Expand All @@ -58,8 +58,7 @@ MultShiftMETcorrDBInputProducer::~MultShiftMETcorrDBInputProducer() {}

void MultShiftMETcorrDBInputProducer::produce(edm::Event& evt, const edm::EventSetup& es) {
// Get para.s from DB
edm::ESHandle<MEtXYcorrectParametersCollection> MEtXYcorParaColl;
es.get<MEtXYcorrectRecord>().get(mPayloadName, MEtXYcorParaColl);
edm::ESHandle<MEtXYcorrectParametersCollection> MEtXYcorParaColl = es.getHandle(mMEtXYcorParaColl_);

// get the sections from Collection (pair of section and METCorr.Par class)
std::vector<MEtXYcorrectParametersCollection::key_type> keys;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -18,12 +18,15 @@
#include "FWCore/Framework/interface/EventSetup.h"
#include "FWCore/ParameterSet/interface/ParameterSet.h"
#include "FWCore/Utilities/interface/InputTag.h"
#include "FWCore/Utilities/interface/ESGetToken.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidate.h"
#include "DataFormats/Common/interface/ValueMap.h"

#include "DataFormats/METReco/interface/MET.h"
#include "DataFormats/VertexReco/interface/VertexFwd.h"
#include "DataFormats/ParticleFlowCandidate/interface/PFCandidateFwd.h"
#include "CondFormats/JetMETObjects/interface/MEtXYcorrectParameters.h"
#include "JetMETCorrections/Objects/interface/MEtXYcorrectRecord.h"

#include <TF1.h>

Expand All @@ -41,6 +44,7 @@ class MultShiftMETcorrDBInputProducer : public edm::stream::EDProducer<> {

edm::EDGetTokenT<edm::View<reco::Candidate>> pflow_;
edm::EDGetTokenT<edm::View<reco::Vertex>> vertices_;
edm::ESGetToken<MEtXYcorrectParametersCollection, MEtXYcorrectRecord> mMEtXYcorParaColl_;
std::string moduleLabel_;
std::string mPayloadName;
std::string mSampleType;
Expand Down
22 changes: 7 additions & 15 deletions JetMETCorrections/Type1MET/src/AddCorrectionsToGenericMET.cc
Original file line number Diff line number Diff line change
Expand Up @@ -12,9 +12,7 @@ reco::Candidate::LorentzVector AddCorrectionsToGenericMET::constructP4From(const
return reco::Candidate::LorentzVector(px, py, 0., pt);
}

CorrMETData AddCorrectionsToGenericMET::getCorrection(const reco::MET& srcMET,
edm::Event& evt,
const edm::EventSetup& es) {
CorrMETData AddCorrectionsToGenericMET::getCorrection(const reco::MET& srcMET, edm::Event& evt) {
CorrMETData sumCor;
edm::Handle<CorrMETData> corr;
for (std::vector<edm::EDGetTokenT<CorrMETData> >::const_iterator corrToken = corrTokens_.begin();
Expand All @@ -27,20 +25,16 @@ CorrMETData AddCorrectionsToGenericMET::getCorrection(const reco::MET& srcMET,
return sumCor;
}

reco::MET AddCorrectionsToGenericMET::getCorrectedMET(const reco::MET& srcMET,
edm::Event& evt,
const edm::EventSetup& es) {
CorrMETData corr = getCorrection(srcMET, evt, es);
reco::MET AddCorrectionsToGenericMET::getCorrectedMET(const reco::MET& srcMET, edm::Event& evt) {
CorrMETData corr = getCorrection(srcMET, evt);
reco::MET outMET(srcMET.sumEt() + corr.sumet, constructP4From(srcMET, corr), srcMET.vertex(), srcMET.isWeighted());

return outMET;
}

//specific flavors ================================
reco::PFMET AddCorrectionsToGenericMET::getCorrectedPFMET(const reco::PFMET& srcMET,
edm::Event& evt,
const edm::EventSetup& es) {
CorrMETData corr = getCorrection(srcMET, evt, es);
reco::PFMET AddCorrectionsToGenericMET::getCorrectedPFMET(const reco::PFMET& srcMET, edm::Event& evt) {
CorrMETData corr = getCorrection(srcMET, evt);
reco::PFMET outMET(srcMET.getSpecific(),
srcMET.sumEt() + corr.sumet,
constructP4From(srcMET, corr),
Expand All @@ -50,10 +44,8 @@ reco::PFMET AddCorrectionsToGenericMET::getCorrectedPFMET(const reco::PFMET& src
return outMET;
}

reco::CaloMET AddCorrectionsToGenericMET::getCorrectedCaloMET(const reco::CaloMET& srcMET,
edm::Event& evt,
const edm::EventSetup& es) {
CorrMETData corr = getCorrection(srcMET, evt, es);
reco::CaloMET AddCorrectionsToGenericMET::getCorrectedCaloMET(const reco::CaloMET& srcMET, edm::Event& evt) {
CorrMETData corr = getCorrection(srcMET, evt);
reco::CaloMET outMET(
srcMET.getSpecific(), srcMET.sumEt() + corr.sumet, constructP4From(srcMET, corr), srcMET.vertex());

Expand Down
2 changes: 1 addition & 1 deletion JetMETCorrections/Type1MET/src/METCorrectionAlgorithm.cc
Original file line number Diff line number Diff line change
Expand Up @@ -68,7 +68,7 @@ METCorrectionAlgorithm::~METCorrectionAlgorithm() {
}
}

CorrMETData METCorrectionAlgorithm::compMETCorrection(edm::Event& evt, const edm::EventSetup& es) {
CorrMETData METCorrectionAlgorithm::compMETCorrection(edm::Event& evt) {
CorrMETData metCorr;
metCorr.mex = 0.;
metCorr.mey = 0.;
Expand Down
2 changes: 1 addition & 1 deletion PhysicsTools/PatUtils/plugins/CorrectedPATMETProducer.cc
Original file line number Diff line number Diff line change
Expand Up @@ -52,7 +52,7 @@ class CorrectedPATMETProducer : public edm::stream::EDProducer<> {
const pat::MET& srcMET = (*srcMETCollection)[0];

//dispatching to be sure we retrieve all the informations
reco::MET corrMET = corrector.getCorrectedMET(srcMET, evt, es);
reco::MET corrMET = corrector.getCorrectedMET(srcMET, evt);
pat::MET outMET(corrMET, srcMET);

auto product = std::make_unique<METCollection>();
Expand Down