Skip to content

Commit

Permalink
enable the JER uncertainty variation when MET is not smeared
Browse files Browse the repository at this point in the history
  • Loading branch information
matthieu committed Oct 31, 2016
1 parent b6bb6a0 commit 9d3044a
Show file tree
Hide file tree
Showing 3 changed files with 23 additions and 6 deletions.
4 changes: 2 additions & 2 deletions PhysicsTools/PatAlgos/plugins/PATMETSlimmer.cc
Expand Up @@ -117,8 +117,8 @@ pat::PATMETSlimmer::OneMETShift::OneMETShift(pat::MET::METUncertainty shift_, pa
case pat::MET::NoShift : snprintf(buff, 1023, baseTagStr.c_str(), ""); break;
case pat::MET::JetEnUp : snprintf(buff, 1023, baseTagStr.c_str(), "JetEnUp"); break;
case pat::MET::JetEnDown: snprintf(buff, 1023, baseTagStr.c_str(), "JetEnDown"); break;
case pat::MET::JetResUp : snprintf(buff, 1023, baseTagStr.c_str(), isSmeared?"JetResUp":""); break;
case pat::MET::JetResDown: snprintf(buff, 1023, baseTagStr.c_str(), isSmeared?"JetResDown":""); break;
case pat::MET::JetResUp : snprintf(buff, 1023, baseTagStr.c_str(), "JetResUp"); break;
case pat::MET::JetResDown: snprintf(buff, 1023, baseTagStr.c_str(), "JetResDown"); break;
case pat::MET::MuonEnUp : snprintf(buff, 1023, baseTagStr.c_str(), "MuonEnUp"); break;
case pat::MET::MuonEnDown: snprintf(buff, 1023, baseTagStr.c_str(), "MuonEnDown"); break;
case pat::MET::ElectronEnUp : snprintf(buff, 1023, baseTagStr.c_str(), "ElectronEnUp"); break;
Expand Down
17 changes: 14 additions & 3 deletions PhysicsTools/PatUtils/interface/SmearedJetProducerT.h
Expand Up @@ -131,14 +131,23 @@ class SmearedJetProducerT : public edm::stream::EDProducer<> {
m_genJetMatcher = std::make_shared<pat::GenJetMatcher>(cfg, consumesCollector());

std::int32_t variation = cfg.getParameter<std::int32_t>("variation");
_nomVar=1;
if (variation == 0)
m_systematic_variation = Variation::NOMINAL;
else if (variation == 1)
m_systematic_variation = Variation::UP;
else if (variation == -1)
m_systematic_variation = Variation::DOWN;
else if (variation == 101) {
m_systematic_variation = Variation::NOMINAL;
_nomVar=1;
}
else if (variation == -101) {
m_systematic_variation = Variation::NOMINAL;
_nomVar=-1;
}
else
throw edm::Exception(edm::errors::ConfigFileReadError, "Invalid value for 'variation' parameter. Only -1, 0 or 1 are supported.");
throw edm::Exception(edm::errors::ConfigFileReadError, "Invalid value for 'variation' parameter. Only -1, 0, 1 or 101, -101 are supported.");
}

produces<JetCollection>();
Expand Down Expand Up @@ -234,7 +243,7 @@ class SmearedJetProducerT : public edm::stream::EDProducer<> {
}

double dPt = jet.pt() - genJet->pt();
smearFactor = 1 + (jer_sf - 1.) * dPt / jet.pt();
smearFactor = 1 + _nomVar*(jer_sf - 1.) * dPt / jet.pt();

} else if (jer_sf > 1) {
/*
Expand All @@ -247,7 +256,7 @@ class SmearedJetProducerT : public edm::stream::EDProducer<> {
}

std::normal_distribution<> d(0, sigma);
smearFactor = 1. + d(m_random_generator);
smearFactor = 1. + _nomVar*d(m_random_generator);
} else if (m_debug) {
std::cout << "Impossible to smear this jet" << std::endl;
}
Expand Down Expand Up @@ -298,5 +307,7 @@ class SmearedJetProducerT : public edm::stream::EDProducer<> {
std::mt19937 m_random_generator;

GreaterByPt<T> jetPtComparator;

int _nomVar;
};
#endif
Expand Up @@ -966,7 +966,10 @@ def getVariations(self, process, metModName, identifier,preId, objectCollection,
smear=False
if "Smear" in metModName:
smear=True

else:
smear=True
varyByNsigmas=101

shiftedCollModules['Up'] = self.createShiftedJetResModule(process, smear, objectCollection, +1.*varyByNsigmas,
"Up", postfix)
shiftedCollModules['Down'] = self.createShiftedJetResModule(process, smear, objectCollection, -1.*varyByNsigmas,
Expand Down Expand Up @@ -1464,6 +1467,9 @@ def miniAODConfigurationPost(self, process, postfix):
if hasattr(process, "patPFMetTxyCorr"+postfix):
getattr(process, "patPFMetTxyCorr"+postfix).vertexCollection = cms.InputTag("offlineSlimmedPrimaryVertices")

if self._parameters['computeUncertainties'].value:
getattr(process, "shiftedPatJetResDown"+postfix).genJets = cms.InputTag("slimmedGenJets")
getattr(process, "shiftedPatJetResUp"+postfix).genJets = cms.InputTag("slimmedGenJets")


def miniAODConfiguration(self, process, pfCandCollection, jetCollection,
Expand Down

0 comments on commit 9d3044a

Please sign in to comment.