Skip to content

Commit 4f3e1fd

Browse files
authored
Merge pull request #632 from jhgoh/QGL
QG likelihood, drop partontop at production level
2 parents 180ceec + 818c5f7 commit 4f3e1fd

9 files changed

Lines changed: 79 additions & 50 deletions

File tree

CatProducer/data/QGL_v2b.db

1.51 MB
Binary file not shown.

CatProducer/plugins/CATJetProducer.cc

Lines changed: 10 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -51,7 +51,7 @@ namespace cat {
5151
edm::EDGetTokenT<edm::ValueMap<float>> qgToken_;
5252

5353
const std::vector<std::string> btagNames_;
54-
std::string uncertaintyTag_, payloadName_, jetalgoName_;
54+
std::string uncertaintyTag_, payloadName_;
5555
const std::string jetResFilePath_, jetResSFFilePath_;
5656
bool setGenParticle_;
5757
bool runOnMC_;
@@ -66,15 +66,15 @@ namespace cat {
6666
cat::CATJetProducer::CATJetProducer(const edm::ParameterSet & iConfig) :
6767
src_(consumes<pat::JetCollection>(iConfig.getParameter<edm::InputTag>("src"))),
6868
rhoToken_(consumes<double>(iConfig.getParameter<edm::InputTag>("rho"))),
69+
qgToken_(consumes<edm::ValueMap<float>>(iConfig.getParameter<edm::InputTag>("qgLikelihood"))),
6970
btagNames_(iConfig.getParameter<std::vector<std::string> >("btagNames")),
7071
payloadName_(iConfig.getParameter<std::string>("payloadName")),
7172
jetResFilePath_(edm::FileInPath(iConfig.getParameter<std::string>("jetResFile")).fullPath()),
7273
jetResSFFilePath_(edm::FileInPath(iConfig.getParameter<std::string>("jetResSFFile")).fullPath()),
7374
setGenParticle_(iConfig.getParameter<bool>("setGenParticle"))
7475
{
75-
qgToken_ = consumes<edm::ValueMap<float>>(edm::InputTag("QGTagger", "qgLikelihood"));
76-
jetalgoName_ = iConfig.getParameter<edm::InputTag>("src").label();
77-
produces<std::vector<cat::Jet> >();
76+
77+
produces<std::vector<cat::Jet> >();
7878
}
7979

8080
void cat::CATJetProducer::beginLuminosityBlock(const edm::LuminosityBlock& lumi, const edm::EventSetup&)
@@ -181,17 +181,12 @@ void cat::CATJetProducer::produce(edm::Event & iEvent, const edm::EventSetup & i
181181
aJet.setPartonPdgId(partonPdgId);
182182

183183
// calculate quark/gluon likelihood but only for AK4
184-
185-
if (jetalgoName_=="updatedPatJets")
186-
{
187-
edm::RefToBase<pat::Jet> jetRef(edm::Ref<pat::JetCollection>(src, aPatJetPointer - src->begin()));
188-
float qgLikelihood = (*qgHandle)[jetRef];
189-
aJet.setQGLikelihood(qgLikelihood);
190-
//aJet.setQGLikelihood(aPatJet.userFloat("QGTaggerAK4PFCHS:qgLikelihood"));
191-
}
192-
else // for others, it's undefined
193-
{
194-
aJet.setQGLikelihood(-2.0);
184+
aJet.setQGLikelihood(-2.0);
185+
if ( qgHandle.isValid() ) {
186+
edm::RefToBase<pat::Jet> jetRef(edm::Ref<pat::JetCollection>(src, aPatJetPointer - src->begin()));
187+
float qgLikelihood = (*qgHandle)[jetRef];
188+
aJet.setQGLikelihood(qgLikelihood);
189+
//aJet.setQGLikelihood(aPatJet.userFloat("QGTaggerAK4PFCHS:qgLikelihood"));
195190
}
196191

197192
// setting JEC uncertainty

CatProducer/python/catEventContent_cff.py

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@
2424
'keep patPackedTriggerPrescales_patTrigger__*',
2525
'keep *_lumiMask*_*_*',
2626
'keep *_fixedGridRhoAll_*_', 'keep *_fixedGridRhoFastjetAll_*_*',
27+
'keep *_BadChargedCandidateFilter_*_*', 'keep *_BadPFMuonFilter_*_*',
2728
])
2829

2930
catEventContentRD.extend([
@@ -43,7 +44,7 @@
4344
'keep *_GenTtbarCategories_*_*',
4445
'keep *_GenTtbarCategories*_*_*',
4546
'keep *_catGenTops_*_*',
46-
'keep *_partonTop_*_*',
47+
#'keep *_partonTop_*_*', ## Can be built on the fly from prunedGenParticles
4748
'keep *_pseudoTop_*_*',
4849
'keep *_genJetHadronFlavour_*_*',
4950
])

CatProducer/python/catTools_cff.py

Lines changed: 7 additions & 32 deletions
Original file line numberDiff line numberDiff line change
@@ -3,8 +3,6 @@
33
import os
44
print os.environ['CMSSW_BASE']
55

6-
from CondCore.DBCommon.CondDBSetup_cfi import *
7-
86
def catTool(process, runOnMC=True, useMiniAOD=True):
97
if runOnMC:
108
from CATTools.CatProducer.pileupWeight_cff import pileupWeightMap
@@ -47,20 +45,9 @@ def catTool(process, runOnMC=True, useMiniAOD=True):
4745
print "JEC based on", process.jec.connect
4846

4947
if useMiniAOD: ## corrections when using miniAOD
50-
#######################################################################
51-
## Event filters from MET https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETOptionalFiltersRun2
52-
## New muon filters to be run on the fly
53-
process.load('RecoMET.METFilters.BadPFMuonFilter_cfi')
54-
process.BadPFMuonFilter.muons = cms.InputTag("slimmedMuons")
55-
process.BadPFMuonFilter.PFCandidates = cms.InputTag("packedPFCandidates")
48+
from CATTools.CatProducer.patTools.metFilters_cff import enableAdditionalMETFilters
49+
process = enableAdditionalMETFilters(process, runOnMC)
5650

57-
process.load('RecoMET.METFilters.BadChargedCandidateFilter_cfi')
58-
process.BadChargedCandidateFilter.muons = cms.InputTag("slimmedMuons")
59-
process.BadChargedCandidateFilter.PFCandidates = cms.InputTag("packedPFCandidates")
60-
61-
process.nEventsFiltered = cms.EDProducer("EventCountProducer")
62-
63-
process.p += (process.BadPFMuonFilter*process.BadChargedCandidateFilter*process.nEventsFiltered)
6451
#######################################################################
6552
# adding puppi https://twiki.cern.ch/twiki/bin/view/CMS/PUPPI
6653
#process.catJetsPuppi.src = cms.InputTag("slimmedJetsPuppi")
@@ -78,24 +65,7 @@ def catTool(process, runOnMC=True, useMiniAOD=True):
7865
#jetToolbox( process, 'ak4', 'ak4JetSubs', 'out', PUMethod='CHS', miniAOD=True, addQGTagger=True ) ### For example
7966

8067
#process.options.allowUnscheduled = cms.untracked.bool(True)
81-
qgDatabaseVersion = 'v1' # check https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion
82-
QGPoolDBESSource = cms.ESSource("PoolDBESSource",
83-
CondDBSetup,
84-
toGet = cms.VPSet(),
85-
connect = cms.string('frontier://FrontierProd/CMS_COND_PAT_000')
86-
)
8768

88-
for type in ['AK4PFchs','AK4PFchs_antib']:
89-
QGPoolDBESSource.toGet.extend(cms.VPSet(cms.PSet(
90-
record = cms.string('QGLikelihoodRcd'),
91-
tag = cms.string('QGLikelihoodObject_'+qgDatabaseVersion+'_'+type),
92-
label = cms.untracked.string('QGL_'+type)
93-
)))
94-
process.load('RecoJets.JetProducers.QGTagger_cfi')
95-
process.QGTagger.srcJets = cms.InputTag("updatedPatJets") # Could be reco::PFJetCollection or pat::JetCollection (both AOD and miniAOD)
96-
#process.QGTagger.srcJets = cms.InputTag("slimmedJets") # Could be reco::PFJetCollection or pat::JetCollection (both AOD and miniAOD)
97-
#process.QGTagger.srcJets = cms.InputTag("selectedPatJetsAK4PFCHS") # Could be reco::PFJetCollection or pat::JetCollection (both AOD and miniAOD)
98-
process.QGTagger.jetsLabel = cms.string('QGL_AK4PFchs') # Other options: see https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion
9969
#######################################################################
10070
## applying new jec on the fly
10171
process.load("PhysicsTools.PatAlgos.producersLayer1.jetUpdater_cff")
@@ -139,6 +109,11 @@ def catTool(process, runOnMC=True, useMiniAOD=True):
139109
initialSeed = cms.untracked.uint32(1),
140110
)
141111

112+
## qg-likelihood
113+
# check https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion
114+
from CATTools.CatProducer.patTools.jetQGLikelihood_cff import enableQGLikelihood
115+
process = enableQGLikelihood(process, qgDatabaseVersion="v2b", runOnMC=runOnMC, useMiniAOD=useMiniAOD)
116+
142117
## #######################################################################
143118
## # MET corrections from https://twiki.cern.ch/twiki/bin/view/CMS/MissingETUncertaintyPrescription
144119
#from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncFromMiniAOD
Lines changed: 35 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,35 @@
1+
import FWCore.ParameterSet.Config as cms
2+
# Jet quark-gluon likelihood
3+
# https://twiki.cern.ch/twiki/bin/viewauth/CMS/QuarkGluonLikelihood
4+
# https://twiki.cern.ch/twiki/bin/viewauth/CMS/QGDataBaseVersion
5+
6+
from CondCore.DBCommon.CondDBSetup_cfi import *
7+
def enableQGLikelihood(process, qgDatabaseVersion='v2b', runOnMC=True, useMiniAOD=True):
8+
9+
process.QGPoolDBESSource = cms.ESSource("PoolDBESSource",
10+
CondDBSetup,
11+
toGet = cms.VPSet(),
12+
#connect = cms.string('frontier://FrontierProd/CMS_COND_PAT_000')
13+
connect = cms.string('sqlite_fip:CATTools/CatProducer/data/QGL_%s.db' % qgDatabaseVersion),
14+
)
15+
16+
process.load('RecoJets.JetProducers.QGTagger_cfi')
17+
for type in ['AK4PFchs']:#, 'AK4PF',]:
18+
process.QGPoolDBESSource.toGet.extend(cms.VPSet(cms.PSet(
19+
record = cms.string('QGLikelihoodRcd'),
20+
tag = cms.string('QGLikelihoodObject_'+qgDatabaseVersion+'_'+type),
21+
label = cms.untracked.string('QGL_'+type)
22+
)))
23+
process.es_prefer_QGPoolDBESSource = cms.ESPrefer("PoolDBESSource","QGPoolDBESSource")
24+
25+
process.QGTagger.jetsLabel = cms.string('QGL_AK4PFchs')
26+
#if useMiniAOD:
27+
# process.QGTagger.srcJets = cms.InputTag("slimmedJets")
28+
#else:
29+
# process.QGTagger.srcJets = cms.InputTag("updatedPatJets")
30+
# #process.QGTagger.srcJets = cms.InputTag("selectedPatJetsAK4PFCHS")
31+
32+
process.catJets.qgLikelihood = 'QGTagger:qgLikelihood'
33+
process.QGTagger.srcJets = process.catJets.src
34+
35+
return process
Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
import FWCore.ParameterSet.Config as cms
2+
3+
def enableAdditionalMETFilters(process, runOnMC=True):
4+
#######################################################################
5+
## Event filters from MET https://twiki.cern.ch/twiki/bin/viewauth/CMS/MissingETOptionalFiltersRun2
6+
## New muon filters to be run on the fly
7+
process.load('RecoMET.METFilters.BadPFMuonFilter_cfi')
8+
process.BadPFMuonFilter.muons = cms.InputTag("slimmedMuons")
9+
process.BadPFMuonFilter.PFCandidates = cms.InputTag("packedPFCandidates")
10+
11+
process.load('RecoMET.METFilters.BadChargedCandidateFilter_cfi')
12+
process.BadChargedCandidateFilter.muons = cms.InputTag("slimmedMuons")
13+
process.BadChargedCandidateFilter.PFCandidates = cms.InputTag("packedPFCandidates")
14+
15+
if not hasattr(process, 'nEventsFiltered'):
16+
process.nEventsFiltered = cms.EDProducer("EventCountProducer")
17+
process.p += process.nEventsFiltered
18+
process.p += (process.BadPFMuonFilter*process.BadChargedCandidateFilter*process.nEventsFiltered)
19+
20+
return process

CatProducer/python/producers/jetProducer_cfi.py

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,8 @@
88
jetResFile = cms.string("CATTools/CatProducer/data/JER/Spring16_25nsV6_MC_PtResolution_AK4PFchs.txt"),
99
jetResSFFile = cms.string("CATTools/CatProducer/data/JER/Spring16_25nsV6_MC_SF_AK4PFchs.txt"),
1010
setGenParticle = cms.bool(True),
11+
12+
qgLikelihood = cms.InputTag(""), ## Keep this to be invalid and let it to be controlled by patTools/jetsQGLikelihood_cff.py
1113
)
1214

1315
catJetsPuppi = catJets.clone(

DataFormats/src/Jet.cc

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,8 @@ Jet::Jet(const reco::LeafCandidate & aJet) :
2525
partonPdgId_(0),
2626
shiftedEnDown_(1),
2727
shiftedEnUp_(1),
28-
fJER_(1), fJERUp_(1), fJERDown_(1)
28+
fJER_(1), fJERUp_(1), fJERDown_(1),
29+
qgLikelihood_(-2)
2930
{}
3031

3132
/// destructor

0 commit comments

Comments
 (0)