CMS 3D CMS Logo

miniAOD_tools.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
4 
5 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
6 
8  process.patMuons.isoDeposits = cms.PSet()
9  process.patElectrons.isoDeposits = cms.PSet()
10  process.patTaus.isoDeposits = cms.PSet()
11  process.patPhotons.isoDeposits = cms.PSet()
12  #
13  process.patMuons.embedTrack = True # used for IDs
14  process.patMuons.embedCombinedMuon = True # used for IDs
15  process.patMuons.embedMuonBestTrack = True # used for IDs
16  process.patMuons.embedStandAloneMuon = True # maybe?
17  process.patMuons.embedPickyMuon = False # no, use best track
18  process.patMuons.embedTpfmsMuon = False # no, use best track
19  process.patMuons.embedDytMuon = False # no, use best track
20  process.patMuons.addPuppiIsolation = cms.bool(True)
21  process.patMuons.puppiIsolationChargedHadrons = cms.InputTag("muonPUPPIIsolation","h+-DR040-ThresholdVeto000-ConeVeto000")
22  process.patMuons.puppiIsolationNeutralHadrons = cms.InputTag("muonPUPPIIsolation","h0-DR040-ThresholdVeto000-ConeVeto001")
23  process.patMuons.puppiIsolationPhotons = cms.InputTag("muonPUPPIIsolation","gamma-DR040-ThresholdVeto000-ConeVeto001")
24  process.patMuons.puppiNoLeptonsIsolationChargedHadrons = cms.InputTag("muonPUPPINoLeptonsIsolation","h+-DR040-ThresholdVeto000-ConeVeto000")
25  process.patMuons.puppiNoLeptonsIsolationNeutralHadrons = cms.InputTag("muonPUPPINoLeptonsIsolation","h0-DR040-ThresholdVeto000-ConeVeto001")
26  process.patMuons.puppiNoLeptonsIsolationPhotons = cms.InputTag("muonPUPPINoLeptonsIsolation","gamma-DR040-ThresholdVeto000-ConeVeto001")
27 
28  process.patMuons.computeMiniIso = True
29  process.patMuons.computeMuonMVA = True
30  process.patMuons.computeSoftMuonMVA = True
31 
32  process.patMuons.addTriggerMatching = True
33  from Configuration.Eras.Modifier_run2_muon_2016_cff import run2_muon_2016
34  from Configuration.Eras.Modifier_run2_muon_2017_cff import run2_muon_2017
35  from Configuration.Eras.Modifier_run2_muon_2018_cff import run2_muon_2018
36  run2_muon_2016.toModify( process.patMuons, effectiveAreaVec = [0.0735,0.0619,0.0465,0.0433,0.0577])
37  run2_muon_2017.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064])
38  run2_muon_2018.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064])
39  run2_muon_2016.toModify( process.patMuons, mvaTrainingFile = "RecoMuon/MuonIdentification/data/mu_2016_BDTG.weights.xml")
40 
41  process.patMuons.computePuppiCombinedIso = True
42  #
43  # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer
44  process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core
45  process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster
46  process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster
47  process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster
48  process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters
49  process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters
50  process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters
51  process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters
52  process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer
53  process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
54  process.patElectrons.usePfCandidateMultiMap = True
55  process.patElectrons.pfCandidateMultiMap = cms.InputTag("reducedEgamma","reducedGsfElectronPfCandMap")
56  process.patElectrons.electronIDSources = cms.PSet()
57  from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
58  run2_miniAOD_80XLegacy.toModify(process.patElectrons,
59  addPFClusterIso = cms.bool(True),
60  ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleEcalPFClusIso"),
61  hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleHcalPFClusIso"))
62  from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17
63  run2_miniAOD_94XFall17.toModify(process.patElectrons,
64  addPFClusterIso = cms.bool(True),
65  ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleEcalPFClusIso"),
66  hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "eleHcalPFClusIso"))
67 
68  #add puppi isolation in miniAOD
69  process.patElectrons.addPuppiIsolation = cms.bool(True)
70  process.patElectrons.puppiIsolationChargedHadrons = cms.InputTag("egmElectronPUPPIIsolation","h+-DR030-BarVeto000-EndVeto001")
71  process.patElectrons.puppiIsolationNeutralHadrons = cms.InputTag("egmElectronPUPPIIsolation","h0-DR030-BarVeto000-EndVeto000")
72  process.patElectrons.puppiIsolationPhotons = cms.InputTag("egmElectronPUPPIIsolation","gamma-DR030-BarVeto000-EndVeto008")
73  process.patElectrons.puppiNoLeptonsIsolationChargedHadrons = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","h+-DR030-BarVeto000-EndVeto001")
74  process.patElectrons.puppiNoLeptonsIsolationNeutralHadrons = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","h0-DR030-BarVeto000-EndVeto000")
75  process.patElectrons.puppiNoLeptonsIsolationPhotons = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","gamma-DR030-BarVeto000-EndVeto008")
76 
77  process.patElectrons.computeMiniIso = cms.bool(True)
78 
79  process.elPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
80  process.elPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
81  process.elPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
82  process.elPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
83  process.elPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
84  #
85  process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster
86  process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster
87  process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters
88  process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters
89  process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer
90 
91  #add puppi isolation in miniAOD
92  process.patPhotons.addPuppiIsolation = cms.bool(True)
93  process.patPhotons.puppiIsolationChargedHadrons = cms.InputTag("egmPhotonPUPPIIsolation","h+-DR030-")
94  process.patPhotons.puppiIsolationNeutralHadrons = cms.InputTag("egmPhotonPUPPIIsolation","h0-DR030-")
95  process.patPhotons.puppiIsolationPhotons = cms.InputTag("egmPhotonPUPPIIsolation","gamma-DR030-")
96 
97  from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
98  run2_miniAOD_80XLegacy.toModify(process.patPhotons,
99  addPFClusterIso = cms.bool(True),
100  ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoEcalPFClusIso"),
101  hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoHcalPFClusIso"))
102  from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17
103  run2_miniAOD_94XFall17.toModify(process.patPhotons,
104  addPFClusterIso = cms.bool(True),
105  ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoEcalPFClusIso"),
106  hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "phoHcalPFClusIso"))
107  #the 80X legacy customsations are done in ootPhotonProducer for OOT photons
108  run2_miniAOD_94XFall17.toModify(process.patOOTPhotons,
109  addPFClusterIso = cms.bool(True),
110  ecalPFClusterIsoMap = cms.InputTag("reducedEgamma", "ootPhoEcalPFClusIso"),
111  hcalPFClusterIsoMap = cms.InputTag("reducedEgamma", "ootPhoHcalPFClusIso"))
112 
113 
114  process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons")
115  process.patPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
116 
117  process.phPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
118  process.phPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
119  process.phPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
120  process.phPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
121  process.phPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
122  #
123  process.patOOTPhotons.photonSource = cms.InputTag("reducedEgamma","reducedOOTPhotons")
124  process.patOOTPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
125  #
126  process.selectedPatJets.cut = cms.string("pt > 10")
127  process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))")
128 
129  from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
130  phase2_muon.toModify(process.selectedPatMuons, cut = "pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose') || muonID('ME0MuonArbitrated') || muonID('GEMMuonArbitrated')) )")
131 
132  process.selectedPatElectrons.cut = cms.string("")
133  process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFindingNewDMs')> 0.5")
134  process.selectedPatPhotons.cut = cms.string("")
135 
136  from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
137 
138  from PhysicsTools.PatAlgos.slimming.applySubstructure_cff import applySubstructure
139  applySubstructure( process )
140 
141 
142  #
143  from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone
144  switchOnTriggerStandAlone( process, outputModule = '' )
145  process.patTrigger.packTriggerPathNames = cms.bool(True)
146  #
147  # apply type I + other PFMEt corrections to pat::MET object
148  # and estimate systematic uncertainties on MET
149 
150  from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncForMiniAODProduction
151  runMetCorAndUncForMiniAODProduction(process, metType="PF",
152  jetCollUnskimmed="patJets")
153 
154  #caloMET computation
155  from PhysicsTools.PatAlgos.tools.metTools import addMETCollection
156  addMETCollection(process,
157  labelName = "patCaloMet",
158  metSource = "caloMetM"
159  )
160 
161  #noHF pfMET =========
162 
163  task = getPatAlgosToolsTask(process)
164 
165  process.noHFCands = cms.EDFilter("GenericPFCandidateSelector",
166  src=cms.InputTag("particleFlow"),
167  cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0")
168  )
169  task.add(process.noHFCands)
170 
172  pfCandColl=cms.InputTag("noHFCands"),
173  recoMetFromPFCs=True, #needed for HF removal
174  jetSelection="pt>15 && abs(eta)<3.",
175  postfix="NoHF"
176  )
177 
178  process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi')
179  task.add(process.slimmedMETs)
180  addToProcessAndTask('slimmedMETsNoHF', process.slimmedMETs.clone(), process, task)
181  process.slimmedMETsNoHF.src = cms.InputTag("patMETsNoHF")
182  process.slimmedMETsNoHF.rawVariation = cms.InputTag("patPFMetNoHF")
183  process.slimmedMETsNoHF.t1Uncertainties = cms.InputTag("patPFMetT1%sNoHF")
184  process.slimmedMETsNoHF.t01Variation = cms.InputTag("patPFMetT0pcT1NoHF")
185  process.slimmedMETsNoHF.t1SmearedVarsAndUncs = cms.InputTag("patPFMetT1Smear%sNoHF")
186  process.slimmedMETsNoHF.tXYUncForRaw = cms.InputTag("patPFMetTxyNoHF")
187  process.slimmedMETsNoHF.tXYUncForT1 = cms.InputTag("patPFMetT1TxyNoHF")
188  process.slimmedMETsNoHF.tXYUncForT01 = cms.InputTag("patPFMetT0pcT1TxyNoHF")
189  process.slimmedMETsNoHF.tXYUncForT1Smear = cms.InputTag("patPFMetT1SmearTxyNoHF")
190  process.slimmedMETsNoHF.tXYUncForT01Smear = cms.InputTag("patPFMetT0pcT1SmearTxyNoHF")
191  del process.slimmedMETsNoHF.caloMET
192  # ================== NoHF pfMET
193 
194  # ================== CHSMET
195  process.CHSCands = cms.EDFilter("CandPtrSelector",
196  src=cms.InputTag("packedPFCandidates"),
197  cut=cms.string("fromPV(0) > 0")
198  )
199  task.add(process.CHSCands)
200 
201  process.pfMetCHS = cms.EDProducer("PFMETProducer",
202  src = cms.InputTag("CHSCands"),
203  alias = cms.string('pfMet'),
204  globalThreshold = cms.double(0.0),
205  calculateSignificance = cms.bool(False),
206  )
207  task.add(process.pfMetCHS)
208 
209  addMETCollection(process,
210  labelName = "patCHSMet",
211  metSource = "pfMetCHS"
212  )
213 
214  process.patCHSMet.computeMETSignificance = cms.bool(False)
215 
216  # ================== CHSMET
217 
218  # ================== TrkMET
219  process.TrkCands = cms.EDFilter("CandPtrSelector",
220  src=cms.InputTag("packedPFCandidates"),
221  cut=cms.string("charge()!=0 && pvAssociationQuality()>=4 && vertexRef().key()==0")
222  )
223  task.add(process.TrkCands)
224 
225  process.pfMetTrk = cms.EDProducer("PFMETProducer",
226  src = cms.InputTag("TrkCands"),
227  alias = cms.string('pfMet'),
228  globalThreshold = cms.double(0.0),
229  calculateSignificance = cms.bool(False),
230  )
231 
232  task.add(process.pfMetTrk)
233 
234  addMETCollection(process,
235  labelName = "patTrkMet",
236  metSource = "pfMetTrk"
237  )
238 
239  process.patTrkMet.computeMETSignificance = cms.bool(False)
240 
241  # ================== TrkMET
242 
243 
244  ## PU JetID
245  process.load("RecoJets.JetProducers.PileupJetID_cfi")
246  task.add(process.pileUpJetIDTask)
247 
248  process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ]
249  process.patJets.userData.userInts.src = [ cms.InputTag("pileupJetId:fullId"), ]
250 
251  ## Quark Gluon Likelihood
252  process.load('RecoJets.JetProducers.QGTagger_cfi')
253  task.add(process.QGTaggerTask)
254 
255  process.patJets.userData.userFloats.src += [ cms.InputTag('QGTagger:qgLikelihood'), ]
256 
257  ## DeepCSV meta discriminators (simple arithmethic on output probabilities)
258  process.load('RecoBTag.Combined.deepFlavour_cff')
259  task.add(process.pfDeepCSVDiscriminatorsJetTags)
260  process.patJets.discriminatorSources.extend([
261  cms.InputTag('pfDeepCSVDiscriminatorsJetTags:BvsAll' ),
262  cms.InputTag('pfDeepCSVDiscriminatorsJetTags:CvsB' ),
263  cms.InputTag('pfDeepCSVDiscriminatorsJetTags:CvsL' ),
264  ])
265 
266  ## CaloJets
267  process.caloJetMap = cms.EDProducer("RecoJetDeltaRValueMapProducer",
268  src = process.patJets.jetSource,
269  matched = cms.InputTag("ak4CaloJets"),
270  distMax = cms.double(0.4),
271  values = cms.vstring('pt','emEnergyFraction'),
272  valueLabels = cms.vstring('pt','emEnergyFraction'),
273  lazyParser = cms.bool(True) )
274  task.add(process.caloJetMap)
275  process.patJets.userData.userFloats.src += [ cms.InputTag("caloJetMap:pt"), cms.InputTag("caloJetMap:emEnergyFraction") ]
276 
277  #Muon object modifications
278  from PhysicsTools.PatAlgos.slimming.muonIsolationsPUPPI_cfi import makeInputForPUPPIIsolationMuon
280 
281  #EGM object modifications
282  from PhysicsTools.PatAlgos.slimming.egmIsolationsPUPPI_cfi import makeInputForPUPPIIsolationEgm
284  from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma_modifications
285  process.slimmedElectrons.modifierConfig.modifications = egamma_modifications
286  process.slimmedPhotons.modifierConfig.modifications = egamma_modifications
287 
288  #VID Electron IDs
289  process.patElectrons.addElectronID = cms.bool(True)
290  electron_ids = ['RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
291  'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV71_cff',
292  'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff',
293  'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff',
294  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff',
295  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff',
296  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff',
297  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff',
298  'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff',
299  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff',
300  'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff',
301  ]
302  switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD, task)
303  process.egmGsfElectronIDs.physicsObjectSrc = \
304  cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
305  process.electronMVAValueMapProducer.src = \
306  cms.InputTag('reducedEgamma','reducedGedGsfElectrons')
307  for idmod in electron_ids:
308  setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection,None,False,task)
309 
310  #VID Photon IDs
311  process.patPhotons.addPhotonID = cms.bool(True)
312  photon_ids = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_TrueVtx_cff',
313  'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff',
314  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1p1_cff',
315  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff',
316  'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff',
317  'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff']
318  switchOnVIDPhotonIdProducer(process,DataFormat.AOD, task)
319  process.egmPhotonIDs.physicsObjectSrc = \
320  cms.InputTag("reducedEgamma","reducedGedPhotons")
321  process.photonMVAValueMapProducer.src = \
322  cms.InputTag('reducedEgamma','reducedGedPhotons')
323  for idmod in photon_ids:
324  setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection,None,False,task)
325 
326  #add the cut base IDs bitmaps of which cuts passed
327  from RecoEgamma.EgammaTools.egammaObjectModifications_tools import makeVIDBitsModifier
328  egamma_modifications.append(makeVIDBitsModifier(process,"egmGsfElectronIDs","egmPhotonIDs"))
329 
330  #-- Adding boosted taus
331  from RecoTauTag.Configuration.boostedHPSPFTaus_cfi import addBoostedTaus
332  addBoostedTaus(process)
333  process.load("RecoTauTag.Configuration.RecoPFTauTag_cff")
334  process.load("RecoTauTag.Configuration.HPSPFTaus_cff")
335  #-- Adding customization for 94X 2017 legacy reMniAOD
336  from Configuration.Eras.Modifier_run2_miniAOD_94XFall17_cff import run2_miniAOD_94XFall17
337  _makePatTausTaskWithRetrainedMVATauID = process.makePatTausTask.copy()
338  _makePatTausTaskWithRetrainedMVATauID.add(process.hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask,
339  process.hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask,
340  process.hpsPFTauIsolationSums03Task,
341  process.hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTTask)
342  run2_miniAOD_94XFall17.toReplaceWith(
343  process.makePatTausTask, _makePatTausTaskWithRetrainedMVATauID
344  )
345  #-- Adding DeepTauID
346  updatedTauName = 'slimmedTausDeepIDs'
347  noUpdatedTauName = 'slimmedTausNoDeepIDs'
348  import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig
349  tauIdEmbedder = tauIdConfig.TauIDEmbedder(
350  process, cms, debug = False,
351  updatedTauName = updatedTauName,
352  toKeep = ['deepTau2017v2']
353  )
354  tauIdEmbedder.runTauID()
355  addToProcessAndTask(noUpdatedTauName, process.slimmedTaus.clone(),process,task)
356  delattr(process, 'slimmedTaus')
357  process.deepTau2017v2.taus = noUpdatedTauName
358  process.slimmedTaus = getattr(process, updatedTauName).clone(
359  src = noUpdatedTauName
360  )
361  process.rerunMvaIsolationTask.add(process.slimmedTaus)
362  task.add(process.rerunMvaIsolationTask)
363  #-- Adding customization for 80X 2016 legacy reMiniAOD and 2018 heavy ions
364  from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy
365  from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
366  _makePatTausTaskWithTauReReco = process.makePatTausTask.copy()
367  _makePatTausTaskWithTauReReco.add(process.PFTauTask)
368  (run2_miniAOD_80XLegacy | pp_on_AA_2018).toReplaceWith(
369  process.makePatTausTask, _makePatTausTaskWithTauReReco
370  )
371 
372  # Adding puppi jets
373  if not hasattr(process, 'ak4PFJetsPuppi'): #MM: avoid confilct with substructure call
374  process.load('RecoJets.JetProducers.ak4PFJetsPuppi_cfi')
375  task.add(process.ak4PFJets)
376  task.add(process.ak4PFJetsPuppi)
377  process.ak4PFJetsPuppi.doAreaFastjet = True # even for standard ak4PFJets this is overwritten in RecoJets/Configuration/python/RecoPFJets_cff
378  from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX
379  process.ak4PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex",
380  j2tParametersVX,
381  jets = cms.InputTag("ak4PFJetsPuppi")
382  )
383  task.add(process.ak4PFJetsPuppiTracksAssociatorAtVertex)
384  process.patJetPuppiCharge = cms.EDProducer("JetChargeProducer",
385  src = cms.InputTag("ak4PFJetsPuppiTracksAssociatorAtVertex"),
386  var = cms.string('Pt'),
387  exp = cms.double(1.0)
388  )
389  task.add(process.patJetPuppiCharge)
390 
391  noDeepFlavourDiscriminators = [x.value() for x in process.patJets.discriminatorSources if not "DeepFlavour" in x.value()]
392  addJetCollection(process, postfix = "", labelName = 'Puppi', jetSource = cms.InputTag('ak4PFJetsPuppi'),
393  jetCorrections = ('AK4PFPuppi', ['L2Relative', 'L3Absolute'], ''),
394  pfCandidates = cms.InputTag("particleFlow"),
395  algo= 'AK', rParam = 0.4, btagDiscriminators = noDeepFlavourDiscriminators
396  )
397 
398  process.patJetGenJetMatchPuppi.matched = 'slimmedGenJets'
399 
400  process.patJetsPuppi.jetChargeSource = cms.InputTag("patJetPuppiCharge")
401 
402  process.selectedPatJetsPuppi.cut = cms.string("pt > 15")
403 
404  from PhysicsTools.PatAlgos.slimming.applyDeepBtagging_cff import applyDeepBtagging
405  applyDeepBtagging( process )
406 
407  addToProcessAndTask('slimmedJetsPuppiNoMultiplicities', process.slimmedJetsNoDeepFlavour.clone(), process, task)
408  process.slimmedJetsPuppiNoMultiplicities.src = cms.InputTag("selectedPatJetsPuppi")
409  process.slimmedJetsPuppiNoMultiplicities.packedPFCandidates = cms.InputTag("packedPFCandidates")
410 
411  from PhysicsTools.PatAlgos.patPuppiJetSpecificProducer_cfi import patPuppiJetSpecificProducer
412  from PhysicsTools.PatAlgos.tools.jetTools import updateJetCollection
413  process.patPuppiJetSpecificProducer = patPuppiJetSpecificProducer.clone(
414  src=cms.InputTag("slimmedJetsPuppiNoMultiplicities"),
415  )
416  task.add(process.patPuppiJetSpecificProducer)
417  updateJetCollection(
418  process,
419  labelName = 'PuppiJetSpecific',
420  jetSource = cms.InputTag('slimmedJetsPuppiNoMultiplicities'),
421  )
422  process.updatedPatJetsPuppiJetSpecific.userData.userFloats.src = ['patPuppiJetSpecificProducer:puppiMultiplicity', 'patPuppiJetSpecificProducer:neutralPuppiMultiplicity', 'patPuppiJetSpecificProducer:neutralHadronPuppiMultiplicity', 'patPuppiJetSpecificProducer:photonPuppiMultiplicity', 'patPuppiJetSpecificProducer:HFHadronPuppiMultiplicity', 'patPuppiJetSpecificProducer:HFEMPuppiMultiplicity' ]
423  process.slimmedJetsPuppi = process.selectedUpdatedPatJetsPuppiJetSpecific.clone()
424  delattr(process, 'selectedUpdatedPatJetsPuppiJetSpecific')
425 
426  task.add(process.slimmedJetsPuppi)
427 
428  ## puppi met
429  from PhysicsTools.PatAlgos.slimming.puppiForMET_cff import makePuppies
430  makePuppies( process );
431 
432  runMetCorAndUncForMiniAODProduction(process, metType="Puppi",
433  pfCandColl=cms.InputTag("puppiForMET"),
434  jetCollUnskimmed="slimmedJetsPuppi",
435  recoMetFromPFCs=True,
436  jetFlavor="AK4PFPuppi",
437  postfix="Puppi"
438  )
439 
440  process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi')
441  task.add(process.slimmedMETs)
442  addToProcessAndTask('slimmedMETsPuppi', process.slimmedMETs.clone(), process, task)
443  process.slimmedMETsPuppi.src = cms.InputTag("patMETsPuppi")
444  process.slimmedMETsPuppi.rawVariation = cms.InputTag("patPFMetPuppi")
445  process.slimmedMETsPuppi.t1Uncertainties = cms.InputTag("patPFMetT1%sPuppi")
446  process.slimmedMETsPuppi.t01Variation = cms.InputTag("patPFMetT0pcT1Puppi")
447  process.slimmedMETsPuppi.t1SmearedVarsAndUncs = cms.InputTag("patPFMetT1Smear%sPuppi")
448  process.slimmedMETsPuppi.tXYUncForRaw = cms.InputTag("patPFMetTxyPuppi")
449  process.slimmedMETsPuppi.tXYUncForT1 = cms.InputTag("patPFMetT1TxyPuppi")
450  process.slimmedMETsPuppi.tXYUncForT01 = cms.InputTag("patPFMetT0pcT1TxyPuppi")
451  process.slimmedMETsPuppi.tXYUncForT1Smear = cms.InputTag("patPFMetT1SmearTxyPuppi")
452  process.slimmedMETsPuppi.tXYUncForT01Smear = cms.InputTag("patPFMetT0pcT1SmearTxyPuppi")
453  del process.slimmedMETsPuppi.caloMET
454 
455  # add DetIdAssociatorRecords to EventSetup (for isolatedTracks)
456  process.load("TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff")
457 
458  # EGamma objects from HGCal are not yet in GED
459  # so add companion collections for Phase-II MiniAOD production
460  from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
461  process.load("RecoEgamma.EgammaTools.slimmedEgammaFromMultiCl_cff")
462  phase2_hgcal.toModify(task, func=lambda t: t.add(process.slimmedEgammaFromMultiClTask))
463 
464  # L1 pre-firing weights for 2016 and 2017
465  from Configuration.Eras.Modifier_run2_L1prefiring_cff import run2_L1prefiring
466  from Configuration.Eras.Modifier_stage1L1Trigger_cff import stage1L1Trigger
467  from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017
468  process.load("PhysicsTools.PatUtils.L1ECALPrefiringWeightProducer_cff")
469  stage1L1Trigger.toModify(process.prefiringweight, DataEra = "2016BtoH")
470  stage2L1Trigger_2017.toModify(process.prefiringweight, DataEra = "2017BtoF")
471  run2_L1prefiring.toModify(task, func=lambda t: t.add(process.prefiringweight))
472 
473 def miniAOD_customizeMC(process):
474  task = getPatAlgosToolsTask(process)
475  #GenJetFlavourInfos
476  process.load("PhysicsTools.JetMCAlgos.HadronAndPartonSelector_cfi")
477  task.add(process.selectedHadronsAndPartons)
478  task.add(process.selectedHadronsAndPartonsForGenJetsFlavourInfos)
479 
480  process.load("PhysicsTools.JetMCAlgos.AK4GenJetFlavourInfos_cfi")
481  task.add(process.ak4GenJetFlavourInfos)
482 
483  process.load('PhysicsTools.PatAlgos.slimming.slimmedGenJetsFlavourInfos_cfi')
484  task.add(process.slimmedGenJetsFlavourInfos)
485 
486  #slimmed pileup information
487  process.load('PhysicsTools.PatAlgos.slimming.slimmedAddPileupInfo_cfi')
488  task.add(process.slimmedAddPileupInfo)
489 
490  process.muonMatch.matched = "prunedGenParticles"
491  process.electronMatch.matched = "prunedGenParticles"
492  process.electronMatch.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
493  process.photonMatch.matched = "prunedGenParticles"
494  process.photonMatch.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
495  process.ootPhotonMatch.matched = "prunedGenParticles"
496  process.ootPhotonMatch.src = cms.InputTag("reducedEgamma","reducedOOTPhotons")
497  process.tauMatch.matched = "prunedGenParticles"
498  process.tauGenJets.GenParticles = "prunedGenParticles"
499  #Boosted taus
500  process.tauMatchBoosted.matched = "prunedGenParticles"
501  process.tauGenJetsBoosted.GenParticles = "prunedGenParticles"
502  process.patJetPartons.particles = "genParticles"
503  process.patJetPartonMatch.matched = "prunedGenParticles"
504  process.patJetPartonMatch.mcStatus = [ 3, 23 ]
505  process.patJetGenJetMatch.matched = "slimmedGenJets"
506  process.patJetGenJetMatchAK8.matched = "slimmedGenJetsAK8"
507  process.patMuons.embedGenMatch = False
508  process.patElectrons.embedGenMatch = False
509  process.patPhotons.embedGenMatch = False
510  process.patOOTPhotons.embedGenMatch = False
511  process.patTaus.embedGenMatch = False
512  process.patTausBoosted.embedGenMatch = False
513  process.patJets.embedGenPartonMatch = False
514  #also jet flavour must be switched
515  process.patJetFlavourAssociation.rParam = 0.4
516 
518  from PhysicsTools.PatAlgos.slimming.MicroEventContent_cff import MiniAODOverrideBranchesSplitLevel
519  out.overrideBranchesSplitLevel = MiniAODOverrideBranchesSplitLevel
520  out.splitLevel = cms.untracked.int32(0)
521  out.dropMetaData = cms.untracked.string('ALL')
522  out.fastCloning= cms.untracked.bool(False)
523  out.overrideInputFileSplitLevels = cms.untracked.bool(True)
524  out.compressionAlgorithm = cms.untracked.string('LZMA')
525 
527  from PhysicsTools.PatAlgos.tools.coreTools import runOnData
528  runOnData( process, outputModules = [] )
529  process.load("RecoCTPPS.TotemRPLocal.ctppsLocalTrackLiteProducer_cff")
530  process.load("RecoCTPPS.ProtonReconstruction.ctppsProtons_cff")
531  process.load("Geometry.VeryForwardGeometry.geometryRPFromDB_cfi")
532  task = getPatAlgosToolsTask(process)
533  from Configuration.Eras.Modifier_ctpps_2016_cff import ctpps_2016
534  ctpps_2016.toModify(task, func=lambda t: t.add(process.ctppsLocalTrackLiteProducer))
535  ctpps_2016.toModify(task, func=lambda t: t.add(process.ctppsProtons))
536 
538  miniAOD_customizeCommon(process)
539  miniAOD_customizeData(process)
540  return process
541 
543  miniAOD_customizeCommon(process)
544  miniAOD_customizeMC(process)
545  return process
546 
548  miniAOD_customizeCommon(process)
549  miniAOD_customizeMC(process)
550  from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import miniAOD_customizeMETFiltersFastSim
551  process = miniAOD_customizeMETFiltersFastSim(process)
552  from PhysicsTools.PatAlgos.slimming.isolatedTracks_cfi import miniAOD_customizeIsolatedTracksFastSim
553  process = miniAOD_customizeIsolatedTracksFastSim(process)
554  process.patMuons.addTriggerMatching = False
555 
556  return process
def makeInputForPUPPIIsolationMuon(process)
def miniAOD_customizeAllData(process)
def miniAOD_customizeData(process)
def miniAOD_customizeCommon(process)
Definition: miniAOD_tools.py:7
def applySubstructure(process, postfix="")
def miniAOD_customizeMETFiltersFastSim(process)
def switchOnVIDElectronIdProducer(process, dataFormat, task=None)
Electrons.
Definition: vid_id_tools.py:66
def addToProcessAndTask(label, module, process, task)
Definition: helpers.py:29
def makeInputForPUPPIIsolationEgm(process)
def setupAllVIDIdsInModule(process, id_module_name, setupFunction, patProducer=None, addUserData=True, task=None)
Definition: vid_id_tools.py:49
def runMetCorAndUncForMiniAODProduction(process, metType="PF", jetCollUnskimmed="patJets", photonColl="selectedPatPhotons", electronColl="selectedPatElectrons", muonColl="selectedPatMuons", tauColl="selectedPatTaus", pfCandColl="particleFlow", jetCleaning="LepClean", jetSelection="pt>15 && abs(eta)<9.9", jecUnFile="", jetFlavor="AK4PFchs", recoMetFromPFCs=False, postfix="")
def makePuppies(process)
def miniAOD_customizeAllMC(process)
def applyDeepBtagging(process, postfix="")
def miniAOD_customizeAllMCFastSim(process)
def miniAOD_customizeIsolatedTracksFastSim(process)
switchOnTriggerStandAlone
Definition: trigTools.py:283
def makeVIDBitsModifier(process, eleVIDModuleName, phoVIDModuleName)
def miniAOD_customizeOutput(out)
def miniAOD_customizeMC(process)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
Definition: eve_macros.cc:135
def getPatAlgosToolsTask(process)
Definition: helpers.py:14
def switchOnVIDPhotonIdProducer(process, dataFormat, task=None)
Photons.