1 from __future__
import print_function
2 import FWCore.ParameterSet.Config
as cms
32 nanoMetadata = cms.EDProducer(
"UniqueStringProducer",
34 tag = cms.string(
"untagged"),
38 linkedObjects = cms.EDProducer(
"PATObjectCrossLinker",
39 jets=cms.InputTag(
"finalJetsPuppi"),
40 muons=cms.InputTag(
"finalMuons"),
41 electrons=cms.InputTag(
"finalElectrons"),
42 lowPtElectrons=cms.InputTag(
"finalLowPtElectrons"),
43 taus=cms.InputTag(
"finalTaus"),
44 photons=cms.InputTag(
"finalPhotons"),
48 run2_nanoAOD_ANY.toModify(linkedObjects, jets=
"finalJets")
50 simpleCleanerTable = cms.EDProducer(
"NanoAODSimpleCrossCleaner",
51 name=cms.string(
"cleanmask"),
52 doc=cms.string(
"simple cleaning mask with priority to leptons"),
53 jets=cms.InputTag(
"linkedObjects",
"jets"),
54 muons=cms.InputTag(
"linkedObjects",
"muons"),
55 electrons=cms.InputTag(
"linkedObjects",
"electrons"),
56 lowPtElectrons=cms.InputTag(
"linkedObjects",
"lowPtElectrons"),
57 taus=cms.InputTag(
"linkedObjects",
"taus"),
58 photons=cms.InputTag(
"linkedObjects",
"photons"),
59 jetSel=cms.string(
"pt>15"),
60 muonSel=cms.string(
"track.isNonnull && isLooseMuon && isPFMuon && innerTrack.validFraction >= 0.49 && ( isGlobalMuon && globalTrack.normalizedChi2 < 3 && combinedQuality.chi2LocalPosition < 12 && combinedQuality.trkKink < 20 && segmentCompatibility >= 0.303 || segmentCompatibility >= 0.451 )"),
61 electronSel=cms.string(
""),
62 lowPtElectronSel=cms.string(
""),
63 tauSel=cms.string(
""),
64 photonSel=cms.string(
""),
65 jetName=cms.string(
"Jet"),muonName=cms.string(
"Muon"),electronName=cms.string(
"Electron"),
66 lowPtElectronName=cms.string(
"LowPtElectron"),
67 tauName=cms.string(
"Tau"),photonName=cms.string(
"Photon")
71 lhcInfoTable = cms.EDProducer(
"LHCInfoProducer",
72 precision = cms.int32(10),
75 nanoTableTaskCommon = cms.Task(
76 cms.Task(nanoMetadata),
77 jetPuppiTask, jetPuppiForMETTask, jetAK8Task,
78 extraFlagsProducersTask, muonTask, tauTask, boostedTauTask,
79 electronTask , lowPtElectronTask, photonTask,
80 vertexTask, isoTrackTask, jetAK8LepTask,
82 cms.Task(linkedObjects),
83 jetPuppiTablesTask, jetAK8TablesTask,
84 muonTablesTask, fsrTablesTask, tauTablesTask, boostedTauTablesTask,
85 electronTablesTask, lowPtElectronTablesTask, photonTablesTask,
86 globalTablesTask, vertexTablesTask, metTablesTask, simpleCleanerTable, extraFlagsTableTask,
87 isoTrackTablesTask,softActivityTablesTask
91 _nanoTableTaskCommonRun2 = nanoTableTaskCommon.copy()
92 _nanoTableTaskCommonRun2.replace(jetPuppiTask, jetTask)
93 _nanoTableTaskCommonRun2.replace(jetPuppiForMETTask, jetForMETTask)
94 _nanoTableTaskCommonRun2.replace(jetPuppiTablesTask, jetTablesTask)
95 run2_nanoAOD_ANY.toReplaceWith(nanoTableTaskCommon, _nanoTableTaskCommonRun2)
97 nanoSequenceCommon = cms.Sequence(nanoTableTaskCommon)
99 nanoSequenceOnlyFullSim = cms.Sequence(triggerObjectTablesTask)
100 nanoSequenceOnlyData = cms.Sequence(cms.Sequence(protonTablesTask) + lhcInfoTable)
102 nanoSequence = cms.Sequence(nanoSequenceCommon + nanoSequenceOnlyData + nanoSequenceOnlyFullSim)
104 nanoTableTaskFS = cms.Task(
105 genParticleTask, particleLevelTask, jetMCTask, muonMCTask, electronMCTask, lowPtElectronMCTask, photonMCTask,
106 tauMCTask, boostedTauMCTask,
107 metMCTable, ttbarCatMCProducersTask, globalTablesMCTask, cms.Task(btagWeightTable), ttbarCategoryTableTask,
108 genWeightsTableTask, genVertexTablesTask, genParticleTablesTask, genProtonTablesTask, particleLevelTablesTask
111 nanoSequenceFS = cms.Sequence(nanoSequenceCommon + cms.Sequence(nanoTableTaskFS))
114 nanoSequenceMC = nanoSequenceFS.copy()
115 nanoSequenceMC.insert(nanoSequenceFS.index(nanoSequenceCommon)+1,nanoSequenceOnlyFullSim)
118 import RecoTauTag.RecoTau.tools.runTauIdMVA
as tauIdConfig
121 updatedTauName =
"slimmedTausUpdated" 122 tauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug =
False,
123 updatedTauName = updatedTauName,
126 tauIdEmbedder.runTauID()
127 _tauTask = patTauMVAIDsTask.copy()
128 _tauTask.add(process.rerunMvaIsolationTaskForNano)
129 _tauTask.add(finalTaus)
130 process.finalTaus.src = updatedTauName
133 process.tauTask = _tauTask.copy()
139 updatedBoostedTauName =
"slimmedTausBoostedNewID" 140 boostedTauIdEmbedder = tauIdConfig.TauIDEmbedder(process, debug =
False,
141 originalTauName =
"slimmedTausBoosted",
142 updatedTauName = updatedBoostedTauName,
143 postfix =
"BoostedForNano",
145 boostedTauIdEmbedder.runTauID()
146 _boostedTauTask = process.rerunMvaIsolationTaskBoostedForNano.copy()
147 _boostedTauTask.add(getattr(process, updatedBoostedTauName))
148 _boostedTauTask.add(process.finalBoostedTaus)
149 process.finalBoostedTaus.src = updatedBoostedTauName
152 process.boostedTauTask = _boostedTauTask.copy()
156 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
159 nanoAOD_DeepMET_switch = cms.PSet(
160 ResponseTune_Graph = cms.untracked.string(
'RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2018.pb')
162 for modifier
in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016:
163 modifier.toModify(nanoAOD_DeepMET_switch, ResponseTune_Graph=cms.untracked.string(
"RecoMET/METPUSubtraction/data/deepmet/deepmet_resp_v1_2016.pb"))
165 print(
"add DeepMET Producers")
166 process.load(
'RecoMET.METPUSubtraction.deepMETProducer_cfi')
167 process.deepMETsResolutionTune = process.deepMETProducer.clone()
168 process.deepMETsResponseTune = process.deepMETProducer.clone()
169 process.deepMETsResponseTune.graph_path = nanoAOD_DeepMET_switch.ResponseTune_Graph.value()
172 process.nanoSequenceCommon.insert(2,cms.Sequence(process.fullPatMetSequence))
175 from PhysicsTools.PatAlgos.slimming.puppiForMET_cff
import makePuppiesFromMiniAOD
177 process.puppiNoLep.useExistingWeights =
True 178 process.puppi.useExistingWeights =
True 179 run2_nanoAOD_106Xv1.toModify(process.puppiNoLep, useExistingWeights =
False)
180 run2_nanoAOD_106Xv1.toModify(process.puppi, useExistingWeights =
False)
181 print(
"will make Puppies on top of MINIAOD")
184 nanoAOD_PuppiV15_switch = cms.PSet(
185 recoMetFromPFCs = cms.untracked.bool(
False),
186 reclusterJets = cms.untracked.bool(
False),
188 run2_nanoAOD_106Xv1.toModify(nanoAOD_PuppiV15_switch,recoMetFromPFCs=
True,reclusterJets=
True)
189 if nanoAOD_PuppiV15_switch.reclusterJets:
193 addToProcessAndTask(
'ak4PuppiJets', ak4PFJets.clone (src =
'puppi', doAreaFastjet =
True, jetPtMin = 10.), process, task)
195 addJetCollection(process,
197 jetSource = cms.InputTag(
'ak4PuppiJets'),
198 algo =
'AK', rParam=0.4,
199 genJetCollection=cms.InputTag(
'slimmedGenJets'),
200 jetCorrections = (
'AK4PFPuppi', [
'L1FastJet',
'L2Relative',
'L3Absolute',
'L2L3Residual'],
'None'),
201 pfCandidates = cms.InputTag(
'packedPFCandidates'),
202 pvSource = cms.InputTag(
'offlineSlimmedPrimaryVertices'),
203 svSource = cms.InputTag(
'slimmedSecondaryVertices'),
204 muSource =cms.InputTag(
'slimmedMuons'),
205 elSource = cms.InputTag(
'slimmedElectrons'),
206 genParticles= cms.InputTag(
'prunedGenParticles'),
207 getJetMCFlavour=
False 210 process.patJetsPuppi.addGenPartonMatch = cms.bool(
False)
211 process.patJetsPuppi.addGenJetMatch = cms.bool(
False)
213 print(
"nanoAOD_PuppiV15_switch.reclusterJets is true")
215 runMetCorAndUncFromMiniAOD(process,isData=isData,metType=
"Puppi",postfix=
"Puppi",jetFlavor=
"AK4PFPuppi", recoMetFromPFCs=
bool(nanoAOD_PuppiV15_switch.recoMetFromPFCs), reclusterJets=
bool(nanoAOD_PuppiV15_switch.reclusterJets))
216 process.nanoSequenceCommon.insert(2,cms.Sequence(process.puppiMETSequence+process.fullPatMetSequencePuppi))
224 for modname
in electron_id_modules_WorkingPoints_nanoAOD.modules:
227 electronTask_ = process.egmGsfElectronIDTask.copy()
228 electronTask_.add(electronTask.copy())
229 process.electronTask = electronTask_.copy()
230 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
231 modifier.toModify(process.electronMVAValueMapProducer, src =
"slimmedElectronsUpdated")
232 modifier.toModify(process.egmGsfElectronIDs, physicsObjectSrc =
"slimmedElectronsUpdated")
235 for modname
in photon_id_modules_WorkingPoints_nanoAOD.modules:
238 photonTask_ = process.egmPhotonIDTask.copy()
239 photonTask_.add(photonTask.copy())
240 process.photonTask = photonTask_.copy()
241 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_94X2016,run2_nanoAOD_102Xv1:
242 modifier.toModify(process.photonMVAValueMapProducer, src =
"slimmedPhotonsTo106X")
243 modifier.toModify(process.egmPhotonIDs, physicsObjectSrc =
"slimmedPhotonsTo106X")
246 from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties
import runMetCorAndUncFromMiniAOD
250 fixEE2017Params = {
'userawPt':
True,
'ptThreshold':50.0,
'minEtaThreshold':2.65,
'maxEtaThreshold': 3.139},
251 postfix =
"FixEE2017")
252 process.nanoSequenceCommon.insert(2,process.fullPatMetSequenceFixEE2017)
261 addDeepBTag=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepBTag_switch,
262 addDeepFlavour=nanoAOD_addDeepInfoAK4CHS_switch.nanoAOD_addDeepFlavourTag_switch
267 addDeepBTag=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBTag_switch,
268 addDeepBoostedJet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepBoostedJet_switch,
269 addDeepDoubleX=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleX_switch,
270 addDeepDoubleXV2=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addDeepDoubleXV2_switch,
271 addParticleNet=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNet_switch,
272 addParticleNetMass=nanoAOD_addDeepInfoAK8_switch.nanoAOD_addParticleNetMass_switch,
273 jecPayload=nanoAOD_addDeepInfoAK8_switch.jecPayload
276 nanoAOD_tau_switch = cms.PSet(
277 idsToAdd = cms.vstring()
279 (run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(nanoAOD_tau_switch, idsToAdd = [
"deepTau2017v2p1"])
280 (run2_nanoAOD_94XMiniAODv1 | run2_nanoAOD_94X2016 | run2_nanoAOD_94XMiniAODv2 | run2_nanoAOD_102Xv1 | run2_nanoAOD_106Xv1).toModify(process,
lambda p :
nanoAOD_addTauIds(p, nanoAOD_tau_switch.idsToAdd.value()))
281 (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(nanoAOD_tau_switch, idsToAdd = [
"deepTau2018v2p5"])
282 (run2_nanoAOD_106Xv2 | run3_nanoAOD_122).toModify(process,
lambda p :
nanoAOD_addTauIds(p, nanoAOD_tau_switch.idsToAdd.value()))
283 nanoAOD_boostedTau_switch = cms.PSet(
284 idsToAdd = cms.vstring()
286 run2_nanoAOD_106Xv2.toModify(nanoAOD_boostedTau_switch, idsToAdd = [
"2017v2",
"dR0p32017v2",
"newDM2017v2",
"againstEle2018"])
287 run2_nanoAOD_106Xv2.toModify(process,
lambda p :
nanoAOD_addBoostedTauIds(p, nanoAOD_boostedTau_switch.idsToAdd.value()))
293 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
295 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
301 for modifier
in run2_miniAOD_80XLegacy,run2_nanoAOD_94X2016,run2_nanoAOD_94XMiniAODv1,run2_nanoAOD_94XMiniAODv2,run2_nanoAOD_102Xv1,run2_nanoAOD_106Xv1:
303 for modifier
in run2_nanoAOD_94XMiniAODv1, run2_nanoAOD_94XMiniAODv2:
309 pdgSelection=
"?(abs(pdgId) == 11|| abs(pdgId)==13 || abs(pdgId)==15 ||abs(pdgId)== 12 || abs(pdgId)== 14 || abs(pdgId)== 16|| abs(pdgId)== 24|| pdgId== 23)" 311 ptPrecision=
"{}?{}:{}".
format(pdgSelection, CandVars.pt.precision.value(),genParticleTable.variables.pt.precision.value())
312 process.genParticleTable.variables.pt.precision=cms.string(ptPrecision)
313 phiPrecision=
"{} ? {} : {}".
format(pdgSelection, CandVars.phi.precision.value(), genParticleTable.variables.phi.precision.value())
314 process.genParticleTable.variables.phi.precision=cms.string(phiPrecision)
315 etaPrecision=
"{} ? {} : {}".
format(pdgSelection, CandVars.eta.precision.value(), genParticleTable.variables.eta.precision.value())
316 process.genParticleTable.variables.eta.precision=cms.string(etaPrecision)
320 _modifiers = ( run2_miniAOD_80XLegacy |
321 run2_nanoAOD_94XMiniAODv1 |
322 run2_nanoAOD_94XMiniAODv2 |
323 run2_nanoAOD_94X2016 |
324 run2_nanoAOD_102Xv1 |
325 run2_nanoAOD_106Xv1 )
326 _modifiers.toModify(linkedObjects,lowPtElectrons=
"")
327 _modifiers.toModify(simpleCleanerTable,lowPtElectrons=
"")
def addToProcessAndTask(label, module, process, task)
def nanoAOD_addDeepInfoAK8(process, addDeepBTag, addDeepBoostedJet, addDeepDoubleX, addDeepDoubleXV2, addParticleNet, addParticleNetMass, jecPayload)
def nanoAOD_customizeMC(process)
def nanoAOD_activateVID(process)
def nanoWmassGenCustomize(process)
increasing the precision of selected GenParticles.
def nanoAOD_customizeCommon(process)
void print(TMatrixD &m, const char *label=nullptr, bool mathematicaFormat=false)
def nanoAOD_recalibrateMETs(process, isData)
def nanoAOD_addTauIds(process, idsToRun=[])
def nanoAOD_runMETfixEE2017(process, isData)
def nanoAOD_addBoostedTauIds(process, idsToRun=[])
def nanoAOD_addDeepInfoAK4CHS(process, addDeepBTag, addDeepFlavour)
def getPatAlgosToolsTask(process)
def runMetCorAndUncFromMiniAOD(process, metType="PF", jetCollUnskimmed="slimmedJets", photonColl="slimmedPhotons", electronColl="slimmedElectrons", muonColl="slimmedMuons", tauColl="slimmedTaus", pfCandColl="packedPFCandidates", jetFlavor="AK4PFchs", jetCleaning="LepClean", isData=False, manualJetConfig=False, reclusterJets=None, jetSelection="pt>15 && abs(eta)<9.9", recoMetFromPFCs=None, jetCorLabelL3="ak4PFCHSL1FastL2L3Corrector", jetCorLabelRes="ak4PFCHSL1FastL2L3ResidualCorrector", CHS=False, reapplyJEC=True, jecUncFile="", computeMETSignificance=True, fixEE2017=False, fixEE2017Params=None, extractDeepMETs=False, postfix="")
def nanoAOD_customizeData(process)