File indexing completed on 2025-06-06 01:33:32
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.NanoAOD.nano_eras_cff import *
0004 from PhysicsTools.NanoAOD.common_cff import *
0005 from PhysicsTools.NanoAOD.simplePATMuonFlatTableProducer_cfi import simplePATMuonFlatTableProducer
0006
0007 import PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi
0008
0009
0010 slimmedMuonsUpdated = cms.EDProducer("PATMuonUpdater",
0011 src = cms.InputTag("slimmedMuons"),
0012 vertices = cms.InputTag("offlineSlimmedPrimaryVertices"),
0013 computeMiniIso = cms.bool(False),
0014 fixDxySign = cms.bool(True),
0015 pfCandsForMiniIso = cms.InputTag("packedPFCandidates"),
0016 miniIsoParams = PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi.patMuons.miniIsoParams,
0017 recomputeMuonBasicSelectors = cms.bool(False),
0018 recomputeSoftMuonMvaRun3 = cms.bool(False),
0019 softMvaRun3Model = PhysicsTools.PatAlgos.producersLayer1.muonProducer_cfi.patMuons.softMvaRun3Model,
0020 )
0021
0022 (run2_nanoAOD_106Xv2 | run3_nanoAOD_pre142X).toModify(
0023 slimmedMuonsUpdated, recomputeMuonBasicSelectors=True, recomputeSoftMuonMvaRun3=True,
0024 )
0025
0026 isoForMu = cms.EDProducer("MuonIsoValueMapProducer",
0027 src = cms.InputTag("slimmedMuonsUpdated"),
0028 relative = cms.bool(False),
0029 rho_MiniIso = cms.InputTag("fixedGridRhoFastjetAll"),
0030 EAFile_MiniIso = cms.FileInPath("PhysicsTools/NanoAOD/data/effAreaMuons_cone03_pfNeuHadronsAndPhotons_94X.txt"),
0031 )
0032
0033 ptRatioRelForMu = cms.EDProducer("MuonJetVarProducer",
0034 srcJet = cms.InputTag("updatedJetsPuppi"),
0035 srcLep = cms.InputTag("slimmedMuonsUpdated"),
0036 srcVtx = cms.InputTag("offlineSlimmedPrimaryVertices"),
0037 )
0038
0039 muonMVAID = cms.EDProducer("EvaluateMuonMVAID",
0040 src = cms.InputTag("slimmedMuonsUpdated"),
0041 weightFile = cms.FileInPath("RecoMuon/MuonIdentification/data/mvaID.onnx"),
0042 backend = cms.string('ONNX'),
0043 name = cms.string("muonMVAID"),
0044 outputTensorName= cms.string("probabilities"),
0045 inputTensorName= cms.string("float_input"),
0046 outputNames = cms.vstring(["probGOOD", "wpMedium", "wpTight"]),
0047 batch_eval =cms.bool(True),
0048 outputFormulas = cms.vstring(["at(1)", "? at(1) > 0.08 ? 1 : 0", "? at(1) > 0.20 ? 1 : 0"]),
0049 variables = cms.VPSet(
0050 cms.PSet( name = cms.string("LepGood_global_muon"), expr = cms.string("isGlobalMuon")),
0051 cms.PSet( name = cms.string("LepGood_validFraction"), expr = cms.string("?innerTrack.isNonnull?innerTrack().validFraction:-99")),
0052 cms.PSet( name = cms.string("Muon_norm_chi2_extended")),
0053 cms.PSet( name = cms.string("LepGood_local_chi2"), expr = cms.string("combinedQuality().chi2LocalPosition")),
0054 cms.PSet( name = cms.string("LepGood_kink"), expr = cms.string("combinedQuality().trkKink")),
0055 cms.PSet( name = cms.string("LepGood_segmentComp"), expr = cms.string("segmentCompatibility")),
0056 cms.PSet( name = cms.string("Muon_n_Valid_hits_extended")),
0057 cms.PSet( name = cms.string("LepGood_n_MatchedStations"), expr = cms.string("numberOfMatchedStations()")),
0058 cms.PSet( name = cms.string("LepGood_Valid_pixel"), expr = cms.string("?innerTrack.isNonnull()?innerTrack().hitPattern().numberOfValidPixelHits():-99")),
0059 cms.PSet( name = cms.string("LepGood_tracker_layers"), expr = cms.string("?innerTrack.isNonnull()?innerTrack().hitPattern().trackerLayersWithMeasurement():-99")),
0060 cms.PSet( name = cms.string("LepGood_pt"), expr = cms.string("pt")),
0061 cms.PSet( name = cms.string("LepGood_eta"), expr = cms.string("eta")),
0062 )
0063 )
0064
0065
0066
0067
0068
0069
0070 slimmedMuonsWithUserData = cms.EDProducer("PATMuonUserDataEmbedder",
0071 src = cms.InputTag("slimmedMuonsUpdated"),
0072 userFloats = cms.PSet(
0073 miniIsoChg = cms.InputTag("isoForMu:miniIsoChg"),
0074 miniIsoAll = cms.InputTag("isoForMu:miniIsoAll"),
0075 ptRatio = cms.InputTag("ptRatioRelForMu:ptRatio"),
0076 ptRel = cms.InputTag("ptRatioRelForMu:ptRel"),
0077 jetNDauChargedMVASel = cms.InputTag("ptRatioRelForMu:jetNDauChargedMVASel"),
0078 mvaIDMuon_wpMedium = cms.InputTag("muonMVAID:wpMedium"),
0079 mvaIDMuon_wpTight = cms.InputTag("muonMVAID:wpTight"),
0080 mvaIDMuon = cms.InputTag("muonMVAID:probGOOD")
0081 ),
0082 userCands = cms.PSet(
0083 jetForLepJetVar = cms.InputTag("ptRatioRelForMu:jetForLepJetVar")
0084 ),
0085 )
0086
0087
0088 finalMuons = cms.EDFilter("PATMuonRefSelector",
0089 src = cms.InputTag("slimmedMuonsWithUserData"),
0090 cut = cms.string("pt > 15 || (pt > 3 && (passed('CutBasedIdLoose') || passed('SoftCutBasedId') || passed('SoftMvaId') || passed('CutBasedIdGlobalHighPt') || passed('CutBasedIdTrkHighPt')))")
0091 )
0092
0093
0094 (run3_nanoAOD_2025 | run3_nanoAOD_devel).toModify(
0095 finalMuons,
0096 cut = cms.string("pt > 15 || (pt > 2 && (passed('CutBasedIdLoose') || passed('SoftCutBasedId') || passed('SoftMvaId') || passed('CutBasedIdGlobalHighPt') || passed('CutBasedIdTrkHighPt')))")
0097 )
0098
0099
0100 finalLooseMuons = cms.EDFilter("PATMuonRefSelector",
0101 src = cms.InputTag("slimmedMuonsWithUserData"),
0102 cut = cms.string("pt > 3 && track.isNonnull && isLooseMuon")
0103 )
0104
0105 muonPROMPTMVA= cms.EDProducer("MuonBaseMVAValueMapProducer",
0106 src = cms.InputTag("linkedObjects","muons"),
0107 weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2022.weights.xml"),
0108 backend = cms.string("TMVA"),
0109 name = cms.string("muonPROMPTMVA"),
0110 isClassifier = cms.bool(True),
0111 variables = cms.VPSet(
0112 cms.PSet( name = cms.string("LepGood_pt"), expr = cms.string("pt")),
0113 cms.PSet( name = cms.string("LepGood_eta"), expr = cms.string("eta")),
0114 cms.PSet( name = cms.string("LepGood_pfRelIso03_all"), expr = cms.string("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))/pt")),
0115 cms.PSet( name = cms.string("LepGood_miniRelIsoCharged"), expr = cms.string("userFloat('miniIsoChg')/pt")),
0116 cms.PSet( name = cms.string("LepGood_miniRelIsoNeutral"), expr = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt")),
0117 cms.PSet( name = cms.string("LepGood_jetNDauChargedMVASel"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0")),
0118 cms.PSet( name = cms.string("LepGood_jetPtRelv2"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0")),
0119 cms.PSet( name = cms.string("LepGood_jetDF"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0")),
0120 cms.PSet( name = cms.string("LepGood_jetPtRatio"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt)")),
0121 cms.PSet( name = cms.string("LepGood_sip3d"), expr = cms.string("abs(dB('PV3D')/edB('PV3D'))")),
0122 cms.PSet( name = cms.string("LepGood_dxy"), expr = cms.string("log(abs(dB('PV2D')))")),
0123 cms.PSet( name = cms.string("LepGood_dz"), expr = cms.string("log(abs(dB('PVDZ')))")),
0124 cms.PSet( name = cms.string("LepGood_segmentComp"), expr = cms.string("segmentCompatibility")),
0125 )
0126 )
0127
0128 _legacy_muon_BDT_variable = cms.VPSet(
0129 cms.PSet( name = cms.string("LepGood_pt"), expr = cms.string("pt")),
0130 cms.PSet( name = cms.string("LepGood_eta"), expr = cms.string("eta")),
0131 cms.PSet( name = cms.string("LepGood_jetNDauChargedMVASel"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0")),
0132 cms.PSet( name = cms.string("LepGood_miniRelIsoCharged"), expr = cms.string("userFloat('miniIsoChg')/pt")),
0133 cms.PSet( name = cms.string("LepGood_miniRelIsoNeutral"), expr = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt")),
0134 cms.PSet( name = cms.string("LepGood_jetPtRelv2"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0")),
0135 cms.PSet( name = cms.string("LepGood_jetDF"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0")),
0136 cms.PSet( name = cms.string("LepGood_jetPtRatio"), expr = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt)")),
0137 cms.PSet( name = cms.string("LepGood_dxy"), expr = cms.string("log(abs(dB('PV2D')))")),
0138 cms.PSet( name = cms.string("LepGood_sip3d"), expr = cms.string("abs(dB('PV3D')/edB('PV3D'))")),
0139 cms.PSet( name = cms.string("LepGood_dz"), expr = cms.string("log(abs(dB('PVDZ')))")),
0140 cms.PSet( name = cms.string("LepGood_segmentComp"), expr = cms.string("segmentCompatibility")),
0141 )
0142
0143 muonMVALowPt = muonPROMPTMVA.clone(
0144 weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_lowpt.weights.xml"),
0145 name = cms.string("muonMVALowPt"),
0146 variables = _legacy_muon_BDT_variable
0147 )
0148
0149 run2_muon_2016.toModify(
0150 muonPROMPTMVA,
0151 weightFile = "PhysicsTools/NanoAOD/data/mu_BDTG_2016.weights.xml",
0152 variables = _legacy_muon_BDT_variable
0153 )
0154
0155 (run2_muon_2017 | run2_muon_2018).toModify(
0156 muonPROMPTMVA,
0157 weightFile = cms.FileInPath("PhysicsTools/NanoAOD/data/mu_BDTG_2017.weights.xml"),
0158 variables = _legacy_muon_BDT_variable
0159 )
0160
0161 from PhysicsTools.PatAlgos.muonTagInfos_cfi import muonTagInfos as _muonTagInfos
0162 muonPNetVariables = _muonTagInfos.clone(
0163 src = cms.InputTag("linkedObjects","muons"),
0164 leptonVars = cms.PSet(
0165 MuonSelected_LepGood_pt = cms.string("pt"),
0166 MuonSelected_LepGood_eta = cms.string("eta"),
0167 MuonSelected_LepGood_jetNDauChargedMVASel = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0"),
0168 MuonSelected_LepGood_miniRelIsoCharged = cms.string("userFloat('miniIsoChg')/pt"),
0169 MuonSelected_LepGood_miniRelIsoNeutral = cms.string("(userFloat('miniIsoAll')-userFloat('miniIsoChg'))/pt"),
0170 MuonSelected_LepGood_jetPtRelv2 = cms.string("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0"),
0171 MuonSelected_LepGood_jetDF = cms.string("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0"),
0172 MuonSelected_LepGood_jetPtRatio = cms.string("?userCand('jetForLepJetVar').isNonnull()?min(userFloat('ptRatio'),1.5):1.0/(1.0+(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt)"),
0173 MuonSelected_dxy = cms.string("log(abs(dB('PV2D')))"),
0174 MuonSelected_sip3d = cms.string("abs(dB('PV3D')/edB('PV3D'))"),
0175 MuonSelected_dz = cms.string("log(abs(dB('PVDZ')))"),
0176 MuonSelected_LepGood_dz = cms.string("log(abs(dB('PVDZ')))"),
0177 MuonSelected_segmentComp = cms.string("segmentCompatibility"),
0178 MuonSelected_global_muon = cms.string("isGlobalMuon"),
0179 MuonSelected_validFraction = cms.string("?innerTrack.isNonnull?innerTrack().validFraction:-99"),
0180 MuonSelected_local_chi2 = cms.string("combinedQuality().chi2LocalPosition"),
0181 MuonSelected_kink = cms.string("combinedQuality().trkKink"),
0182 MuonSelected_n_MatchedStations = cms.string("numberOfMatchedStations()"),
0183 MuonSelected_Valid_pixel = cms.string("?innerTrack.isNonnull()?innerTrack().hitPattern().numberOfValidPixelHits():-99"),
0184 MuonSelected_tracker_layers = cms.string("?innerTrack.isNonnull()?innerTrack().hitPattern().trackerLayersWithMeasurement():-99"),
0185 MuonSelected_mvaId=cms.string("userFloat('mvaIDMuon')"),
0186 ),
0187 leptonVarsExt = cms.PSet(
0188 MuonSelected_mvaTTH=cms.InputTag("muonPROMPTMVA"),
0189 ),
0190 pfVars = cms.PSet(
0191 PF_pt=cms.string("pt"),
0192 PF_charge=cms.string("charge"),
0193 PF_isElectron=cms.string("?abs(pdgId)==11?1:0"),
0194 PF_isMuon=cms.string("?abs(pdgId)==13?1:0"),
0195 PF_isNeutralHadron=cms.string("?abs(pdgId)==130?1:0"),
0196 PF_isPhoton=cms.string("?abs(pdgId)==22?1:0"),
0197 PF_isChargedHadron=cms.string("?abs(pdgId)==211?1:0"),
0198 PF_puppiWeightNoLep=cms.string("puppiWeightNoLep"),
0199 PF_fromPV=cms.string("fromPV"),
0200 PF_numberOfPixelHits=cms.string("numberOfPixelHits"),
0201 PF_dzSig=cms.string("?hasTrackDetails?dz/max(dzError,1.e-6):0"),
0202 PF_dxySig=cms.string("?hasTrackDetails?dxy/max(dxyError,1.e-6):0"),
0203 PF_hcalFraction=cms.string("hcalFraction"),
0204 PF_trackerLayersWithMeasurement=cms.string("?hasTrackDetails?bestTrack().hitPattern().trackerLayersWithMeasurement:0"),
0205 PF_mask=cms.string("1"),
0206 ),
0207 svVars = cms.PSet(
0208 SV_eta=cms.string("eta"),
0209 SV_phi=cms.string("phi"),
0210 SV_pt=cms.string("pt"),
0211 SV_ndof=cms.string("vertexNdof"),
0212 SV_chi2=cms.string("vertexChi2"),
0213 SV_nTracks=cms.string("numberOfDaughters"),
0214 SV_mass=cms.string("mass"),
0215 SV_mask=cms.string("1"),
0216 ),
0217 )
0218
0219 from PhysicsTools.PatAlgos.muonPNetTags_cfi import muonPNetTags as _muonPNetTags
0220 muonPNetScores = _muonPNetTags.clone(
0221 src = cms.InputTag("muonPNetVariables"),
0222 srcLeps = cms.InputTag("linkedObjects", "muons"),
0223 model_path = 'PhysicsTools/NanoAOD/data/PNetMuonId/model.onnx',
0224 preprocess_json = 'PhysicsTools/NanoAOD/data/PNetMuonId/preprocess.json',
0225 flav_names = cms.vstring(["light", "prompt", "tau", "heavy"]),
0226 )
0227
0228 from TrackingTools.TransientTrack.TransientTrackBuilder_cfi import *
0229 muonBSConstrain = cms.EDProducer("MuonBeamspotConstraintValueMapProducer",
0230 src = cms.InputTag("linkedObjects","muons"),
0231 )
0232
0233 muonTable = simplePATMuonFlatTableProducer.clone(
0234 src = cms.InputTag("linkedObjects","muons"),
0235 name = cms.string("Muon"),
0236 doc = cms.string("slimmedMuons after basic selection (" + finalMuons.cut.value()+")"),
0237 variables = cms.PSet(CandVars,
0238 ptErr = Var("bestTrack().ptError()", float, doc = "ptError of the muon track", precision=6),
0239 tunepRelPt = Var("tunePMuonBestTrack().pt/pt",float,doc="TuneP relative pt, tunePpt/pt",precision=6),
0240 tuneP_pterr = Var("tunePMuonBestTrack().ptError()", float, doc = "pTerr from tunePMuonBestTrack", precision=6),
0241 tuneP_charge = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().charge(): -99", float, doc="tunePMuonBestTrack() charge",precision=6),
0242 dz = Var("dB('PVDZ')",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
0243 dzErr = Var("abs(edB('PVDZ'))",float,doc="dz uncertainty, in cm",precision=6),
0244 dxybs = Var("dB('BS2D')",float,doc="dxy (with sign) wrt the beam spot, in cm",precision=10),
0245 dxybsErr = Var("edB('BS2D')",float,doc="dxy uncertainty wrt the beam spot, in cm", precision=6),
0246 dxy = Var("dB('PV2D')",float,doc="dxy (with sign) wrt first PV, in cm",precision=10),
0247 dxyErr = Var("edB('PV2D')",float,doc="dxy uncertainty, in cm",precision=6),
0248 ip3d = Var("abs(dB('PV3D'))",float,doc="3D impact parameter wrt first PV, in cm",precision=10),
0249 sip3d = Var("abs(dB('PV3D')/edB('PV3D'))",float,doc="3D impact parameter significance wrt first PV",precision=10),
0250 segmentComp = Var("segmentCompatibility()", float, doc = "muon segment compatibility", precision=14),
0251 nStations = Var("numberOfMatchedStations", "uint8", doc = "number of matched stations with default arbitration (segment & track)"),
0252 nTrackerLayers = Var("?track.isNonnull?innerTrack().hitPattern().trackerLayersWithMeasurement():0", "uint8", doc = "number of layers in the tracker"),
0253 bestTrackType = Var("muonBestTrackType()", "uint8", doc = "Type of track used (1=inner, 2=STA, 3=global, 4=TPFMS, 5=Picky, 6=DYT)"),
0254 highPurity = Var("?track.isNonnull?innerTrack().quality('highPurity'):0", bool, doc = "inner track is high purity"),
0255 jetIdx = Var("?hasUserCand('jet')?userCand('jet').key():-1", "int16", doc="index of the associated jet (-1 if none)"),
0256 svIdx = Var("?hasUserCand('vertex')?userCand('vertex').key():-1", "int16", doc="index of matching secondary vertex"),
0257 tkRelIso = Var("isolationR03().sumPt/pt",float,doc="Tracker-based relative isolation dR=0.3 for highPt, trkIso/pt",precision=6),
0258 miniPFRelIso_chg = Var("userFloat('miniIsoChg')/pt",float,doc="mini PF relative isolation, charged component"),
0259 miniPFRelIso_all = Var("userFloat('miniIsoAll')/pt",float,doc="mini PF relative isolation, total (with scaled rho*EA PU corrections)"),
0260 pfRelIso03_chg = Var("pfIsolationR03().sumChargedHadronPt/pt",float,doc="PF relative isolation dR=0.3, charged component"),
0261 pfRelIso03_all = Var("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.3, total (deltaBeta corrections)"),
0262 pfRelIso04_all = Var("(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))/pt",float,doc="PF relative isolation dR=0.4, total (deltaBeta corrections)"),
0263 jetRelIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:-1.",float,doc="Relative isolation in matched jet (1/ptRatio-1), -1 if none",precision=8),
0264 jetPtRelv2 = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('ptRel'):0",float,doc="Relative momentum of the lepton with respect to the closest jet after subtracting the lepton",precision=8),
0265 jetDF = Var("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probbb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:probb')+userCand('jetForLepJetVar').bDiscriminator('pfDeepFlavourJetTags:problepb'),0.0):0.0",float,doc="value of the DEEPJET b tagging algorithm discriminator of the associated jet (0 if none)",precision=8,lazyEval=True),
0266 tightCharge = Var("?(muonBestTrack().ptError()/muonBestTrack().pt() < 0.2)?2:0", "uint8", doc="Tight charge criterion using pterr/pt of muonBestTrack (0:fail, 2:pass)"),
0267 looseId = Var("passed('CutBasedIdLoose')",bool, doc="muon is loose muon"),
0268 isPFcand = Var("isPFMuon",bool,doc="muon is PF candidate"),
0269 isGlobal = Var("isGlobalMuon",bool,doc="muon is global muon"),
0270 isTracker = Var("isTrackerMuon",bool,doc="muon is tracker muon"),
0271 isStandalone = Var("isStandAloneMuon",bool,doc="muon is a standalone muon"),
0272 mediumId = Var("passed('CutBasedIdMedium')",bool,doc="cut-based ID, medium WP"),
0273 mediumPromptId = Var("passed('CutBasedIdMediumPrompt')",bool,doc="cut-based ID, medium prompt WP"),
0274 tightId = Var("passed('CutBasedIdTight')",bool,doc="cut-based ID, tight WP"),
0275 softId = Var("passed('SoftCutBasedId')",bool,doc="soft cut-based ID"),
0276 softMvaId = Var("passed('SoftMvaId')",bool,doc="soft MVA ID"),
0277 softMva = Var("softMvaValue()",float,doc="soft MVA ID score",precision=6),
0278 softMvaRun3 = Var("softMvaRun3Value()",float,doc="soft MVA Run3 ID score",precision=6),
0279 highPtId = Var("?passed('CutBasedIdGlobalHighPt')?2:passed('CutBasedIdTrkHighPt')","uint8",doc="high-pT cut-based ID (1 = tracker high pT, 2 = global high pT, which includes tracker high pT)"),
0280 pfIsoId = Var("passed('PFIsoVeryLoose')+passed('PFIsoLoose')+passed('PFIsoMedium')+passed('PFIsoTight')+passed('PFIsoVeryTight')+passed('PFIsoVeryVeryTight')","uint8",doc="PFIso ID from miniAOD selector (1=PFIsoVeryLoose, 2=PFIsoLoose, 3=PFIsoMedium, 4=PFIsoTight, 5=PFIsoVeryTight, 6=PFIsoVeryVeryTight)"),
0281 tkIsoId = Var("?passed('TkIsoTight')?2:passed('TkIsoLoose')","uint8",doc="TkIso ID (1=TkIsoLoose, 2=TkIsoTight)"),
0282 miniIsoId = Var("passed('MiniIsoLoose')+passed('MiniIsoMedium')+passed('MiniIsoTight')+passed('MiniIsoVeryTight')","uint8",doc="MiniIso ID from miniAOD selector (1=MiniIsoLoose, 2=MiniIsoMedium, 3=MiniIsoTight, 4=MiniIsoVeryTight)"),
0283 mvaMuID = Var("userFloat('mvaIDMuon')", float, doc="MVA-based ID score",precision=6),
0284 mvaMuID_WP = Var("userFloat('mvaIDMuon_wpMedium') + userFloat('mvaIDMuon_wpTight')","uint8",doc="MVA-based ID selector WPs (1=MVAIDwpMedium,2=MVAIDwpTight)"),
0285 multiIsoId = Var("?passed('MultiIsoMedium')?2:passed('MultiIsoLoose')","uint8",doc="MultiIsoId from miniAOD selector (1=MultiIsoLoose, 2=MultiIsoMedium)"),
0286 puppiIsoId = Var("passed('PuppiIsoLoose')+passed('PuppiIsoMedium')+passed('PuppiIsoTight')", "uint8", doc="PuppiIsoId from miniAOD selector (1=Loose, 2=Medium, 3=Tight)"),
0287 triggerIdLoose = Var("passed('TriggerIdLoose')",bool,doc="TriggerIdLoose ID"),
0288 inTimeMuon = Var("passed('InTimeMuon')",bool,doc="inTimeMuon ID"),
0289 jetNDauCharged = Var("?userCand('jetForLepJetVar').isNonnull()?userFloat('jetNDauChargedMVASel'):0", "uint8", doc="number of charged daughters of the closest jet"),
0290 VXBS_Cov00 = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().covariance(0,0) : -999",float,doc="0, 0 element of the VXBS Covariance matrix", precision=16),
0291 VXBS_Cov03 = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().covariance(0,3) : -999",float,doc="0, 3 element of the VXBS Covariance matrix", precision=16),
0292 VXBS_Cov33 = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().covariance(3,3) : -999",float,doc="3, 3 element of the VXBS Covariance matrix", precision=16),
0293 ),
0294 externalVariables = cms.PSet(
0295 promptMVA = ExtVar(cms.InputTag("muonPROMPTMVA"),float, doc="Prompt MVA lepton ID score. Corresponds to the previous mvaTTH",precision=14),
0296 mvaLowPt = ExtVar(cms.InputTag("muonMVALowPt"),float, doc="Low pt muon ID score",precision=14),
0297 pnScore_prompt = ExtVar(cms.InputTag("muonPNetScores:prompt"),float, doc="PNet muon ID score for lepton from W/Z/H bosons", precision=14),
0298 pnScore_heavy = ExtVar(cms.InputTag("muonPNetScores:heavy"),float, doc="PNet muon ID score for lepton from B or D hadrons", precision=14),
0299 pnScore_light = ExtVar(cms.InputTag("muonPNetScores:light"),float, doc="PNet muon ID score for lepton from hadrons w/o b or c quarks OR w/o generator matching", precision=14),
0300 pnScore_tau = ExtVar(cms.InputTag("muonPNetScores:tau"),float, doc="PNet muon ID score for decay of tau to light leptons (mu)", precision=14),
0301 fsrPhotonIdx = ExtVar(cms.InputTag("leptonFSRphotons:muFsrIndex"), "int16", doc="Index of the lowest-dR/ET2 among associated FSR photons"),
0302 bsConstrainedPt = ExtVar(cms.InputTag("muonBSConstrain:muonBSConstrainedPt"),float, doc="pT with beamspot constraint",precision=-1),
0303 bsConstrainedPtErr = ExtVar(cms.InputTag("muonBSConstrain:muonBSConstrainedPtErr"),float, doc="pT error with beamspot constraint ",precision=6),
0304 bsConstrainedChi2 = ExtVar(cms.InputTag("muonBSConstrain:muonBSConstrainedChi2"),float, doc="chi2 of beamspot constraint",precision=6),
0305 ),
0306 )
0307
0308
0309 muonTable.variables.eta.precision = 16
0310 muonTable.variables.phi.precision = 16
0311
0312
0313
0314 run2_muon.toModify(
0315 ptRatioRelForMu,srcJet="updatedJets"
0316 )
0317
0318
0319 muonsMCMatchForTable = cms.EDProducer("MCMatcher",
0320 src = muonTable.src,
0321 matched = cms.InputTag("finalGenParticles"),
0322 mcPdgId = cms.vint32(13),
0323 checkCharge = cms.bool(False),
0324 mcStatus = cms.vint32(1),
0325 maxDeltaR = cms.double(0.3),
0326 maxDPtRel = cms.double(0.5),
0327 resolveAmbiguities = cms.bool(True),
0328 resolveByMatchQuality = cms.bool(True),
0329 )
0330
0331 muonMCTable = cms.EDProducer("CandMCMatchTableProducer",
0332 src = muonTable.src,
0333 mcMap = cms.InputTag("muonsMCMatchForTable"),
0334 objName = muonTable.name,
0335 objType = muonTable.name,
0336 branchName = cms.string("genPart"),
0337 docString = cms.string("MC matching to status==1 muons"),
0338 )
0339
0340 muonTask = cms.Task(slimmedMuonsUpdated,isoForMu,ptRatioRelForMu,slimmedMuonsWithUserData,finalMuons,finalLooseMuons)
0341 muonMCTask = cms.Task(muonsMCMatchForTable,muonMCTable)
0342 muonTablesTask = cms.Task(muonPROMPTMVA,muonMVALowPt,muonBSConstrain,muonTable,muonMVAID,muonPNetVariables,muonPNetScores)