Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-07-24 04:45:06

0001 import FWCore.ParameterSet.Config as cms
0002 
0003 from PhysicsTools.SelectorUtils.tools.vid_id_tools import *
0004 
0005 from PhysicsTools.PatAlgos.tools.helpers import getPatAlgosToolsTask, addToProcessAndTask
0006 
0007 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0008 
0009 from PhysicsTools.PatUtils.tools.pfforTrkMET_cff import *
0010 
0011 def miniAOD_customizeCommon(process):
0012     process.patMuons.isoDeposits = cms.PSet()
0013     process.patElectrons.isoDeposits = cms.PSet()
0014     process.patTaus.isoDeposits = cms.PSet()
0015     process.patPhotons.isoDeposits = cms.PSet()
0016     #
0017     process.patMuons.embedTrack         = True  # used for IDs
0018     process.patMuons.embedCombinedMuon  = True  # used for IDs
0019     process.patMuons.embedMuonBestTrack = True  # used for IDs
0020     process.patMuons.embedStandAloneMuon = True # maybe?
0021     process.patMuons.embedPickyMuon = False   # no, use best track
0022     process.patMuons.embedTpfmsMuon = False   # no, use best track
0023     process.patMuons.embedDytMuon   = False   # no, use best track
0024     process.patMuons.addPuppiIsolation = cms.bool(True)
0025     process.patMuons.puppiIsolationChargedHadrons = cms.InputTag("muonPUPPIIsolation","h+-DR040-ThresholdVeto000-ConeVeto000")
0026     process.patMuons.puppiIsolationNeutralHadrons = cms.InputTag("muonPUPPIIsolation","h0-DR040-ThresholdVeto000-ConeVeto001")
0027     process.patMuons.puppiIsolationPhotons        = cms.InputTag("muonPUPPIIsolation","gamma-DR040-ThresholdVeto000-ConeVeto001")
0028     process.patMuons.puppiNoLeptonsIsolationChargedHadrons = cms.InputTag("muonPUPPINoLeptonsIsolation","h+-DR040-ThresholdVeto000-ConeVeto000")
0029     process.patMuons.puppiNoLeptonsIsolationNeutralHadrons = cms.InputTag("muonPUPPINoLeptonsIsolation","h0-DR040-ThresholdVeto000-ConeVeto001")
0030     process.patMuons.puppiNoLeptonsIsolationPhotons        = cms.InputTag("muonPUPPINoLeptonsIsolation","gamma-DR040-ThresholdVeto000-ConeVeto001")
0031 
0032     process.patMuons.computeMiniIso = True
0033     process.patMuons.computeMuonIDMVA = True
0034     process.patMuons.computeSoftMuonMVA = True
0035 
0036     process.patMuons.addTriggerMatching = True
0037     from Configuration.Eras.Modifier_run2_muon_2016_cff import run2_muon_2016
0038     from Configuration.Eras.Modifier_run2_muon_2017_cff import run2_muon_2017
0039     from Configuration.Eras.Modifier_run2_muon_2018_cff import run2_muon_2018
0040     from Configuration.Eras.Modifier_run3_muon_cff import run3_muon
0041     run2_muon_2016.toModify( process.patMuons, effectiveAreaVec = [0.0735,0.0619,0.0465,0.0433,0.0577])
0042     run2_muon_2017.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064])
0043     run2_muon_2018.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064])
0044     run3_muon.toModify( process.patMuons, effectiveAreaVec = [0.0566, 0.0562, 0.0363, 0.0119, 0.0064])
0045 
0046     process.patMuons.computePuppiCombinedIso = True
0047     #
0048     # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer
0049     process.patElectrons.embedGsfElectronCore = False  ## process.patElectrons.embed in AOD externally stored gsf electron core
0050     process.patElectrons.embedSuperCluster    = False  ## process.patElectrons.embed in AOD externally stored supercluster
0051     process.patElectrons.embedPflowSuperCluster         = False  ## process.patElectrons.embed in AOD externally stored supercluster
0052     process.patElectrons.embedSeedCluster               = False  ## process.patElectrons.embed in AOD externally stored the electron's seedcluster
0053     process.patElectrons.embedBasicClusters             = False  ## process.patElectrons.embed in AOD externally stored the electron's basic clusters
0054     process.patElectrons.embedPreshowerClusters         = False  ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters
0055     process.patElectrons.embedPflowBasicClusters        = False  ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters
0056     process.patElectrons.embedPflowPreshowerClusters    = False  ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters
0057     process.patElectrons.embedRecHits         = False  ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer
0058     process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0059     process.patElectrons.usePfCandidateMultiMap = True
0060     process.patElectrons.pfCandidateMultiMap    = cms.InputTag("reducedEgamma","reducedGsfElectronPfCandMap")
0061     process.patElectrons.electronIDSources = cms.PSet()
0062 
0063     #add puppi isolation in miniAOD
0064     process.patElectrons.addPuppiIsolation = cms.bool(True)
0065     process.patElectrons.puppiIsolationChargedHadrons = cms.InputTag("egmElectronPUPPIIsolation","h+-DR030-BarVeto000-EndVeto001")
0066     process.patElectrons.puppiIsolationNeutralHadrons = cms.InputTag("egmElectronPUPPIIsolation","h0-DR030-BarVeto000-EndVeto000")
0067     process.patElectrons.puppiIsolationPhotons        = cms.InputTag("egmElectronPUPPIIsolation","gamma-DR030-BarVeto000-EndVeto008")
0068     process.patElectrons.puppiNoLeptonsIsolationChargedHadrons = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","h+-DR030-BarVeto000-EndVeto001")
0069     process.patElectrons.puppiNoLeptonsIsolationNeutralHadrons = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","h0-DR030-BarVeto000-EndVeto000")
0070     process.patElectrons.puppiNoLeptonsIsolationPhotons        = cms.InputTag("egmElectronPUPPINoLeptonsIsolation","gamma-DR030-BarVeto000-EndVeto008")
0071 
0072     process.patElectrons.computeMiniIso = cms.bool(True)
0073 
0074     process.elPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0075     process.elPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0076     process.elPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0077     process.elPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0078     process.elPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0079     #
0080     process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster
0081     process.patPhotons.embedSeedCluster               = False  ## process.patPhotons.embed in AOD externally stored the photon's seedcluster
0082     process.patPhotons.embedBasicClusters             = False  ## process.patPhotons.embed in AOD externally stored the photon's basic clusters
0083     process.patPhotons.embedPreshowerClusters         = False  ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters
0084     process.patPhotons.embedRecHits         = False  ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer
0085 
0086     #add puppi isolation in miniAOD
0087     process.patPhotons.addPuppiIsolation = cms.bool(True)
0088     process.patPhotons.puppiIsolationChargedHadrons = cms.InputTag("egmPhotonPUPPIIsolation","h+-DR030-")
0089     process.patPhotons.puppiIsolationNeutralHadrons = cms.InputTag("egmPhotonPUPPIIsolation","h0-DR030-")
0090     process.patPhotons.puppiIsolationPhotons        = cms.InputTag("egmPhotonPUPPIIsolation","gamma-DR030-")
0091 
0092     process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons")
0093     process.patPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0094 
0095     process.phPFIsoDepositChargedPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0096     process.phPFIsoDepositChargedAllPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0097     process.phPFIsoDepositNeutralPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0098     process.phPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0099     process.phPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0100     #
0101     process.patOOTPhotons.photonSource = cms.InputTag("reducedEgamma","reducedOOTPhotons")
0102     process.patOOTPhotons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0103     #
0104     process.selectedPatJets.cut = cms.string("pt > 15")
0105     process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))")
0106 
0107     from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
0108     phase2_muon.toModify(process.selectedPatMuons, cut = "pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose') || muonID('ME0MuonArbitrated') || muonID('GEMMuonArbitrated')) )")
0109     from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0110     pp_on_AA.toModify(process.selectedPatMuons, cut = "pt > 5 || isPFMuon || (pt > 1.2 && (isGlobalMuon || isStandAloneMuon) )")
0111     from Configuration.Eras.Modifier_run3_upc_cff import run3_upc
0112     run3_upc.toModify(process.selectedPatMuons, cut = "")
0113     from Configuration.Eras.Modifier_ppRef_2024_cff import ppRef_2024
0114     ppRef_2024.toModify(process.selectedPatMuons, cut = "pt > 5 || isPFMuon || isTrackerMuon || (pt > 1.2 && (isGlobalMuon || isStandAloneMuon))")
0115 
0116     process.selectedPatElectrons.cut = cms.string("")
0117     process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFindingNewDMs')> 0.5")
0118     process.selectedPatPhotons.cut = cms.string("")
0119 
0120     _dummyPatJets = process.selectedPatJets.clone(cut = "pt < 0")
0121     task = getPatAlgosToolsTask(process)
0122 
0123     def _applySubstructure(process):
0124         from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
0125 
0126         from PhysicsTools.PatAlgos.slimming.applySubstructure_cff import applySubstructure
0127         applySubstructure( process )
0128     (~pp_on_AA).toModify(process, _applySubstructure)
0129 
0130     pp_on_AA.toModify(process, func = lambda p: addToProcessAndTask('slimmedJets', p.selectedPatJets.clone(), p, task))
0131     pp_on_AA.toModify(process, func = lambda p: addToProcessAndTask('slimmedJetsAK8', _dummyPatJets.clone(), p, task))
0132 
0133     #
0134     from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone
0135     switchOnTriggerStandAlone( process, outputModule = '' )
0136     process.patTrigger.packTriggerPathNames = cms.bool(True)
0137     #
0138     # apply type I + other PFMEt corrections to pat::MET object
0139     # and estimate systematic uncertainties on MET
0140 
0141     from PhysicsTools.PatUtils.tools.runMETCorrectionsAndUncertainties import runMetCorAndUncForMiniAODProduction
0142     runMetCorAndUncForMiniAODProduction(process, metType="PF",
0143                                         jetCollUnskimmed="patJets")
0144     
0145     #caloMET computation
0146     from PhysicsTools.PatAlgos.tools.metTools import addMETCollection
0147     addMETCollection(process,
0148                      labelName = "patCaloMet",
0149                      metSource = "caloMetM"
0150                      )
0151 
0152     #noHF pfMET =========
0153 
0154     process.noHFCands = cms.EDFilter("GenericPFCandidateSelector",
0155                                      src=cms.InputTag("particleFlow"),
0156                                      cut=cms.string("abs(pdgId)!=1 && abs(pdgId)!=2 && abs(eta)<3.0")
0157                                      )
0158     task.add(process.noHFCands)
0159 
0160     runMetCorAndUncForMiniAODProduction(process,
0161                                         pfCandColl=cms.InputTag("noHFCands"),
0162                                         recoMetFromPFCs=True, #needed for HF removal
0163                                         jetSelection="pt>15 && abs(eta)<3.",
0164                                         postfix="NoHF"
0165                                         )
0166 
0167     process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi')
0168     task.add(process.slimmedMETs)
0169     (~pp_on_AA).toModify(process.slimmedMETs, addDeepMETs = True)
0170 
0171     # ================== NoHF pfMET
0172 
0173     #  ==================  CHSMET 
0174     process.load("CommonTools.ParticleFlow.pfCHS_cff")
0175     task.add(process.pfCHS)
0176 
0177     from RecoMET.METProducers.pfMet_cfi import pfMet
0178     process.pfMetCHS = pfMet.clone(src = 'pfCHS')
0179     task.add(process.pfMetCHS)
0180 
0181     addMETCollection(process,
0182                      labelName = "patCHSMet",
0183                      metSource = "pfMetCHS"
0184                      )
0185 
0186     process.patCHSMet.computeMETSignificance = cms.bool(False)
0187 
0188     #  ==================  CHSMET 
0189 
0190     #  ==================  TrkMET 
0191     process.TrkCands = chargedPackedCandsForTkMet.clone()
0192     task.add(process.TrkCands)
0193 
0194     process.pfMetTrk = pfMet.clone(src = 'TrkCands')
0195     task.add(process.pfMetTrk)
0196 
0197     addMETCollection(process,
0198                      labelName = "patTrkMet",
0199                      metSource = "pfMetTrk"
0200                      )
0201 
0202     process.patTrkMet.computeMETSignificance = cms.bool(False)
0203 
0204     #  ==================  TrkMET 
0205 
0206     #HF jet shower shape
0207     process.load('RecoJets.JetProducers.hfJetShowerShape_cfi')
0208     task.add(process.hfJetShowerShape)
0209 
0210     process.patJets.userData.userFloats.src += [ 'hfJetShowerShape:sigmaEtaEta', 'hfJetShowerShape:sigmaPhiPhi']
0211     process.patJets.userData.userInts.src += [ 'hfJetShowerShape:centralEtaStripSize', 'hfJetShowerShape:adjacentEtaStripsSize']
0212 
0213     ## DeepCSV meta discriminators (simple arithmethic on output probabilities)
0214     def _add_deepFlavour(process):
0215         process.load('RecoBTag.Combined.deepFlavour_cff')
0216         task.add(process.pfDeepCSVDiscriminatorsJetTags)
0217         process.patJets.discriminatorSources.extend([
0218             'pfDeepCSVDiscriminatorsJetTags:BvsAll',
0219             'pfDeepCSVDiscriminatorsJetTags:CvsB',
0220             'pfDeepCSVDiscriminatorsJetTags:CvsL',
0221         ])
0222 
0223     ## CaloJets
0224     process.caloJetMap = cms.EDProducer("RecoJetDeltaRValueMapProducer",
0225          src = process.patJets.jetSource,
0226          matched = cms.InputTag("ak4CaloJets"),
0227          distMax = cms.double(0.4),
0228          values = cms.vstring('pt','emEnergyFraction'),
0229      valueLabels = cms.vstring('pt','emEnergyFraction'),
0230      lazyParser = cms.bool(True) )
0231     task.add(process.caloJetMap)
0232     process.patJets.userData.userFloats.src += [ 'caloJetMap:pt', 'caloJetMap:emEnergyFraction' ]
0233 
0234     pp_on_AA.toModify(process.patJets.userData.userInts, src = [] )
0235     pp_on_AA.toModify(process.patJets.userData.userFloats, src = [] )
0236 
0237     #Muon object modifications 
0238     from PhysicsTools.PatAlgos.slimming.muonIsolationsPUPPI_cfi import makeInputForPUPPIIsolationMuon
0239     makeInputForPUPPIIsolationMuon(process)
0240 
0241     #EGM object modifications 
0242     from PhysicsTools.PatAlgos.slimming.egmIsolationsPUPPI_cfi import makeInputForPUPPIIsolationEgm
0243     makeInputForPUPPIIsolationEgm(process)
0244     from RecoEgamma.EgammaTools.egammaObjectModificationsInMiniAOD_cff import egamma_modifications
0245     process.slimmedElectrons.modifierConfig.modifications = egamma_modifications
0246     process.slimmedPhotons.modifierConfig.modifications   = egamma_modifications
0247 
0248     #VID Electron IDs
0249     process.patElectrons.addElectronID = cms.bool(True)
0250     electron_ids = ['RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
0251                     'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV71_cff',
0252                     'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff',
0253                     'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff',
0254                     'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Winter22_122X_V1_cff',
0255                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V1_cff', 
0256                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V1_cff',
0257                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_noIso_V2_cff', 
0258                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Fall17_iso_V2_cff',
0259                     'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff',
0260                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff',
0261                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_HZZ_V1_cff',
0262             'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer16UL_ID_ISO_cff',
0263                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer17UL_ID_ISO_cff',
0264                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Summer18UL_ID_ISO_cff',
0265                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_noIso_V1_cff',
0266                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_RunIIIWinter22_iso_V1_cff',
0267                     'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Winter22_HZZ_V1_cff'
0268                     ]
0269     switchOnVIDElectronIdProducer(process,DataFormat.MiniAOD, task)
0270     process.egmGsfElectronIDs.physicsObjectSrc = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0271     process.electronMVAValueMapProducer.src = cms.InputTag('reducedEgamma','reducedGedGsfElectrons')
0272 
0273     # To use older DataFormats, the electronMVAValueMapProducer MUST take a updated electron collection
0274     # such that the conversion variables are filled correctly.
0275 
0276     process.load("RecoEgamma.EgammaTools.gedGsfElectronsTo106X_cff")
0277     from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
0278     pp_on_AA_2018.toModify(task, func=lambda t: t.add(process.gedGsfElectronsFrom94XTo106XTask))
0279     pp_on_AA_2018.toModify(process.electronMVAValueMapProducer,
0280                            keysForValueMaps = cms.InputTag('reducedEgamma','reducedGedGsfElectrons'),
0281                            src = "gedGsfElectronsFrom94XTo106X")
0282 
0283     for idmod in electron_ids:
0284         setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection,None,False,task)
0285 
0286     #VID Photon IDs
0287     process.patPhotons.addPhotonID = cms.bool(True)
0288     photon_ids = ['RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V1_TrueVtx_cff',
0289                   'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Fall17_94X_V2_cff',
0290                   'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V1p1_cff', 
0291                   'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Fall17_94X_V2_cff',
0292                   'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_Spring16_V2p2_cff',
0293                   'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Spring16_nonTrig_V1_cff',
0294                   'RecoEgamma.PhotonIdentification.Identification.mvaPhotonID_Winter22_122X_V1_cff',
0295                   'RecoEgamma.PhotonIdentification.Identification.cutBasedPhotonID_RunIIIWinter22_122X_V1_cff']
0296 
0297     switchOnVIDPhotonIdProducer(process,DataFormat.AOD, task) 
0298     process.egmPhotonIDs.physicsObjectSrc = cms.InputTag("reducedEgamma","reducedGedPhotons")
0299     process.photonMVAValueMapProducer.src = cms.InputTag('reducedEgamma','reducedGedPhotons')
0300     for idmod in photon_ids:
0301         setupAllVIDIdsInModule(process,idmod,setupVIDPhotonSelection,None,False,task)
0302  
0303     #add the cut base IDs bitmaps of which cuts passed
0304     from RecoEgamma.EgammaTools.egammaObjectModifications_tools import makeVIDBitsModifier
0305     egamma_modifications.append(makeVIDBitsModifier(process,"egmGsfElectronIDs","egmPhotonIDs"))
0306 
0307     #-- Adding boosted taus
0308     from RecoTauTag.Configuration.boostedHPSPFTaus_cfi import addBoostedTaus
0309     addBoostedTaus(process)
0310     process.load("RecoTauTag.Configuration.RecoPFTauTag_cff")
0311     process.load("RecoTauTag.Configuration.HPSPFTaus_cff")
0312     #-- Adding customization for 94X 2017 legacy reMniAOD
0313     _makePatTausTaskWithRetrainedMVATauID = process.makePatTausTask.copy()
0314     _makePatTausTaskWithRetrainedMVATauID.add(process.hpsPFTauBasicDiscriminatorsTask,
0315                                               process.hpsPFTauDiscriminationByIsolationMVArun2v1DBoldDMwLTTask,
0316                                               process.hpsPFTauDiscriminationByIsolationMVArun2v1DBnewDMwLTTask,
0317                                               process.hpsPFTauBasicDiscriminatorsdR03Task,
0318                                               process.hpsPFTauDiscriminationByIsolationMVArun2v1DBdR03oldDMwLTTask,
0319                                               process.hpsPFTauDiscriminationByMVA6rawElectronRejection,
0320                                               process.hpsPFTauDiscriminationByMVA6ElectronRejection,
0321                                               process.hpsPFTauDiscriminationByMuonRejection3)
0322     from Configuration.ProcessModifiers.run2_miniAOD_UL_cff import run2_miniAOD_UL
0323     (run2_miniAOD_UL).toReplaceWith(
0324         process.makePatTausTask, _makePatTausTaskWithRetrainedMVATauID
0325         )
0326     #-- Adding DeepTauID
0327     # deepTau v2p1 and v2p5
0328     _updatedTauName = 'slimmedTausDeepIDsv2p1'
0329     _noUpdatedTauName = 'slimmedTausNoDeepIDs'
0330     import RecoTauTag.RecoTau.tools.runTauIdMVA as tauIdConfig
0331     tauIdEmbedder = tauIdConfig.TauIDEmbedder(
0332         process, debug = False,
0333         originalTauName = _noUpdatedTauName,
0334         updatedTauName = _updatedTauName,
0335         postfix = 'ForMini',
0336         toKeep = ['deepTau2017v2p1','deepTau2018v2p5']
0337     )
0338     from Configuration.Eras.Modifier_phase2_common_cff import phase2_common #Phase2 Tau MVA
0339     _tauIds_phase2 = ['deepTau2026v2p5']
0340     phase2_common.toModify(tauIdEmbedder.toKeep, func=lambda t:t.extend(_tauIds_phase2))
0341     tauIdEmbedder.runTauID()
0342     addToProcessAndTask(_noUpdatedTauName, process.slimmedTaus.clone(),process,task)
0343     delattr(process, 'slimmedTaus')
0344     process.slimmedTaus = getattr(process, _updatedTauName).clone()
0345     process.rerunMvaIsolationTaskForMini.add(process.slimmedTaus)
0346     task.add(process.rerunMvaIsolationTaskForMini)
0347 
0348     #-- Rerun tauID against dead ECal towers to taus for the various re-MiniAOD eras
0349     # to enable default behoviour with leading track extrapolation to ECAL
0350     _makePatTausTaskWithDeadECalVeto = process.makePatTausTask.copy()
0351     _makePatTausTaskWithDeadECalVeto.add(
0352         process.hpsPFTauDiscriminationByDeadECALElectronRejection
0353     )
0354     _run2_miniAOD_ANY = (run2_miniAOD_UL)
0355     _run2_miniAOD_ANY.toReplaceWith(
0356         process.makePatTausTask, _makePatTausTaskWithDeadECalVeto
0357     )
0358 
0359     #-- Adding customization for 2018 heavy ions
0360     _makePatTausTaskWithTauReReco = process.makePatTausTask.copy()
0361     _makePatTausTaskWithTauReReco.add(process.PFTauTask)
0362     (pp_on_AA).toReplaceWith(
0363         process.makePatTausTask, _makePatTausTaskWithTauReReco
0364         )
0365     
0366     # Adding puppi jets
0367     process.load('CommonTools.PileupAlgos.Puppi_cff')
0368     process.load('RecoJets.JetProducers.ak4PFJets_cfi')
0369     from Configuration.Eras.Modifier_pA_2016_cff import pA_2016
0370     _rerun_puppijets_task = task.copy()
0371     _rerun_puppijets_task.add(process.puppi, process.ak4PFJetsPuppi)
0372     (_run2_miniAOD_ANY | pA_2016 | pp_on_AA).toReplaceWith(task, _rerun_puppijets_task)
0373 
0374     from RecoJets.JetAssociationProducers.j2tParametersVX_cfi import j2tParametersVX
0375     process.ak4PFJetsPuppiTracksAssociatorAtVertex = cms.EDProducer("JetTracksAssociatorAtVertex",
0376         j2tParametersVX,
0377         jets = cms.InputTag("ak4PFJetsPuppi")
0378     )
0379     task.add(process.ak4PFJetsPuppiTracksAssociatorAtVertex)
0380     process.patJetPuppiCharge = cms.EDProducer("JetChargeProducer",
0381         src = cms.InputTag("ak4PFJetsPuppiTracksAssociatorAtVertex"),
0382         var = cms.string('Pt'),
0383         exp = cms.double(1.0)
0384     )
0385     task.add(process.patJetPuppiCharge)
0386 
0387     def _add_jetsPuppi(process):
0388         from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection
0389         noDeepFlavourDiscriminators = [x.value() if isinstance(x, cms.InputTag) else x for x in process.patJets.discriminatorSources 
0390                                        if (not "DeepFlavour" in str(x) and not "Transformer" in str(x))]
0391         addJetCollection(process, postfix   = "", labelName = 'Puppi', jetSource = cms.InputTag('ak4PFJetsPuppi'),
0392                          jetCorrections = ('AK4PFPuppi', ['L2Relative', 'L3Absolute'], ''),
0393                          pfCandidates = cms.InputTag("particleFlow"),
0394                          algo= 'AK', rParam = 0.4, btagDiscriminators = noDeepFlavourDiscriminators
0395                      )
0396 
0397         process.patJetGenJetMatchPuppi.matched = 'slimmedGenJets'
0398     
0399         process.patJetsPuppi.jetChargeSource = cms.InputTag("patJetPuppiCharge")
0400     
0401         process.selectedPatJetsPuppi.cut = cms.string("pt > 10")
0402     
0403         from PhysicsTools.PatAlgos.slimming.applyDeepBtagging_cff import applyDeepBtagging
0404         applyDeepBtagging( process )
0405 
0406         process.slimmedJetsNoDeepFlavour.dropTagInfos = '0'
0407         process.updatedPatJetsTransientCorrectedSlimmedDeepFlavour.addTagInfos = True
0408         process.updatedPatJetsTransientCorrectedSlimmedDeepFlavour.tagInfoSources = ["pixelClusterTagInfos"]
0409         _run2_miniAOD_ANY.toModify(process.updatedPatJetsTransientCorrectedSlimmedDeepFlavour, addTagInfos = False )
0410     (~pp_on_AA).toModify(process, _add_jetsPuppi)
0411 
0412     pp_on_AA.toModify(process, func = lambda p: addToProcessAndTask('slimmedJetsPuppi', _dummyPatJets.clone(), p, task))
0413 
0414     # Embed pixelClusterTagInfos in slimmedJets
0415     process.patJets.addTagInfos = True
0416     process.patJets.tagInfoSources = ["pixelClusterTagInfos"]
0417 
0418     _run2_miniAOD_ANY.toModify(process.patJets, addTagInfos = False )
0419 
0420     from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
0421     pp_on_AA_2018.toModify(process.patJets, tagInfoSources = cms.VInputTag(["impactParameterTagInfos","secondaryVertexTagInfos"]) )
0422 
0423     ## puppi met
0424     def _add_metPuppi(process):
0425         process.load('RecoMET.METProducers.pfMetPuppi_cfi')
0426         _rerun_puppimet_task = task.copy()
0427         _rerun_puppimet_task.add(process.puppiNoLep, process.pfMetPuppi)
0428         (_run2_miniAOD_ANY | pA_2016 | pp_on_AA ).toReplaceWith(task, _rerun_puppimet_task)
0429     
0430         runMetCorAndUncForMiniAODProduction(process, metType="Puppi",
0431                                             jetCollUnskimmed="slimmedJetsPuppi",
0432                                             recoMetFromPFCs=True,
0433                                             jetFlavor="AK4PFPuppi",
0434                                             postfix="Puppi"
0435                                         )
0436     (~pp_on_AA).toModify(process, _add_metPuppi)
0437 
0438     process.load('PhysicsTools.PatAlgos.slimming.slimmedMETs_cfi')
0439     task.add(process.slimmedMETs)
0440 
0441     def _add_slimmedMETsPuppi(process):
0442         addToProcessAndTask('slimmedMETsPuppi', process.slimmedMETs.clone(), process, task)
0443         process.slimmedMETsPuppi.src = cms.InputTag("patMETsPuppi")
0444         process.slimmedMETsPuppi.rawVariation =  cms.InputTag("patPFMetPuppi")
0445         process.slimmedMETsPuppi.t1Uncertainties = cms.InputTag("patPFMetT1%sPuppi")
0446         process.slimmedMETsPuppi.t01Variation = cms.InputTag("patPFMetT0pcT1Puppi")
0447         process.slimmedMETsPuppi.t1SmearedVarsAndUncs = cms.InputTag("patPFMetT1Smear%sPuppi")
0448         process.slimmedMETsPuppi.tXYUncForRaw = cms.InputTag("patPFMetTxyPuppi")
0449         process.slimmedMETsPuppi.tXYUncForT1 = cms.InputTag("patPFMetT1TxyPuppi")
0450         process.slimmedMETsPuppi.tXYUncForT01 = cms.InputTag("patPFMetT0pcT1TxyPuppi")
0451         process.slimmedMETsPuppi.tXYUncForT1Smear = cms.InputTag("patPFMetT1SmearTxyPuppi")
0452         process.slimmedMETsPuppi.tXYUncForT01Smear = cms.InputTag("patPFMetT0pcT1SmearTxyPuppi")
0453         del process.slimmedMETsPuppi.caloMET
0454     (~pp_on_AA).toModify(process, _add_slimmedMETsPuppi)
0455 
0456     def _add_deepMET(process):
0457         from RecoMET.METPUSubtraction.deepMETProducer_cff import deepMETsResolutionTune, deepMETsResponseTune
0458 
0459         addToProcessAndTask('deepMETsResolutionTune', deepMETsResolutionTune, process, task)
0460         addToProcessAndTask('deepMETsResponseTune', deepMETsResponseTune, process, task)
0461     (~pp_on_AA).toModify(process, _add_deepMET)
0462 
0463     # add DetIdAssociatorRecords to EventSetup (for isolatedTracks)
0464     process.load("TrackingTools.TrackAssociator.DetIdAssociatorESProducer_cff")
0465 
0466     # EGamma objects from HGCal are not yet in GED
0467     # so add companion collections for Phase-II MiniAOD production
0468     from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0469     process.load("RecoEgamma.EgammaTools.slimmedEgammaHGC_cff")
0470     phase2_hgcal.toModify(task, func=lambda t: t.add(process.slimmedEgammaHGCTask))
0471 
0472     # L1 pre-firing weights for 2016, 2017, and 2018
0473     from Configuration.Eras.Modifier_run2_L1prefiring_cff import run2_L1prefiring
0474     from Configuration.Eras.Modifier_stage2L1Trigger_cff import stage2L1Trigger
0475     from Configuration.Eras.Modifier_stage2L1Trigger_2017_cff import stage2L1Trigger_2017
0476     from Configuration.Eras.Modifier_stage2L1Trigger_2018_cff import stage2L1Trigger_2018
0477     from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016
0478     if not hasattr(process,'prefiringweight'):
0479         process.load("PhysicsTools.PatUtils.L1PrefiringWeightProducer_cff")
0480     (stage2L1Trigger & tracker_apv_vfp30_2016).toModify(process.prefiringweight, DataEraECAL = "UL2016preVFP", DataEraMuon = "2016preVFP" )
0481     (stage2L1Trigger & ~tracker_apv_vfp30_2016).toModify(process.prefiringweight, DataEraECAL = "UL2016postVFP", DataEraMuon = "2016postVFP" )
0482     stage2L1Trigger_2017.toModify(process.prefiringweight, DataEraECAL = "UL2017BtoF", DataEraMuon = "20172018")
0483     stage2L1Trigger_2018.toModify(process.prefiringweight, DataEraECAL = "None", DataEraMuon = "20172018")
0484     run2_L1prefiring.toModify(task, func=lambda t: t.add(process.prefiringweight))
0485 
0486     from PhysicsTools.PatAlgos.producersHeavyIons.heavyIonJetSetup import removeL1FastJetJECs
0487     pp_on_AA.toModify(process, removeL1FastJetJECs)
0488 
0489 def miniAOD_customizeMC(process):
0490     task = getPatAlgosToolsTask(process)
0491     #GenJetFlavourInfos
0492     process.load("PhysicsTools.JetMCAlgos.HadronAndPartonSelector_cfi")
0493     task.add(process.selectedHadronsAndPartons)
0494     task.add(process.selectedHadronsAndPartonsForGenJetsFlavourInfos)
0495     
0496     process.load("PhysicsTools.JetMCAlgos.AK4GenJetFlavourInfos_cfi")
0497     task.add(process.ak4GenJetFlavourInfos)
0498 
0499     process.load('PhysicsTools.PatAlgos.slimming.slimmedGenJetsFlavourInfos_cfi')
0500     task.add(process.slimmedGenJetsFlavourInfos)
0501 
0502     #slimmed pileup information
0503     process.load('PhysicsTools.PatAlgos.slimming.slimmedAddPileupInfo_cfi')
0504     task.add(process.slimmedAddPileupInfo)
0505 
0506     process.muonMatch.matched = "prunedGenParticles"
0507     process.electronMatch.matched = "prunedGenParticles"
0508     process.electronMatch.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons")
0509     process.photonMatch.matched = "prunedGenParticles"
0510     process.photonMatch.src = cms.InputTag("reducedEgamma","reducedGedPhotons")
0511     process.ootPhotonMatch.matched = "prunedGenParticles"
0512     process.ootPhotonMatch.src = cms.InputTag("reducedEgamma","reducedOOTPhotons")
0513     process.tauMatch.matched = "prunedGenParticles"
0514     process.tauGenJets.GenParticles = "prunedGenParticles"
0515     #Boosted taus 
0516     process.tauMatchBoosted.matched = "prunedGenParticles"
0517     process.tauGenJetsBoosted.GenParticles = "prunedGenParticles"
0518     process.patJetPartons.particles = "genParticles"
0519     process.patJetPartonMatch.matched = "prunedGenParticles"
0520     pp_on_AA.toModify(process.patJetPartonMatch, matched =  "hiSignalGenParticles")
0521     from Configuration.ProcessModifiers.genJetSubEvent_cff import genJetSubEvent
0522     genJetSubEvent.toModify(process.patJetPartonMatch, matched =  "cleanedPartons")
0523     process.patJetPartonMatch.mcStatus = [ 3, 23 ]
0524     process.patJetGenJetMatch.matched = "slimmedGenJets"
0525     (~pp_on_AA).toModify(process, patJetGenJetMatchAK8Puppi = dict(matched =  "slimmedGenJetsAK8"))
0526     process.patMuons.embedGenMatch = False
0527     process.patElectrons.embedGenMatch = False
0528     process.patPhotons.embedGenMatch = False
0529     process.patOOTPhotons.embedGenMatch = False
0530     process.patTaus.embedGenMatch = False
0531     process.patTausBoosted.embedGenMatch = False
0532     process.patJets.embedGenPartonMatch = False
0533     #also jet flavour must be switched
0534     process.patJetFlavourAssociation.rParam = 0.4
0535     
0536     from PhysicsTools.PatAlgos.producersHeavyIons.heavyIonJetSetup import removeJECsForMC
0537     pp_on_AA.toModify(process, removeJECsForMC)
0538     pp_on_AA.toReplaceWith(task,task.copyAndExclude([process.slimmedGenJetsFlavourInfos]))
0539 
0540 
0541 def miniAOD_customizeOutput(out):
0542     from PhysicsTools.PatAlgos.slimming.MicroEventContent_cff import MiniAODOverrideBranchesSplitLevel
0543     out.overrideBranchesSplitLevel = MiniAODOverrideBranchesSplitLevel
0544     out.splitLevel = cms.untracked.int32(0)
0545     out.dropMetaData = cms.untracked.string('ALL')
0546     out.fastCloning= cms.untracked.bool(False)
0547     out.overrideInputFileSplitLevels = cms.untracked.bool(True)
0548     out.compressionAlgorithm = cms.untracked.string('LZMA')
0549 
0550 def miniAOD_customizeData(process):
0551     from PhysicsTools.PatAlgos.tools.coreTools import runOnData
0552     runOnData( process, outputModules = [] )
0553     process.load("RecoPPS.Local.ctppsLocalTrackLiteProducer_cff")
0554     process.load("RecoPPS.ProtonReconstruction.ctppsProtons_cff")
0555     process.load("Geometry.VeryForwardGeometry.geometryRPFromDB_cfi")
0556     process.load('L1Trigger.L1TGlobal.simGtExtFakeProd_cfi')
0557     task = getPatAlgosToolsTask(process)
0558     task.add(process.simGtExtUnprefireable)
0559     from Configuration.Eras.Modifier_ctpps_cff import ctpps
0560     ctpps.toModify(task, func=lambda t: t.add(process.ctppsLocalTrackLiteProducer))
0561     ctpps.toModify(task, func=lambda t: t.add(process.ctppsProtons))
0562     from Configuration.ProcessModifiers.run2_miniAOD_UL_cff import run2_miniAOD_UL
0563     run2_miniAOD_UL.toModify(task, func=lambda t: t.add(process.simGtExtUnprefireable))
0564 
0565 def miniAOD_customizeAllData(process):
0566     miniAOD_customizeCommon(process)
0567     miniAOD_customizeData(process)
0568     return process
0569 
0570 def miniAOD_customizeAllMC(process):
0571     miniAOD_customizeCommon(process)
0572     miniAOD_customizeMC(process)
0573     return process
0574 
0575 def miniAOD_customizeAllMCFastSim(process):
0576     miniAOD_customizeCommon(process)
0577     miniAOD_customizeMC(process)
0578     from PhysicsTools.PatAlgos.slimming.metFilterPaths_cff import miniAOD_customizeMETFiltersFastSim
0579     process = miniAOD_customizeMETFiltersFastSim(process)
0580     from PhysicsTools.PatAlgos.slimming.isolatedTracks_cfi import miniAOD_customizeIsolatedTracksFastSim
0581     process = miniAOD_customizeIsolatedTracksFastSim(process)
0582     process.patMuons.addTriggerMatching = False
0583     # Disable pixelClusterTagInfos in FastSim (no siPixelCluster available)
0584     from Configuration.Eras.Modifier_fastSim_cff import fastSim
0585     fastSim.toModify(process.patJets, addTagInfos = cms.bool(False) )
0586     fastSim.toModify(process.slimmedJetsNoDeepFlavour, dropTagInfos = cms.string('1') )
0587     fastSim.toModify(process.updatedPatJetsSlimmedDeepFlavour, addTagInfos = cms.bool(False) )
0588     fastSim.toModify(process.updatedPatJetsTransientCorrectedSlimmedDeepFlavour, addTagInfos = cms.bool(False) )
0589 
0590     return process