Skip to content

Commit

Permalink
Merge pull request #12723 from blinkseb/jer_fix
Browse files Browse the repository at this point in the history
Fix infinite recursion in JER code
  • Loading branch information
davidlange6 committed Dec 21, 2015
2 parents a379b35 + dd1521b commit c636ab4
Show file tree
Hide file tree
Showing 3 changed files with 14 additions and 6 deletions.
2 changes: 1 addition & 1 deletion CondFormats/JetMETObjects/src/JetResolutionObject.cc
Expand Up @@ -40,7 +40,7 @@ namespace JME {

void throwException(uint32_t code, const std::string& message) {
#ifndef STANDALONE
throwException(code, message);
throw edm::Exception(static_cast<edm::errors::ErrorCodes>(code), message);
#else
std::stringstream error;
error << message << " Error code: " << code;
Expand Down
17 changes: 12 additions & 5 deletions JetMETCorrections/Modules/plugins/JetResolutionDemo.cc
Expand Up @@ -32,6 +32,7 @@ class JetResolutionDemo : public edm::EDAnalyzer {
virtual void endJob() override;

edm::EDGetTokenT<std::vector<pat::Jet>> m_jets_token;
edm::EDGetTokenT<double> m_rho_token;

bool m_debug = false;
bool m_use_conddb = false;
Expand All @@ -51,6 +52,7 @@ class JetResolutionDemo : public edm::EDAnalyzer {
JetResolutionDemo::JetResolutionDemo(const edm::ParameterSet& iConfig)
{
m_jets_token = consumes<std::vector<pat::Jet>>(iConfig.getParameter<edm::InputTag>("jets"));
m_rho_token = consumes<double>(iConfig.getParameter<edm::InputTag>("rho"));
m_debug = iConfig.getUntrackedParameter<bool>("debug", false);
m_use_conddb = iConfig.getUntrackedParameter<bool>("useCondDB", false);

Expand All @@ -74,6 +76,9 @@ void JetResolutionDemo::analyze(const edm::Event& iEvent, const edm::EventSetup&
edm::Handle<std::vector<pat::Jet>> jets;
iEvent.getByToken(m_jets_token, jets);

edm::Handle<double> rho;
iEvent.getByToken(m_rho_token, rho);

// Access jet resolution and scale factor from the condition database
// or from text files
JME::JetResolution resolution;
Expand Down Expand Up @@ -129,7 +134,7 @@ void JetResolutionDemo::analyze(const edm::Event& iEvent, const edm::EventSetup&

for (const auto& jet: *jets) {
if (m_debug) {
std::cout << "New jet; pt=" << jet.pt() << " eta=" << jet.eta() << " phi=" << jet.phi() << " e=" << jet.energy() << std::endl;
std::cout << "New jet; pt=" << jet.pt() << " eta=" << jet.eta() << " phi=" << jet.phi() << " e=" << jet.energy() << " rho=" << *rho << std::endl;
}


Expand All @@ -149,24 +154,26 @@ void JetResolutionDemo::analyze(const edm::Event& iEvent, const edm::EventSetup&
JME::JetParameters parameters_1;
parameters_1.setJetPt(jet.pt());
parameters_1.setJetEta(jet.eta());
parameters_1.setRho(*rho);

// You can also chain calls

JME::JetParameters parameters_2;
parameters_2.setJetPt(jet.pt()).setJetEta(jet.eta());
parameters_2.setJetPt(jet.pt()).setJetEta(jet.eta()).setRho(*rho);

// Second, using the set() function
JME::JetParameters parameters_3;
parameters_3.set(JME::Binning::JetPt, jet.pt());
parameters_3.set({JME::Binning::JetEta, jet.eta()});
parameters_3.set({JME::Binning::Rho, *rho});

// Or

JME::JetParameters parameters_4;
parameters_4.set(JME::Binning::JetPt, jet.pt()).set(JME::Binning::JetEta, jet.eta());
parameters_4.set(JME::Binning::JetPt, jet.pt()).set(JME::Binning::JetEta, jet.eta()).set(JME::Binning::Rho, *rho);

// Third, using a initializer_list
JME::JetParameters parameters_5 = {{JME::Binning::JetPt, jet.pt()}, {JME::Binning::JetEta, jet.eta()}};
JME::JetParameters parameters_5 = {{JME::Binning::JetPt, jet.pt()}, {JME::Binning::JetEta, jet.eta()}, {JME::Binning::Rho, *rho}};

// Now, get the resolution

Expand All @@ -179,7 +186,7 @@ void JetResolutionDemo::analyze(const edm::Event& iEvent, const edm::EventSetup&
std::cout << "Resolution with parameters_5: " << resolution.getResolution(parameters_5) << std::endl;

// You can also use a shortcut to get the resolution
float r2 = resolution.getResolution({{JME::Binning::JetPt, jet.pt()}, {JME::Binning::JetEta, jet.eta()}});
float r2 = resolution.getResolution({{JME::Binning::JetPt, jet.pt()}, {JME::Binning::JetEta, jet.eta()}, {JME::Binning::Rho, *rho}});
std::cout << "Resolution using shortcut : " << r2 << std::endl;
}

Expand Down
1 change: 1 addition & 0 deletions JetMETCorrections/Modules/test/JetResolutionDemo_cfg.py
Expand Up @@ -23,6 +23,7 @@
##-------------------- User analyzer --------------------------------
process.demo = cms.EDAnalyzer('JetResolutionDemo',
jets = cms.InputTag('slimmedJets'),
rho = cms.InputTag('fixedGridRhoAll'),

payload = cms.string('AK4PFchs'),

Expand Down

0 comments on commit c636ab4

Please sign in to comment.