def miniAOD_customizeCommon(process): process.patMuons.isoDeposits = cms.PSet() process.patElectrons.isoDeposits = cms.PSet() process.patTaus.isoDeposits = cms.PSet() process.patPhotons.isoDeposits = cms.PSet() # process.patMuons.embedTrack = True # used for IDs process.patMuons.embedCombinedMuon = True # used for IDs process.patMuons.embedMuonBestTrack = True # used for IDs process.patMuons.embedStandAloneMuon = True # maybe? process.patMuons.embedPickyMuon = False # no, use best track process.patMuons.embedTpfmsMuon = False # no, use best track process.patMuons.embedDytMuon = False # no, use best track # # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer process.patElectrons.electronSource = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.patElectrons.electronIDSources = cms.PSet( # configure many IDs as InputTag <someName> = <someTag> you # can comment out those you don't want to save some disk space eidRobustLoose = cms.InputTag("reducedEgamma","eidRobustLoose"), eidRobustTight = cms.InputTag("reducedEgamma","eidRobustTight"), eidLoose = cms.InputTag("reducedEgamma","eidLoose"), eidTight = cms.InputTag("reducedEgamma","eidTight"), eidRobustHighEnergy = cms.InputTag("reducedEgamma","eidRobustHighEnergy"), ) process.elPFIsoDepositCharged.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositChargedAll.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositNeutral.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositGamma.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.elPFIsoDepositPU.src = cms.InputTag("reducedEgamma","reducedGedGsfElectrons") # process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer process.patPhotons.photonSource = cms.InputTag("reducedEgamma","reducedGedPhotons") process.patPhotons.photonIDSources = cms.PSet( PhotonCutBasedIDLoose = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDLoose'), PhotonCutBasedIDTight = cms.InputTag('reducedEgamma', 'PhotonCutBasedIDTight') ) process.phPFIsoDepositCharged.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositChargedAll.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositNeutral.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositGamma.src = cms.InputTag("reducedEgamma","reducedGedPhotons") process.phPFIsoDepositPU.src = cms.InputTag("reducedEgamma","reducedGedPhotons") # process.selectedPatJets.cut = cms.string("pt > 10") process.selectedPatMuons.cut = cms.string("pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))") process.selectedPatElectrons.cut = cms.string("") process.selectedPatTaus.cut = cms.string("pt > 18. && tauID('decayModeFinding')> 0.5") process.selectedPatPhotons.cut = cms.string("") # add CMS top tagger from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos as toptag process.cmsttRaw = toptag.clone() process.caTopTagInfos = cms.EDProducer("RecoJetDeltaRTagInfoValueMapProducer", src = cms.InputTag("ak8PFJetsCHS"), matched = cms.InputTag("cmsTopTagPFJetsCHS"), matchedTagInfos = cms.InputTag("cmsttRaw"), distMax = cms.double(0.8) ) #add AK8 from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection addJetCollection(process, labelName = 'AK8', jetSource = cms.InputTag('ak8PFJetsCHS'), algo= 'AK', rParam = 0.8, jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagInfos = ['caTopTagInfos'] ) process.patJetsAK8.userData.userFloats.src = [] # start with empty list of user floats process.selectedPatJetsAK8.cut = cms.string("pt > 100") process.patJetGenJetMatchAK8.matched = 'slimmedGenJets' ## AK8 groomed masses from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone() process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone() process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone() process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi") process.patJetsAK8.userData.userFloats.src += ['ak8PFJetsCHSPrunedLinks','ak8PFJetsCHSTrimmedLinks','ak8PFJetsCHSFilteredLinks'] # Add AK8 top tagging variables process.patJetsAK8.tagInfoSources = cms.VInputTag(cms.InputTag("caTopTagInfos")) process.patJetsAK8.addTagInfos = cms.bool(True) # add Njetiness process.load('RecoJets.JetProducers.nJettinessAdder_cfi') process.NjettinessAK8 = process.Njettiness.clone() process.NjettinessAK8.src = cms.InputTag("ak8PFJetsCHS") process.NjettinessAK8.cone = cms.double(0.8) process.patJetsAK8.userData.userFloats.src += ['NjettinessAK8:tau1','NjettinessAK8:tau2','NjettinessAK8:tau3'] # from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone switchOnTriggerStandAlone( process, outputModule = '' ) process.patTrigger.packTriggerPathNames = cms.bool(True) # # apply type I/type I + II PFMEt corrections to pat::MET object # and estimate systematic uncertainties on MET # FIXME: this and the typeI MET should become AK4 once we have the proper JEC? from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties addJetCollection(process, postfix = "ForMetUnc", labelName = 'AK4PF', jetSource = cms.InputTag('ak4PFJets'), jetCorrections = ('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], '')) process.patJetsAK4PFForMetUnc.getJetMCFlavour = False runType1PFMEtUncertainties(process, addToPatDefaultSequence=False, jetCollection="selectedPatJetsAK4PFForMetUnc", electronCollection="selectedPatElectrons", muonCollection="selectedPatMuons", tauCollection="selectedPatTaus", makeType1p2corrPFMEt=True, outputModule=None) #keep this after all addJetCollections otherwise it will attempt computing them also for stuf with no taginfos #Some useful BTAG vars process.patJets.userData.userFunctions = cms.vstring( '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).p4.M):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).nTracks):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().flightDistance(0).value):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().flightDistance(0).significance):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).p4.x):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).p4.y):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).p4.z):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).position.x):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).position.y):(0)', '?(tagInfoSecondaryVertex().nVertices()>0)?(tagInfoSecondaryVertex().secondaryVertex(0).position.z):(0)', ) process.patJets.userData.userFunctionLabels = cms.vstring('vtxMass','vtxNtracks','vtx3DVal','vtx3DSig','vtxPx','vtxPy','vtxPz','vtxPosX','vtxPosY','vtxPosZ') process.patJets.tagInfoSources = cms.VInputTag(cms.InputTag("secondaryVertexTagInfos")) process.patJets.addTagInfos = cms.bool(True) # ## PU JetID process.load("PhysicsTools.PatAlgos.slimming.pileupJetId_cfi") process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ] #VID Electron IDs electron_ids = ['RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_CSA14_50ns_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_CSA14_PU20bx25_V0_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV50_CSA14_25ns_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV50_CSA14_startup_cff'] switchOnVIDElectronIdProducer(process) process.egmGsfElectronIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronIDValueMapProducer.src = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronIDValueMapProducer.ebReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedEBRecHits") process.electronIDValueMapProducer.eeReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedEERecHits") process.electronIDValueMapProducer.esReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedESRecHits") for idmod in electron_ids: setupAllVIDIdsInModule(process,idmod,setupVIDElectronSelection)
def applySubstructure(process): from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection # add CMS top tagger from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos process.caTopTagInfos = caTopTagInfos.clone() process.caTopTagInfosPAT = cms.EDProducer( "RecoJetDeltaRTagInfoValueMapProducer", src=cms.InputTag("ak8PFJetsCHS"), matched=cms.InputTag("cmsTopTagPFJetsCHS"), matchedTagInfos=cms.InputTag("caTopTagInfos"), distMax=cms.double(0.8)) from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import _patJets as patJetsDefault #add AK8 addJetCollection( process, labelName='AK8', jetSource=cms.InputTag('ak8PFJetsCHS'), algo='AK', rParam=0.8, jetCorrections=('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagDiscriminators=( [x.getModuleLabel() for x in patJetsDefault.discriminatorSources] + ['pfBoostedDoubleSecondaryVertexAK8BJetTags']), genJetCollection=cms.InputTag('slimmedGenJetsAK8')) process.patJetsAK8.userData.userFloats.src = [ ] # start with empty list of user floats process.selectedPatJetsAK8.cut = cms.string("pt > 170") ## AK8 groomed masses from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSSoftDrop, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone() process.ak8PFJetsCHSSoftDrop = ak8PFJetsCHSSoftDrop.clone() process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone() process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone() process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi") process.patJetsAK8.userData.userFloats.src += [ 'ak8PFJetsCHSPrunedMass', 'ak8PFJetsCHSSoftDropMass', 'ak8PFJetsCHSTrimmedMass', 'ak8PFJetsCHSFilteredMass' ] # Add AK8 top tagging variables process.patJetsAK8.tagInfoSources = cms.VInputTag( cms.InputTag("caTopTagInfosPAT")) process.patJetsAK8.addTagInfos = cms.bool(True) # add Njetiness process.load('RecoJets.JetProducers.nJettinessAdder_cfi') process.NjettinessAK8 = process.Njettiness.clone() process.NjettinessAK8.src = cms.InputTag("ak8PFJetsCHS") process.NjettinessAK8.cone = cms.double(0.8) process.patJetsAK8.userData.userFloats.src += [ 'NjettinessAK8:tau1', 'NjettinessAK8:tau2', 'NjettinessAK8:tau3' ] ## PATify pruned fat jets addJetCollection( process, labelName='AK8PFCHSSoftDrop', jetSource=cms.InputTag('ak8PFJetsCHSSoftDrop'), btagDiscriminators=['None'], jetCorrections=('AK8PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), getJetMCFlavour=False # jet flavor disabled ) ## PATify soft drop subjets addJetCollection( process, labelName='AK8PFCHSSoftDropSubjets', jetSource=cms.InputTag('ak8PFJetsCHSSoftDrop', 'SubJets'), algo='ak', # needed for subjet flavor clustering rParam=0.8, # needed for subjet flavor clustering btagDiscriminators=[ 'pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags' ], jetCorrections=('AK4PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), explicitJTA=True, # needed for subjet b tagging svClustering=True, # needed for subjet b tagging genJetCollection=cms.InputTag('slimmedGenJets'), fatJets=cms.InputTag( 'ak8PFJetsCHS'), # needed for subjet flavor clustering groomedFatJets=cms.InputTag( 'ak8PFJetsCHSSoftDrop') # needed for subjet flavor clustering ) process.selectedPatJetsAK8PFCHSSoftDrop.cut = cms.string("pt > 170") process.slimmedJetsAK8PFCHSSoftDropSubjets = cms.EDProducer( "PATJetSlimmer", src=cms.InputTag("selectedPatJetsAK8PFCHSSoftDropSubjets"), packedPFCandidates=cms.InputTag("packedPFCandidates"), dropJetVars=cms.string("1"), dropDaughters=cms.string("0"), rekeyDaughters=cms.string("1"), dropTrackRefs=cms.string("1"), dropSpecific=cms.string("1"), dropTagInfos=cms.string("1"), modifyJets=cms.bool(True), modifierConfig=cms.PSet(modifications=cms.VPSet())) ## Establish references between PATified fat jets and subjets using the BoostedJetMerger process.slimmedJetsAK8PFCHSSoftDropPacked = cms.EDProducer( "BoostedJetMerger", jetSrc=cms.InputTag("selectedPatJetsAK8PFCHSSoftDrop"), subjetSrc=cms.InputTag("slimmedJetsAK8PFCHSSoftDropSubjets")) addJetCollection( process, labelName='CMSTopTagCHS', jetSource=cms.InputTag('cmsTopTagPFJetsCHS'), jetCorrections=('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagDiscriminators=['None'], genJetCollection=cms.InputTag('slimmedGenJetsAK8'), getJetMCFlavour=False # ) process.selectedPatJetsCMSTopTagCHS.cut = cms.string("pt > 200") addJetCollection( process, labelName='CMSTopTagCHSSubjets', jetSource=cms.InputTag('cmsTopTagPFJetsCHS', 'caTopSubJets'), algo='AK', # needed for subjet flavor clustering rParam=0.8, # needed for subjet flavor clustering btagDiscriminators=[ 'pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags' ], jetCorrections=('AK4PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), genJetCollection=cms.InputTag( 'slimmedGenJets' ), # Using ak4GenJets for matching which is not entirely appropriate explicitJTA=True, # needed for subjet b tagging svClustering=True, # needed for subjet b tagging fatJets=cms.InputTag( 'ak8PFJetsCHS'), # needed for subjet flavor clustering groomedFatJets=cms.InputTag( 'cmsTopTagPFJetsCHS') # needed for subjet flavor clustering ) process.slimmedJetsCMSTopTagCHSSubjets = cms.EDProducer( "PATJetSlimmer", src=cms.InputTag("selectedPatJetsCMSTopTagCHSSubjets"), packedPFCandidates=cms.InputTag("packedPFCandidates"), dropJetVars=cms.string("1"), dropDaughters=cms.string("0"), rekeyDaughters=cms.string("1"), dropTrackRefs=cms.string("1"), dropSpecific=cms.string("1"), dropTagInfos=cms.string("1"), modifyJets=cms.bool(True), modifierConfig=cms.PSet(modifications=cms.VPSet())) ## Establish references between PATified fat jets and subjets using the BoostedJetMerger process.slimmedJetsCMSTopTagCHSPacked = cms.EDProducer( "BoostedJetMerger", jetSrc=cms.InputTag("selectedPatJetsCMSTopTagCHS"), subjetSrc=cms.InputTag("slimmedJetsCMSTopTagCHSSubjets")) process.packedPatJetsAK8 = cms.EDProducer( "JetSubstructurePacker", jetSrc=cms.InputTag("selectedPatJetsAK8"), distMax=cms.double(0.8), algoTags=cms.VInputTag( # NOTE: For an optimal storage of the AK8 jet daughters, the first subjet collection listed here should be # derived from AK8 jets, i.e., subjets should contain either all or a subset of AK8 constituents. # The CMSTopTag subjets are derived from CA8 jets later matched to AK8 jets and could in principle # contain extra constituents not clustered inside AK8 jets. cms.InputTag("slimmedJetsAK8PFCHSSoftDropPacked"), cms.InputTag("slimmedJetsCMSTopTagCHSPacked")), algoLabels=cms.vstring('SoftDrop', 'CMSTopTag'), fixDaughters=cms.bool(True), packedPFCandidates=cms.InputTag("packedPFCandidates"), ) # switch off daughter re-keying since it's done in the JetSubstructurePacker (and can't be done afterwards) process.slimmedJetsAK8.rekeyDaughters = "0"
def miniAOD_customizeCommon(process): process.patMuons.isoDeposits = cms.PSet() process.patElectrons.isoDeposits = cms.PSet() process.patTaus.isoDeposits = cms.PSet() process.patPhotons.isoDeposits = cms.PSet() # process.patMuons.embedTrack = True # used for IDs process.patMuons.embedCombinedMuon = True # used for IDs process.patMuons.embedMuonBestTrack = True # used for IDs process.patMuons.embedStandAloneMuon = True # maybe? process.patMuons.embedPickyMuon = False # no, use best track process.patMuons.embedTpfmsMuon = False # no, use best track process.patMuons.embedDytMuon = False # no, use best track # # disable embedding of electron and photon associated objects already stored by the ReducedEGProducer process.patElectrons.embedGsfElectronCore = False ## process.patElectrons.embed in AOD externally stored gsf electron core process.patElectrons.embedSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedPflowSuperCluster = False ## process.patElectrons.embed in AOD externally stored supercluster process.patElectrons.embedSeedCluster = False ## process.patElectrons.embed in AOD externally stored the electron's seedcluster process.patElectrons.embedBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's basic clusters process.patElectrons.embedPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's preshower clusters process.patElectrons.embedPflowBasicClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow basic clusters process.patElectrons.embedPflowPreshowerClusters = False ## process.patElectrons.embed in AOD externally stored the electron's pflow preshower clusters process.patElectrons.embedRecHits = False ## process.patElectrons.embed in AOD externally stored the RecHits - can be called from the PATElectronProducer process.patElectrons.electronSource = cms.InputTag( "reducedEgamma", "reducedGedGsfElectrons") process.patElectrons.electronIDSources = cms.PSet( # configure many IDs as InputTag <someName> = <someTag> you # can comment out those you don't want to save some disk space eidRobustLoose=cms.InputTag("reducedEgamma", "eidRobustLoose"), eidRobustTight=cms.InputTag("reducedEgamma", "eidRobustTight"), eidLoose=cms.InputTag("reducedEgamma", "eidLoose"), eidTight=cms.InputTag("reducedEgamma", "eidTight"), eidRobustHighEnergy=cms.InputTag("reducedEgamma", "eidRobustHighEnergy"), ) process.elPFIsoDepositChargedPAT.src = cms.InputTag( "reducedEgamma", "reducedGedGsfElectrons") process.elPFIsoDepositChargedAllPAT.src = cms.InputTag( "reducedEgamma", "reducedGedGsfElectrons") process.elPFIsoDepositNeutralPAT.src = cms.InputTag( "reducedEgamma", "reducedGedGsfElectrons") process.elPFIsoDepositGammaPAT.src = cms.InputTag( "reducedEgamma", "reducedGedGsfElectrons") process.elPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma", "reducedGedGsfElectrons") # process.patPhotons.embedSuperCluster = False ## whether to process.patPhotons.embed in AOD externally stored supercluster process.patPhotons.embedSeedCluster = False ## process.patPhotons.embed in AOD externally stored the photon's seedcluster process.patPhotons.embedBasicClusters = False ## process.patPhotons.embed in AOD externally stored the photon's basic clusters process.patPhotons.embedPreshowerClusters = False ## process.patPhotons.embed in AOD externally stored the photon's preshower clusters process.patPhotons.embedRecHits = False ## process.patPhotons.embed in AOD externally stored the RecHits - can be called from the PATPhotonProducer process.patPhotons.photonSource = cms.InputTag("reducedEgamma", "reducedGedPhotons") process.patPhotons.photonIDSources = cms.PSet( PhotonCutBasedIDLoose=cms.InputTag('reducedEgamma', 'PhotonCutBasedIDLoose'), PhotonCutBasedIDTight=cms.InputTag('reducedEgamma', 'PhotonCutBasedIDTight')) process.phPFIsoDepositChargedPAT.src = cms.InputTag( "reducedEgamma", "reducedGedPhotons") process.phPFIsoDepositChargedAllPAT.src = cms.InputTag( "reducedEgamma", "reducedGedPhotons") process.phPFIsoDepositNeutralPAT.src = cms.InputTag( "reducedEgamma", "reducedGedPhotons") process.phPFIsoDepositGammaPAT.src = cms.InputTag("reducedEgamma", "reducedGedPhotons") process.phPFIsoDepositPUPAT.src = cms.InputTag("reducedEgamma", "reducedGedPhotons") # process.selectedPatJets.cut = cms.string("pt > 10") process.selectedPatMuons.cut = cms.string( "pt > 5 || isPFMuon || (pt > 3 && (isGlobalMuon || isStandAloneMuon || numberOfMatches > 0 || muonID('RPCMuLoose')))" ) process.selectedPatElectrons.cut = cms.string("") process.selectedPatTaus.cut = cms.string( "pt > 18. && tauID('decayModeFinding')> 0.5") process.selectedPatPhotons.cut = cms.string("") # add CMS top tagger from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos process.caTopTagInfos = caTopTagInfos.clone() process.caTopTagInfosPAT = cms.EDProducer( "RecoJetDeltaRTagInfoValueMapProducer", src=cms.InputTag("ak8PFJetsCHS"), matched=cms.InputTag("cmsTopTagPFJetsCHS"), matchedTagInfos=cms.InputTag("caTopTagInfos"), distMax=cms.double(0.8)) #add AK8 from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection addJetCollection( process, labelName='AK8', jetSource=cms.InputTag('ak8PFJetsCHS'), algo='AK', rParam=0.8, jetCorrections=('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagInfos=['caTopTagInfosPAT']) process.patJetsAK8.userData.userFloats.src = [ ] # start with empty list of user floats process.selectedPatJetsAK8.cut = cms.string("pt > 100") process.patJetGenJetMatchAK8.matched = 'slimmedGenJets' ## AK8 groomed masses from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSSoftDrop, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone() process.ak8PFJetsCHSSoftDrop = ak8PFJetsCHSSoftDrop.clone() process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone() process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone() process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi") process.patJetsAK8.userData.userFloats.src += [ 'ak8PFJetsCHSPrunedMass', 'ak8PFJetsCHSSoftDropMass', 'ak8PFJetsCHSTrimmedMass', 'ak8PFJetsCHSFilteredMass' ] # Add AK8 top tagging variables process.patJetsAK8.tagInfoSources = cms.VInputTag( cms.InputTag("caTopTagInfosPAT")) process.patJetsAK8.addTagInfos = cms.bool(True) # add Njetiness process.load('RecoJets.JetProducers.nJettinessAdder_cfi') process.NjettinessAK8 = process.Njettiness.clone() process.NjettinessAK8.src = cms.InputTag("ak8PFJetsCHS") process.NjettinessAK8.cone = cms.double(0.8) process.patJetsAK8.userData.userFloats.src += [ 'NjettinessAK8:tau1', 'NjettinessAK8:tau2', 'NjettinessAK8:tau3' ] # from PhysicsTools.PatAlgos.tools.trigTools import switchOnTriggerStandAlone switchOnTriggerStandAlone(process, outputModule='') process.patTrigger.packTriggerPathNames = cms.bool(True) # # apply type I/type I + II PFMEt corrections to pat::MET object # and estimate systematic uncertainties on MET # FIXME: this and the typeI MET should become AK4 once we have the proper JEC? from PhysicsTools.PatUtils.tools.runType1PFMEtUncertainties import runType1PFMEtUncertainties addJetCollection(process, postfix="ForMetUnc", labelName='AK4PF', jetSource=cms.InputTag('ak4PFJets'), jetCorrections=('AK4PF', ['L1FastJet', 'L2Relative', 'L3Absolute'], '')) process.patJetsAK4PFForMetUnc.getJetMCFlavour = False runType1PFMEtUncertainties(process, addToPatDefaultSequence=False, jetCollection="selectedPatJetsAK4PFForMetUnc", electronCollection="selectedPatElectrons", muonCollection="selectedPatMuons", tauCollection="selectedPatTaus", makeType1p2corrPFMEt=True, outputModule=None) #keep this after all addJetCollections otherwise it will attempt computing them also for stuf with no taginfos #Some useful BTAG vars process.patJets.userData.userFunctions = cms.vstring( '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.M):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).numberOfSourceCandidatePtrs):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).value):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").flightDistance(0).significance):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).p4.z):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.x):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.y):(0)', '?(tagInfoCandSecondaryVertex("pfSecondaryVertex").nVertices()>0)?(tagInfoCandSecondaryVertex("pfSecondaryVertex").secondaryVertex(0).vertex.z):(0)', ) process.patJets.userData.userFunctionLabels = cms.vstring( 'vtxMass', 'vtxNtracks', 'vtx3DVal', 'vtx3DSig', 'vtxPx', 'vtxPy', 'vtxPz', 'vtxPosX', 'vtxPosY', 'vtxPosZ') process.patJets.tagInfoSources = cms.VInputTag( cms.InputTag("pfSecondaryVertexTagInfos")) process.patJets.addTagInfos = cms.bool(True) # ## PU JetID process.load("PhysicsTools.PatAlgos.slimming.pileupJetId_cfi") process.patJets.userData.userFloats.src = [ cms.InputTag("pileupJetId:fullDiscriminant"), ] #VID Electron IDs electron_ids = [ 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_CSA14_50ns_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_CSA14_PU20bx25_V0_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV50_CSA14_25ns_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV50_CSA14_startup_cff' ] switchOnVIDElectronIdProducer(process) process.egmGsfElectronIDs.physicsObjectSrc = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronIDValueMapProducer.src = \ cms.InputTag("reducedEgamma","reducedGedGsfElectrons") process.electronIDValueMapProducer.ebReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedEBRecHits") process.electronIDValueMapProducer.eeReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedEERecHits") process.electronIDValueMapProducer.esReducedRecHitCollection = \ cms.InputTag("reducedEgamma","reducedESRecHits") for idmod in electron_ids: setupAllVIDIdsInModule(process, idmod, setupVIDElectronSelection)
from PhysicsTools.PatAlgos.tools.metTools import addMETCollection addMETCollection(process, labelName='patMETPF', metSource='pfType1CorrectedMet') ################################################################################################ ############################ Run extra jet reconstruction ###################################### ################################################################################################ from RecoJets.Configuration.RecoPFJets_cff import * process.ca15PFJetsCHS = ca8PFJetsCHS.clone(rParam=1.5,src='pfNoPileUpJME',doAreaFastjet=False) process.hepTopTagPFJetsCHS = hepTopTagPFJetsCHS.clone(src='pfNoPileUpJME') from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos, hepTopTagInfos process.caTopTagInfos = caTopTagInfos.clone() ################################################################################################ ############################ Configure jets in PAT ############################################# ################################################################################################ ## uncomment the following line to add different jet collections ## to the event content from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection ## uncomment the following lines to add ak4PFJetsCHS to your PAT output addJetCollection( process,
addMETCollection(process, labelName='patMETPF', metSource='pfType1CorrectedMet') ################################################################################################ ############################ Run extra jet reconstruction ###################################### ################################################################################################ from RecoJets.Configuration.RecoPFJets_cff import * process.ca15PFJetsCHS = ca8PFJetsCHS.clone(rParam=1.5, src='pfNoPileUpJME', doAreaFastjet=False) process.hepTopTagPFJetsCHS = hepTopTagPFJetsCHS.clone(src='pfNoPileUpJME') from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos, hepTopTagInfos process.caTopTagInfos = caTopTagInfos.clone() ################################################################################################ ############################ Configure jets in PAT ############################################# ################################################################################################ ## uncomment the following line to add different jet collections ## to the event content from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection from PhysicsTools.PatAlgos.tools.jetTools import switchJetCollection ## uncomment the following lines to add ak4PFJetsCHS to your PAT output addJetCollection( process, labelName='AK4PFCHS', jetSource=cms.InputTag('ak4PFJetsCHS'),
def applySubstructure( process ) : from PhysicsTools.PatAlgos.tools.jetTools import addJetCollection # add CMS top tagger from RecoJets.JetProducers.caTopTaggers_cff import caTopTagInfos process.caTopTagInfos = caTopTagInfos.clone() process.caTopTagInfosPAT = cms.EDProducer("RecoJetDeltaRTagInfoValueMapProducer", src = cms.InputTag("ak8PFJetsCHS"), matched = cms.InputTag("cmsTopTagPFJetsCHS"), matchedTagInfos = cms.InputTag("caTopTagInfos"), distMax = cms.double(0.8) ) from PhysicsTools.PatAlgos.producersLayer1.jetProducer_cfi import patJets as patJetsDefault #add AK8 addJetCollection(process, labelName = 'AK8', jetSource = cms.InputTag('ak8PFJetsCHS'), algo= 'AK', rParam = 0.8, jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagDiscriminators = ([x.getModuleLabel() for x in patJetsDefault.discriminatorSources] + ['pfBoostedDoubleSecondaryVertexAK8BJetTags']), genJetCollection = cms.InputTag('slimmedGenJetsAK8') ) process.patJetsAK8.userData.userFloats.src = [] # start with empty list of user floats process.selectedPatJetsAK8.cut = cms.string("pt > 170") ## AK8 groomed masses from RecoJets.Configuration.RecoPFJets_cff import ak8PFJetsCHSPruned, ak8PFJetsCHSSoftDrop, ak8PFJetsCHSFiltered, ak8PFJetsCHSTrimmed process.ak8PFJetsCHSPruned = ak8PFJetsCHSPruned.clone() process.ak8PFJetsCHSSoftDrop = ak8PFJetsCHSSoftDrop.clone() process.ak8PFJetsCHSTrimmed = ak8PFJetsCHSTrimmed.clone() process.ak8PFJetsCHSFiltered = ak8PFJetsCHSFiltered.clone() process.load("RecoJets.JetProducers.ak8PFJetsCHS_groomingValueMaps_cfi") process.patJetsAK8.userData.userFloats.src += ['ak8PFJetsCHSPrunedMass','ak8PFJetsCHSSoftDropMass','ak8PFJetsCHSTrimmedMass','ak8PFJetsCHSFilteredMass'] # Add AK8 top tagging variables process.patJetsAK8.tagInfoSources = cms.VInputTag(cms.InputTag("caTopTagInfosPAT")) process.patJetsAK8.addTagInfos = cms.bool(True) # add Njetiness process.load('RecoJets.JetProducers.nJettinessAdder_cfi') process.NjettinessAK8 = process.Njettiness.clone() process.NjettinessAK8.src = cms.InputTag("ak8PFJetsCHS") process.NjettinessAK8.cone = cms.double(0.8) process.patJetsAK8.userData.userFloats.src += ['NjettinessAK8:tau1','NjettinessAK8:tau2','NjettinessAK8:tau3'] ## PATify pruned fat jets addJetCollection( process, labelName = 'AK8PFCHSSoftDrop', jetSource = cms.InputTag('ak8PFJetsCHSSoftDrop'), btagDiscriminators = ['None'], jetCorrections = ('AK8PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), getJetMCFlavour = False # jet flavor disabled ) ## PATify soft drop subjets addJetCollection( process, labelName = 'AK8PFCHSSoftDropSubjets', jetSource = cms.InputTag('ak8PFJetsCHSSoftDrop','SubJets'), algo = 'ak', # needed for subjet flavor clustering rParam = 0.8, # needed for subjet flavor clustering btagDiscriminators = ['pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags'], jetCorrections = ('AK4PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), explicitJTA = True, # needed for subjet b tagging svClustering = True, # needed for subjet b tagging genJetCollection = cms.InputTag('slimmedGenJets'), fatJets=cms.InputTag('ak8PFJetsCHS'), # needed for subjet flavor clustering groomedFatJets=cms.InputTag('ak8PFJetsCHSSoftDrop') # needed for subjet flavor clustering ) process.selectedPatJetsAK8PFCHSSoftDrop.cut = cms.string("pt > 170") process.slimmedJetsAK8PFCHSSoftDropSubjets = cms.EDProducer("PATJetSlimmer", src = cms.InputTag("selectedPatJetsAK8PFCHSSoftDropSubjets"), packedPFCandidates = cms.InputTag("packedPFCandidates"), dropJetVars = cms.string("1"), dropDaughters = cms.string("0"), rekeyDaughters = cms.string("1"), dropTrackRefs = cms.string("1"), dropSpecific = cms.string("1"), dropTagInfos = cms.string("1"), modifyJets = cms.bool(True), modifierConfig = cms.PSet( modifications = cms.VPSet() ) ) ## Establish references between PATified fat jets and subjets using the BoostedJetMerger process.slimmedJetsAK8PFCHSSoftDropPacked = cms.EDProducer("BoostedJetMerger", jetSrc=cms.InputTag("selectedPatJetsAK8PFCHSSoftDrop"), subjetSrc=cms.InputTag("slimmedJetsAK8PFCHSSoftDropSubjets") ) addJetCollection( process, labelName = 'CMSTopTagCHS', jetSource = cms.InputTag('cmsTopTagPFJetsCHS'), jetCorrections = ('AK8PFchs', cms.vstring(['L1FastJet', 'L2Relative', 'L3Absolute']), 'None'), btagDiscriminators = ['None'], genJetCollection = cms.InputTag('slimmedGenJetsAK8'), getJetMCFlavour = False # ) process.selectedPatJetsCMSTopTagCHS.cut = cms.string("pt > 200") addJetCollection( process, labelName = 'CMSTopTagCHSSubjets', jetSource = cms.InputTag('cmsTopTagPFJetsCHS','caTopSubJets'), algo = 'AK', # needed for subjet flavor clustering rParam = 0.8, # needed for subjet flavor clustering btagDiscriminators = ['pfCombinedSecondaryVertexV2BJetTags', 'pfCombinedInclusiveSecondaryVertexV2BJetTags'], jetCorrections = ('AK4PFchs', ['L1FastJet', 'L2Relative', 'L3Absolute'], 'None'), genJetCollection = cms.InputTag('slimmedGenJets'), # Using ak4GenJets for matching which is not entirely appropriate explicitJTA = True, # needed for subjet b tagging svClustering = True, # needed for subjet b tagging fatJets=cms.InputTag('ak8PFJetsCHS'), # needed for subjet flavor clustering groomedFatJets=cms.InputTag('cmsTopTagPFJetsCHS') # needed for subjet flavor clustering ) process.slimmedJetsCMSTopTagCHSSubjets = cms.EDProducer("PATJetSlimmer", src = cms.InputTag("selectedPatJetsCMSTopTagCHSSubjets"), packedPFCandidates = cms.InputTag("packedPFCandidates"), dropJetVars = cms.string("1"), dropDaughters = cms.string("0"), rekeyDaughters = cms.string("1"), dropTrackRefs = cms.string("1"), dropSpecific = cms.string("1"), dropTagInfos = cms.string("1"), modifyJets = cms.bool(True), modifierConfig = cms.PSet( modifications = cms.VPSet() ) ) ## Establish references between PATified fat jets and subjets using the BoostedJetMerger process.slimmedJetsCMSTopTagCHSPacked = cms.EDProducer("BoostedJetMerger", jetSrc=cms.InputTag("selectedPatJetsCMSTopTagCHS"), subjetSrc=cms.InputTag("slimmedJetsCMSTopTagCHSSubjets") ) process.packedPatJetsAK8 = cms.EDProducer("JetSubstructurePacker", jetSrc = cms.InputTag("selectedPatJetsAK8"), distMax = cms.double(0.8), algoTags = cms.VInputTag( # NOTE: For an optimal storage of the AK8 jet daughters, the first subjet collection listed here should be # derived from AK8 jets, i.e., subjets should contain either all or a subset of AK8 constituents. # The CMSTopTag subjets are derived from CA8 jets later matched to AK8 jets and could in principle # contain extra constituents not clustered inside AK8 jets. cms.InputTag("slimmedJetsAK8PFCHSSoftDropPacked"), cms.InputTag("slimmedJetsCMSTopTagCHSPacked") ), algoLabels = cms.vstring( 'SoftDrop', 'CMSTopTag' ), fixDaughters = cms.bool(True), packedPFCandidates = cms.InputTag("packedPFCandidates"), ) # switch off daughter re-keying since it's done in the JetSubstructurePacker (and can't be done afterwards) process.slimmedJetsAK8.rekeyDaughters = "0"