jetForLepJetVar = cms.InputTag("ptRatioRelForEle:jetForLepJetVar") # warning: Ptr is null if no match is found ), ) # this below is used only in some eras slimmedElectronsWithDZ = cms.EDProducer("PATElectronUpdater", src = cms.InputTag("slimmedElectronsWithUserData"), vertices = cms.InputTag("offlineSlimmedPrimaryVertices") ) finalElectrons = cms.EDFilter("PATElectronRefSelector", src = cms.InputTag("slimmedElectronsWithUserData"), cut = cms.string("pt > 5 ") ) run2_miniAOD_80XLegacy.toModify(finalElectrons, src = "slimmedElectronsWithDZ") run2_nanoAOD_92X.toModify(finalElectrons, src = "slimmedElectronsWithDZ") electronMVATTH= cms.EDProducer("EleBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","electrons"), weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/el_BDTG.weights.xml"), name = cms.string("electronMVATTH"), isClassifier = cms.bool(True), variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_mvaIdSpring16HZZ"]), variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), LepGood_jetNDauChargedMVASel = cms.string("userFloat('jetNDauChargedMVASel')"), LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), LepGood_jetPtRelv2 = cms.string("userFloat('ptRel')"), LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"),
pfCandsForMiniIso=cms.InputTag("packedPFCandidates"), miniIsoParamsB=PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi. patElectrons.miniIsoParamsB, # so they're in sync miniIsoParamsE=PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi. patElectrons.miniIsoParamsE, # so they're in sync ) run2_miniAOD_80XLegacy.toModify(slimmedElectronsUpdated, computeMiniIso=True) from PhysicsTools.SelectorUtils.tools.vid_id_tools import setupVIDSelection from RecoEgamma.ElectronIdentification.egmGsfElectronIDs_cff import * from RecoEgamma.ElectronIdentification.heepIdVarValueMapProducer_cfi import * electronMVAValueMapProducer.srcMiniAOD = cms.InputTag("slimmedElectrons") run2_miniAOD_80XLegacy.toModify(electronMVAValueMapProducer, srcMiniAOD="slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(electronMVAValueMapProducer, srcMiniAOD="slimmedElectronsUpdated") egmGsfElectronIDs.physicsObjectIDs = cms.VPSet() egmGsfElectronIDs.physicsObjectSrc = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(egmGsfElectronIDs, physicsObjectSrc="slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(egmGsfElectronIDs, physicsObjectSrc="slimmedElectronsUpdated") heepIDVarValueMaps.elesMiniAOD = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(heepIDVarValueMaps, elesMiniAOD="slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(heepIDVarValueMaps, elesMiniAOD="slimmedElectronsUpdated") _electron_id_modules_WorkingPoints = cms.PSet(
run2_miniAOD_80XLegacy.toModify( isoForEle, src="slimmedElectronsUpdated", EAFile_MiniIso= "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", EAFile_PFIso= "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt" ) run2_nanoAOD_94X2016.toModify( isoForEle, EAFile_MiniIso= "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", EAFile_PFIso= "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt" ) run2_nanoAOD_92X.toModify(isoForEle, src="slimmedElectronsUpdated") ptRatioRelForEle = cms.EDProducer( "ElectronJetVarProducer", srcJet=cms.InputTag("updatedJets"), srcLep=cms.InputTag("slimmedElectrons"), srcVtx=cms.InputTag("offlineSlimmedPrimaryVertices"), ) run2_miniAOD_80XLegacy.toModify(ptRatioRelForEle, srcLep="slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(ptRatioRelForEle, srcLep="slimmedElectronsUpdated") import EgammaAnalysis.ElectronTools.calibratedElectronsRun2_cfi calibratedPatElectrons80X = EgammaAnalysis.ElectronTools.calibratedElectronsRun2_cfi.calibratedPatElectrons.clone( electrons=cms.InputTag("slimmedElectronsUpdated"),
src = cms.InputTag("slimmedElectrons"), vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), computeMiniIso = cms.bool(False), pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), miniIsoParamsB = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsB, # so they're in sync miniIsoParamsE = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsE, # so they're in sync ) run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso = True ) from PhysicsTools.SelectorUtils.tools.vid_id_tools import setupVIDSelection from RecoEgamma.ElectronIdentification.egmGsfElectronIDs_cff import * from RecoEgamma.ElectronIdentification.heepIdVarValueMapProducer_cfi import * electronMVAValueMapProducer.srcMiniAOD = cms.InputTag("slimmedElectrons") run2_miniAOD_80XLegacy.toModify(electronMVAValueMapProducer, srcMiniAOD = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(electronMVAValueMapProducer, srcMiniAOD = "slimmedElectronsUpdated") egmGsfElectronIDs.physicsObjectIDs = cms.VPSet() egmGsfElectronIDs.physicsObjectSrc = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated") heepIDVarValueMaps.elesMiniAOD = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") _electron_id_vid_modules=[ 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Summer16_80X_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronHLTPreselecition_Summer16_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff', 'RecoEgamma.ElectronIdentification.Identification.mvaElectronID_Spring16_GeneralPurpose_V1_cff',
# btagDeepC = Var("bDiscriminator('pfDeepCSVJetTags:probc')",float,doc="CMVA V2 btag discriminator",precision=10), #puIdDisc = Var("userFloat('pileupJetId:fullDiscriminant')",float,doc="Pilup ID discriminant",precision=10), # nConstituents = Var("numberOfDaughters()",int,doc="Number of particles in the jet"), # rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), ) ) ### Era dependent customization run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.msoftdrop, expr = cms.string("userFloat(\'ak8PFJetsCHSSoftDropMass\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau1, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau1\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau2, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau2\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau3, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau3\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n3b1, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.n3b1, expr = cms.string("-1"),) subJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"), cut = cms.string(""), #probably already applied in miniaod name = cms.string("SubJet"), doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), singleton = cms.bool(False), # the number of entries is variable extension = cms.bool(False), # this is the main table for the jets variables = cms.PSet(P4Vars, btagCMVA = Var("bDiscriminator('pfCombinedMVAV2BJetTags')",float,doc="CMVA V2 btag discriminator",precision=10), btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')+bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="DeepCSV b+bb tag discriminator",precision=10),
from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff import run2_nanoAOD_92X from PhysicsTools.NanoAOD.common_cff import * import PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi # this below is used only in some eras slimmedMuonsUpdated = cms.EDProducer( "PATMuonUpdater", src=cms.InputTag("slimmedMuons"), vertices=cms.InputTag("offlineSlimmedPrimaryVertices"), computeMiniIso=cms.bool(False), pfCandsForMiniIso=cms.InputTag("packedPFCandidates"), miniIsoParams=PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi. patMuons.miniIsoParams, # so they're in sync recomputeMuonBasicSelectors=cms.bool(False), ) run2_nanoAOD_92X.toModify(slimmedMuonsUpdated, recomputeMuonBasicSelectors=True) run2_miniAOD_80XLegacy.toModify(slimmedMuonsUpdated, computeMiniIso=True, recomputeMuonBasicSelectors=True) isoForMu = cms.EDProducer( "MuonIsoValueMapProducer", src=cms.InputTag("slimmedMuons"), relative=cms.bool(False), rho_MiniIso=cms.InputTag("fixedGridRhoFastjetAll"), EAFile_MiniIso=cms.FileInPath( "PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt" ), ) run2_miniAOD_80XLegacy.toModify( isoForMu,
"ptRatioRelForMu:jetForLepJetVar" ) # warning: Ptr is null if no match is found ), ) # this below is used only in some eras slimmedMuonsWithDZ = cms.EDProducer( "PATMuonUpdater", src=cms.InputTag("slimmedMuonsWithUserData"), vertices=cms.InputTag("offlineSlimmedPrimaryVertices")) finalMuons = cms.EDFilter( "PATMuonRefSelector", src=cms.InputTag("slimmedMuonsWithUserData"), cut=cms.string("pt > 3 && track.isNonnull && isLooseMuon")) run2_miniAOD_80XLegacy.toModify(finalMuons, src="slimmedMuonsWithDZ") run2_nanoAOD_92X.toModify(finalMuons, src="slimmedMuonsWithDZ") muonMVATTH = cms.EDProducer( "MuonBaseMVAValueMapProducer", src=cms.InputTag("linkedObjects", "muons"), weightFile=cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml"), name=cms.string("muonMVATTH"), isClassifier=cms.bool(True), variablesOrder=cms.vstring([ "LepGood_pt", "LepGood_eta", "LepGood_jetNDauChargedMVASel", "LepGood_miniRelIsoCharged", "LepGood_miniRelIsoNeutral", "LepGood_jetPtRelv2", "LepGood_jetPtRatio", "LepGood_jetBTagCSV", "LepGood_sip3d", "LepGood_dxy", "LepGood_dz", "LepGood_segmentCompatibility" ]), variables=cms.PSet(
hoe = Var("hadronicOverEm()",float,doc="H over E",precision=8), isScEtaEB = Var("abs(superCluster().eta()) < 1.4442",bool,doc="is supercluster eta within barrel acceptance"), isScEtaEE = Var("abs(superCluster().eta()) > 1.566 && abs(superCluster().eta()) < 2.5",bool,doc="is supercluster eta within endcap acceptance"), ) ) photonTable.variables.pt = Var("pt*userFloat('ecalEnergyPostCorr')/userFloat('ecalEnergyPreCorr')", float, precision=-1) run2_miniAOD_80XLegacy.toModify(photonTable.variables, cutBasedBitmap = None, cutBased = Var("userInt('cutbasedID_loose')+userInt('cutbasedID_medium')+userInt('cutbasedID_tight')",int,doc="cut-based ID (0:fail, 1::loose, 2:medium, 3:tight)"), pt = Var("pt*userFloat('eCorr')", float, precision=-1, doc="p_{T} (no energy correction & smearing)"), energyErr = Var("getCorrectedEnergyError('regression2')*userFloat('eCorr')",float,doc="energy error of the cluster from regression",precision=6), eCorr = Var("userFloat('eCorr')",float,doc="ratio of the calibrated energy/miniaod energy"), ) run2_nanoAOD_92X.toModify(photonTable.variables, pt = Var("pt", float, precision=-1, doc="p_{T} (no energy correction & smearing)"), energyErr = Var("getCorrectedEnergyError('regression2')",float,doc="energy error of the cluster from regression",precision=6), eCorr = None, ) photonsMCMatchForTable = cms.EDProducer("MCMatcher", # cut on deltaR, deltaPt/Pt; pick best by deltaR src = photonTable.src, # final reco collection matched = cms.InputTag("finalGenParticles"), # final mc-truth particle collection mcPdgId = cms.vint32(11,22), # one or more PDG ID (11 = el, 22 = pho); absolute values (see below) checkCharge = cms.bool(False), # True = require RECO and MC objects to have the same charge mcStatus = cms.vint32(1), # PYTHIA status code (1 = stable, 2 = shower, 3 = hard scattering) maxDeltaR = cms.double(0.3), # Minimum deltaR for the match maxDPtRel = cms.double(0.5), # Minimum deltaPt/Pt for the match resolveAmbiguities = cms.bool(True), # Forbid two RECO objects to match to the same GEN object resolveByMatchQuality = cms.bool(True), # False = just match input in order; True = pick lowest deltaR pair first )
src = cms.InputTag("slimmedElectrons"), vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), computeMiniIso = cms.bool(False), pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), miniIsoParamsB = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsB, # so they're in sync miniIsoParamsE = PhysicsTools.PatAlgos.producersLayer1.electronProducer_cfi.patElectrons.miniIsoParamsE, # so they're in sync ) run2_miniAOD_80XLegacy.toModify( slimmedElectronsUpdated, computeMiniIso = True ) from PhysicsTools.SelectorUtils.tools.vid_id_tools import setupVIDSelection from RecoEgamma.ElectronIdentification.egmGsfElectronIDs_cff import * from RecoEgamma.ElectronIdentification.heepIdVarValueMapProducer_cfi import * electronMVAValueMapProducer.srcMiniAOD = cms.InputTag("slimmedElectrons") run2_miniAOD_80XLegacy.toModify(electronMVAValueMapProducer, srcMiniAOD = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(electronMVAValueMapProducer, srcMiniAOD = "slimmedElectronsUpdated") egmGsfElectronIDs.physicsObjectIDs = cms.VPSet() egmGsfElectronIDs.physicsObjectSrc = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(egmGsfElectronIDs, physicsObjectSrc = "slimmedElectronsUpdated") heepIDVarValueMaps.elesMiniAOD = cms.InputTag('slimmedElectrons') run2_miniAOD_80XLegacy.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(heepIDVarValueMaps, elesMiniAOD = "slimmedElectronsUpdated") _electron_id_modules_WorkingPoints = cms.PSet( modules = cms.vstring( 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V1_cff', 'RecoEgamma.ElectronIdentification.Identification.cutBasedElectronID_Fall17_94X_V2_cff', 'RecoEgamma.ElectronIdentification.Identification.heepElectronID_HEEPV70_cff',
) for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: # to be updated when SF for Summer16MiniAODv3 MC will be available modifier.toModify(btagWeightTable, cut = cms.string("pt > 25. && abs(eta) < 2.4"), #80X corresponds to 2016, |eta| < 2.4 weightFiles = cms.vstring( #80X corresponds to 2016 SFs btagSFdir+"CSVv2_Moriond17_B_H.csv", "unavailable", btagSFdir+"cMVAv2_Moriond17_B_H.csv" ) ) run2_nanoAOD_92X.toModify(btagWeightTable, #92X corresponds to MCv1, for which SFs are unavailable weightFiles = cms.vstring( "unavailable", "unavailable", "unavailable" ) ) genWeightsTable = cms.EDProducer("GenWeightsTableProducer", genEvent = cms.InputTag("generator"), lheInfo = cms.InputTag("externalLHEProducer"), preferredPDFs = cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html cms.PSet( name = cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid = cms.uint32(91400) ), cms.PSet( name = cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid = cms.uint32(306000) ), cms.PSet( name = cms.string("NNPDF30_nlo_as_0118"), lhaid = cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... cms.PSet( name = cms.string("NNPDF30_lo_as_0130"), lhaid = cms.uint32(262000) ), # some MLM 80X samples have only this (e.g. /store/mc/RunIISummer16MiniAODv2/DYJetsToLL_M-50_TuneCUETP8M1_13TeV-madgraphMLM-pythia8/MINIAODSIM/PUMoriond17_80X_mcRun2_asymptotic_2016_TrancheIV_v6_ext1-v2/120000/02A210D6-F5C3-E611-B570-008CFA197BD4.root ) cms.PSet( name = cms.string("NNPDF30_nlo_nf_4_pdfas"), lhaid = cms.uint32(292000) ), # some FXFX 80X samples have only this (e.g. WWTo1L1Nu2Q, WWTo4Q) cms.PSet( name = cms.string("NNPDF30_nlo_nf_5_pdfas"), lhaid = cms.uint32(292200) ), # some FXFX 80X samples have only this (e.g. DYJetsToLL_Pt, WJetsToLNu_Pt, DYJetsToNuNu_Pt) ),
userCands = cms.PSet( jetForLepJetVar = cms.InputTag("ptRatioRelForMu:jetForLepJetVar") # warning: Ptr is null if no match is found ), ) # this below is used only in some eras slimmedMuonsWithDZ = cms.EDProducer("PATMuonUpdater", src = cms.InputTag("slimmedMuonsWithUserData"), vertices = cms.InputTag("offlineSlimmedPrimaryVertices") ) finalMuons = cms.EDFilter("PATMuonRefSelector", src = cms.InputTag("slimmedMuonsWithUserData"), cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon") ) run2_miniAOD_80XLegacy.toModify(finalMuons, src = "slimmedMuonsWithDZ") run2_nanoAOD_92X.toModify(finalMuons, src = "slimmedMuonsWithDZ") muonMVATTH= cms.EDProducer("MuonBaseMVAValueMapProducer", src = cms.InputTag("linkedObjects","muons"), weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG.weights.xml"), name = cms.string("muonMVATTH"), isClassifier = cms.bool(True), variablesOrder = cms.vstring(["LepGood_pt","LepGood_eta","LepGood_jetNDauChargedMVASel","LepGood_miniRelIsoCharged","LepGood_miniRelIsoNeutral","LepGood_jetPtRelv2","LepGood_jetPtRatio","LepGood_jetBTagCSV","LepGood_sip3d","LepGood_dxy","LepGood_dz","LepGood_segmentCompatibility"]), variables = cms.PSet( LepGood_pt = cms.string("pt"), LepGood_eta = cms.string("eta"), LepGood_jetNDauChargedMVASel = cms.string("userFloat('jetNDauChargedMVASel')"), LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"), LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"), LepGood_jetPtRelv2 = cms.string("userFloat('ptRel')"), LepGood_jetPtRatio = cms.string("min(userFloat('ptRatio'),1.5)"),
## Producer for ttbar categorisation ID from TopQuarkAnalysis.TopTools.GenTtbarCategorizer_cfi import categorizeGenTtbar categorizeGenTtbar = categorizeGenTtbar.clone( genJetPtMin=20., genJetAbsEtaMax=2.4, genJets=cms.InputTag("slimmedGenJets"), ) ### Era dependent customization run2_miniAOD_80XLegacy.toModify( matchGenBHadron, jetFlavourInfos=cms.InputTag("genJetFlavourAssociation"), ) run2_nanoAOD_92X.toModify( matchGenBHadron, jetFlavourInfos=cms.InputTag("genJetFlavourAssociation"), ) run2_miniAOD_80XLegacy.toModify( matchGenCHadron, jetFlavourInfos=cms.InputTag("genJetFlavourAssociation"), ) run2_nanoAOD_92X.toModify( matchGenCHadron, jetFlavourInfos=cms.InputTag("genJetFlavourAssociation"), ) ##################### Tables for final output and docs ########################## ttbarCategoryTable = cms.EDProducer( "GlobalVariablesTableProducer", variables=cms.PSet(
matchGenCHadron = matchGenCHadron.clone( genParticles = cms.InputTag("prunedGenParticles"), jetFlavourInfos = cms.InputTag("slimmedGenJetsFlavourInfos"), ) ## Producer for ttbar categorisation ID from TopQuarkAnalysis.TopTools.GenTtbarCategorizer_cfi import categorizeGenTtbar categorizeGenTtbar = categorizeGenTtbar.clone( genJetPtMin = 20., genJetAbsEtaMax = 2.4, genJets = cms.InputTag("slimmedGenJets"), ) ### Era dependent customization run2_miniAOD_80XLegacy.toModify( matchGenBHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) run2_nanoAOD_92X.toModify( matchGenBHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) run2_miniAOD_80XLegacy.toModify( matchGenCHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) run2_nanoAOD_92X.toModify( matchGenCHadron, jetFlavourInfos = cms.InputTag("genJetFlavourAssociation"),) ##################### Tables for final output and docs ########################## ttbarCategoryTable = cms.EDProducer("GlobalVariablesTableProducer", variables = cms.PSet( genTtbarId = ExtVar( cms.InputTag("categorizeGenTtbar:genTtbarId"), "int", doc = "ttbar categorization") ) ) ttbarCatMCProducers = cms.Sequence(matchGenBHadron + matchGenCHadron + categorizeGenTtbar)
import FWCore.ParameterSet.Config as cms from Configuration.Eras.Modifier_run2_miniAOD_80XLegacy_cff import run2_miniAOD_80XLegacy from Configuration.Eras.Modifier_run2_nanoAOD_92X_cff import run2_nanoAOD_92X from PhysicsTools.NanoAOD.common_cff import * import PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi # this below is used only in some eras slimmedMuonsUpdated = cms.EDProducer("PATMuonUpdater", src = cms.InputTag("slimmedMuons"), vertices = cms.InputTag("offlineSlimmedPrimaryVertices"), computeMiniIso = cms.bool(False), pfCandsForMiniIso = cms.InputTag("packedPFCandidates"), miniIsoParams = PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi.patMuons.miniIsoParams, # so they're in sync recomputeMuonBasicSelectors = cms.bool(False), ) run2_nanoAOD_92X.toModify( slimmedMuonsUpdated, recomputeMuonBasicSelectors = True ) run2_miniAOD_80XLegacy.toModify( slimmedMuonsUpdated, computeMiniIso = True, recomputeMuonBasicSelectors = True ) isoForMu = cms.EDProducer("MuonIsoValueMapProducer", src = cms.InputTag("slimmedMuons"), relative = cms.bool(False), rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_80X.txt"), ) run2_miniAOD_80XLegacy.toModify(isoForMu, src = "slimmedMuonsUpdated") run2_nanoAOD_92X.toModify(isoForMu, src = "slimmedMuonsUpdated") ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer", srcJet = cms.InputTag("slimmedJets"), srcLep = cms.InputTag("slimmedMuons"), srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"),
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n2b1, expr=cms.string("-1"), ) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n3b1, expr=cms.string("-1"), ) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables, jetId=Var("userInt('tightId')*2+userInt('looseId')", int, doc="Jet ID flags bit1 is loose, bit2 is tight")) run2_nanoAOD_92X.toModify( fatJetTable.variables.tau4, expr=cms.string("-1"), ) run2_nanoAOD_92X.toModify( fatJetTable.variables.n2b1, expr=cms.string("-1"), ) run2_nanoAOD_92X.toModify( fatJetTable.variables.n3b1, expr=cms.string("-1"), ) subJetTable = cms.EDProducer( "SimpleCandidateFlatTableProducer", src=cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked", "SubJets"), cut=cms.string(""), #probably already applied in miniaod name=cms.string("SubJet"),
run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau3, expr=cms.string( "userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau3\')"), ) run2_miniAOD_80XLegacy.toModify(fatJetTable.variables, tau4=None) run2_miniAOD_80XLegacy.toModify(fatJetTable.variables, n2b1=None) run2_miniAOD_80XLegacy.toModify(fatJetTable.variables, n3b1=None) for modifier in run2_miniAOD_80XLegacy, run2_nanoAOD_94X2016: modifier.toModify(fatJetTable.variables, jetId=Var( "userInt('tightId')*2+userInt('looseId')", int, doc="Jet ID flags bit1 is loose, bit2 is tight")) run2_nanoAOD_92X.toModify(fatJetTable.variables, tau4=None) run2_nanoAOD_92X.toModify(fatJetTable.variables, n2b1=None) run2_nanoAOD_92X.toModify(fatJetTable.variables, n3b1=None) subJetTable = cms.EDProducer( "SimpleCandidateFlatTableProducer", src=cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked", "SubJets"), cut=cms.string(""), #probably already applied in miniaod name=cms.string("SubJet"), doc=cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), singleton=cms.bool(False), # the number of entries is variable extension=cms.bool(False), # this is the main table for the jets variables=cms.PSet( P4Vars, btagCMVA=Var("bDiscriminator('pfCombinedMVAV2BJetTags')", float,
isoForEle = cms.EDProducer("EleIsoValueMapProducer", src = cms.InputTag("slimmedElectrons"), relative = cms.bool(False), rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"), rho_PFIso = cms.InputTag("fixedGridRhoFastjetAll"), EAFile_MiniIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), EAFile_PFIso = cms.FileInPath("RecoEgamma/ElectronIdentification/data/Fall17/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_94X.txt"), ) run2_miniAOD_80XLegacy.toModify(isoForEle, src = "slimmedElectronsUpdated", EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") run2_nanoAOD_94X2016.toModify(isoForEle, EAFile_MiniIso = "RecoEgamma/ElectronIdentification/data/Spring15/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_25ns.txt", EAFile_PFIso = "RecoEgamma/ElectronIdentification/data/Summer16/effAreaElectrons_cone03_pfNeuHadronsAndPhotons_80X.txt") run2_nanoAOD_92X.toModify(isoForEle, src = "slimmedElectronsUpdated") ptRatioRelForEle = cms.EDProducer("ElectronJetVarProducer", srcJet = cms.InputTag("updatedJets"), srcLep = cms.InputTag("slimmedElectrons"), srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"), ) run2_miniAOD_80XLegacy.toModify(ptRatioRelForEle, srcLep = "slimmedElectronsUpdated") run2_nanoAOD_92X.toModify(ptRatioRelForEle, srcLep = "slimmedElectronsUpdated") import EgammaAnalysis.ElectronTools.calibratedElectronsRun2_cfi import RecoEgamma.EgammaTools.calibratedEgammas_cff calibratedPatElectrons80XLegacy = RecoEgamma.EgammaTools.calibratedEgammas_cff.calibratedPatElectrons.clone( produceCalibratedObjs = False,
measurementTypesC=cms.vstring("iterativefit", "iterativefit", "iterativefit"), measurementTypesUDSG=cms.vstring("iterativefit", "iterativefit", "iterativefit"), sysTypes=cms.vstring("central", "central", "central")) run2_miniAOD_80XLegacy.toModify( btagWeightTable, cut=cms.string( "pt > 25. && abs(eta) < 2.4"), #80X corresponds to 2016, |eta| < 2.4 weightFiles=cms.vstring( #80X corresponds to 2016 SFs btagSFdir + "CSVv2_Moriond17_B_H.csv", "unavailable", btagSFdir + "cMVAv2_Moriond17_B_H.csv")) run2_nanoAOD_92X.toModify( btagWeightTable, #92X corresponds to MCv1, for which SFs are unavailable weightFiles=cms.vstring("unavailable", "unavailable", "unavailable")) genWeightsTable = cms.EDProducer( "GenWeightsTableProducer", genEvent=cms.InputTag("generator"), lheInfo=cms.InputTag("externalLHEProducer"), preferredPDFs=cms.VPSet( # see https://lhapdf.hepforge.org/pdfsets.html cms.PSet(name=cms.string("PDF4LHC15_nnlo_30_pdfas"), lhaid=cms.uint32(91400)), cms.PSet(name=cms.string("NNPDF31_nnlo_hessian_pdfas"), lhaid=cms.uint32(306000)), cms.PSet( name=cms.string("NNPDF30_nlo_as_0118"), lhaid=cms.uint32(260000) ), # for some 92X samples. Note that the nominal weight, 260000, is not included in the LHE ... cms.PSet(
# btagDeepC = Var("bDiscriminator('pfDeepCSVJetTags:probc')",float,doc="CMVA V2 btag discriminator",precision=10), #puIdDisc = Var("userFloat('pileupJetId:fullDiscriminant')",float,doc="Pilup ID discriminant",precision=10), # nConstituents = Var("numberOfDaughters()",int,doc="Number of particles in the jet"), # rawFactor = Var("1.-jecFactor('Uncorrected')",float,doc="1 - Factor to get back to raw pT",precision=6), ) ) ### Era dependent customization run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.msoftdrop, expr = cms.string("userFloat(\'ak8PFJetsCHSSoftDropMass\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau1, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau1\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau2, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau2\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau3, expr = cms.string("userFloat(\'ak8PFJetsPuppiValueMap:NjettinessAK8PuppiTau3\')"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) run2_miniAOD_80XLegacy.toModify( fatJetTable.variables.n3b1, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.tau4, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.n2b1, expr = cms.string("-1"),) run2_nanoAOD_92X.toModify( fatJetTable.variables.n3b1, expr = cms.string("-1"),) subJetTable = cms.EDProducer("SimpleCandidateFlatTableProducer", src = cms.InputTag("slimmedJetsAK8PFPuppiSoftDropPacked","SubJets"), cut = cms.string(""), #probably already applied in miniaod name = cms.string("SubJet"), doc = cms.string("slimmedJetsAK8, i.e. ak8 fat jets for boosted analysis"), singleton = cms.bool(False), # the number of entries is variable extension = cms.bool(False), # this is the main table for the jets variables = cms.PSet(P4Vars, btagCMVA = Var("bDiscriminator('pfCombinedMVAV2BJetTags')",float,doc="CMVA V2 btag discriminator",precision=10), btagDeepB = Var("bDiscriminator('pfDeepCSVJetTags:probb')",float,doc="CMVA V2 btag discriminator",precision=10), btagDeepBB = Var("bDiscriminator('pfDeepCSVJetTags:probbb')",float,doc="CMVA V2 btag discriminator",precision=10), )