File indexing completed on 2025-06-03 00:12:33
0001 import FWCore.ParameterSet.Config as cms
0002
0003 from PhysicsTools.NanoAOD.nano_eras_cff import *
0004
0005 from PhysicsTools.NanoAOD.common_cff import Var, P3Vars
0006 from PhysicsTools.NanoAOD.triggerObjects_cff import mksel
0007
0008 def Custom_Muon_Task(process):
0009 process.nanoTableTaskCommon.remove(process.electronTablesTask)
0010 process.nanoTableTaskCommon.remove(process.lowPtElectronTablesTask)
0011 process.nanoTableTaskCommon.remove(process.photonTablesTask)
0012 process.nanoTableTaskCommon.remove(process.metTablesTask)
0013 process.nanoTableTaskCommon.remove(process.tauTablesTask)
0014 process.nanoTableTaskCommon.remove(process.boostedTauTablesTask)
0015 process.nanoTableTaskCommon.remove(process.jetPuppiTablesTask)
0016 process.nanoTableTaskCommon.remove(process.jetAK8TablesTask)
0017 process.nanoTableTaskCommon.remove(process.jetConstituentsTablesTask)
0018
0019 process.nanoTableTaskFS.remove(process.electronMCTask)
0020 process.nanoTableTaskFS.remove(process.lowPtElectronMCTask)
0021 process.nanoTableTaskFS.remove(process.photonMCTask)
0022 process.nanoTableTaskFS.remove(process.jetMCTask)
0023 process.nanoTableTaskFS.remove(process.tauMCTask)
0024 process.nanoTableTaskFS.remove(process.boostedTauMCTask)
0025 process.nanoTableTaskFS.remove(process.metMCTable)
0026 process.nanoTableTaskFS.remove(process.ttbarCatMCProducersTask)
0027 process.nanoTableTaskFS.remove(process.ttbarCategoryTableTask)
0028 process.nanoTableTaskFS.remove(process.tauSpinnerTableTask)
0029
0030 return process
0031
0032 def AddPFTracks(proc):
0033 pfTracks = "pfTracks"
0034 setattr(proc, pfTracks, cms.EDProducer("pfTracksProducer",
0035 PFCands=cms.InputTag("packedPFCandidates"),
0036 lostTracks=cms.InputTag("lostTracks"),
0037 TrkHPurity = cms.bool(False),
0038 trkSelection = cms.string("bestTrack.pt()>5 && abs(bestTrack.eta())<2.4 "),
0039 )
0040 )
0041
0042 pfTracksTable = "pfTracksTable"
0043 setattr(proc, pfTracksTable, cms.EDProducer("SimpleTrackFlatTableProducer",
0044 src = cms.InputTag("pfTracks"),
0045 cut = cms.string("pt > 15"),
0046 name = cms.string("Track"),
0047 doc = cms.string("General tracks with pt > 15 GeV"),
0048 singleton = cms.bool(False),
0049 extension = cms.bool(False),
0050 variables = cms.PSet(P3Vars,
0051 dz = Var("dz",float,doc="dz (with sign) wrt first PV, in cm",precision=10),
0052 dxy = Var("dxy",float,doc="dxy (with sign) wrt first PV, in cm",precision=10),
0053 charge = Var("charge", int, doc="electric charge"),
0054 normChiSq = Var("normalizedChi2", float, precision=14, doc="Chi^2/ndof"),
0055 numberOfValidHits = Var('numberOfValidHits()', 'int', precision=-1, doc='Number of valid hits in track'),
0056 numberOfLostHits = Var('numberOfLostHits()', 'int', precision=-1, doc='Number of lost hits in track'),
0057 trackAlgo = Var('algo()', 'int', precision=-1, doc='Track algo enum, check DataFormats/TrackReco/interface/TrackBase.h for details.'),
0058 trackOriginalAlgo = Var('originalAlgo()', 'int', precision=-1, doc='Track original algo enum'),
0059 qualityMask = Var('qualityMask()', 'int', precision=-1, doc='Quality mask of the track.'),
0060 extraIdx = Var('extra().key()', 'int', precision=-1, doc='Index of the TrackExtra in the original collection'),
0061 vx = Var('vx', 'float', precision=-1, doc='Track X position'),
0062 vy = Var('vy', 'float', precision=-1, doc='Track Y position'),
0063 vz = Var('vz', 'float', precision=-1, doc='Track Z position'),
0064 ),
0065 )
0066 )
0067
0068 pfTracksTask = "pfTracksTask"
0069 setattr(proc,pfTracksTask, cms.Task(
0070 getattr(proc,pfTracks)
0071 )
0072 )
0073
0074 pfTracksTableTask = "pfTracksTableTask"
0075 setattr(proc,pfTracksTableTask, cms.Task(
0076 getattr(proc,pfTracksTable)
0077 )
0078 )
0079 proc.nanoTableTaskCommon.add(getattr(proc,pfTracksTask))
0080 proc.nanoTableTaskCommon.add(getattr(proc,pfTracksTableTask))
0081
0082 return proc
0083
0084
0085
0086 def AddVariablesForMuon(proc):
0087
0088 muonWithVariables = "muonWithVariables"
0089 setattr(proc, muonWithVariables, cms.EDProducer("MuonSpecialVariables",
0090 muonSrc=cms.InputTag("slimmedMuons"),
0091 vertexSrc=cms.InputTag("offlineSlimmedPrimaryVertices"),
0092 trkSrc=cms.InputTag("pfTracks"),
0093 )
0094 )
0095 getattr(proc,"muonTask").add(getattr(proc,muonWithVariables))
0096
0097 proc.slimmedMuonsUpdated.src = cms.InputTag("muonWithVariables")
0098
0099
0100
0101
0102
0103
0104
0105
0106 proc.muonTable.variables.standalonePt = Var("? standAloneMuon().isNonnull() ? standAloneMuon().pt() : -1", float, doc = "pt of the standalone muon", precision=14)
0107 proc.muonTable.variables.standaloneEta = Var("? standAloneMuon().isNonnull() ? standAloneMuon().eta() : -99", float, doc = "eta of the standalone muon", precision=14)
0108 proc.muonTable.variables.standalonePhi = Var("? standAloneMuon().isNonnull() ? standAloneMuon().phi() : -99", float, doc = "phi of the standalone muon", precision=14)
0109 proc.muonTable.variables.standaloneCharge = Var("? standAloneMuon().isNonnull() ? standAloneMuon().charge() : -99", float, doc = "phi of the standalone muon", precision=14)
0110
0111
0112 proc.muonTable.variables.innerTrackAlgo = Var('? innerTrack().isNonnull() ? innerTrack().algo() : -99', 'int', precision=-1, doc='Track algo enum, check DataFormats/TrackReco/interface/TrackBase.h for details.')
0113 proc.muonTable.variables.innerTrackOriginalAlgo = Var('? innerTrack().isNonnull() ? innerTrack().originalAlgo() : -99', 'int', precision=-1, doc='Track original algo enum')
0114
0115
0116 proc.muonTable.variables.pfAbsIso03_neu = Var("pfIsolationR03().sumNeutralHadronEt",float,doc="PF absolute isolation dR=0.3, neutral component")
0117 proc.muonTable.variables.pfAbsIso03_pho = Var("pfIsolationR03().sumPhotonEt",float,doc="PF absolute isolation dR=0.3, photon component")
0118 proc.muonTable.variables.pfAbsIso03_sumPU = Var("pfIsolationR03().sumPUPt",float,doc="PF absolute isolation dR=0.3, pu component (no deltaBeta corrections)")
0119 proc.muonTable.variables.absTrkIso03 = Var("userFloat('absTrkiso03')",float,doc="Realtive Tracker Iso with cone size 0.3")
0120
0121
0122 proc.muonTable.variables.pfAbsIso04_chg = Var("pfIsolationR04().sumChargedHadronPt",float,doc="PF absolute isolation dR=0.4, charged component")
0123 proc.muonTable.variables.pfAbsIso04_neu = Var("pfIsolationR04().sumNeutralHadronEt",float,doc="PF absolute isolation dR=0.4, neutral component")
0124 proc.muonTable.variables.pfAbsIso04_pho = Var("pfIsolationR04().sumPhotonEt",float,doc="PF absolute isolation dR=0.4, photon component")
0125 proc.muonTable.variables.pfAbsIso04_sumPU = Var("pfIsolationR04().sumPUPt",float,doc="PF absolute isolation dR=0.4, pu component (no deltaBeta corrections)")
0126 proc.muonTable.variables.absTrkIso04 = Var("userFloat('absTrkiso04')",float,doc="Realtive Tracker Iso with cone size 0.4")
0127
0128
0129 proc.muonTable.variables.miniPFAbsIso_chg = Var("userFloat('miniIsoChg')",float,doc="mini PF absolute isolation, charged component")
0130 proc.muonTable.variables.miniPFAbsIso_all = Var("userFloat('miniIsoAll')",float,doc="mini PF absolute isolation, total (with scaled rho*EA PU corrections)")
0131 proc.muonTable.variables.miniPFAbsIso_neu = Var("miniPFIsolation().neutralHadronIso()",float,doc="mini PF absolute isolation, neutral component")
0132 proc.muonTable.variables.miniPFAbsIso_pho = Var("miniPFIsolation().photonIso()", float, doc="mini PF absolute isolation, photon component")
0133
0134
0135 proc.muonTable.variables.tkAbsIso = Var("isolationR03().sumPt",float,doc="Tracker-based absolute isolation dR=0.3 for highPt, trkIso",precision=6)
0136 proc.muonTable.variables.pfAbsIso03_chg = Var("pfIsolationR03().sumChargedHadronPt",float,doc="PF absolute isolation dR=0.3, charged component")
0137 proc.muonTable.variables.pfAbsIso03_all = Var("(pfIsolationR03().sumChargedHadronPt + max(pfIsolationR03().sumNeutralHadronEt + pfIsolationR03().sumPhotonEt - pfIsolationR03().sumPUPt/2,0.0))",float,doc="PF absolute isolation dR=0.3, total (deltaBeta corrections)")
0138 proc.muonTable.variables.pfAbsIso04_all = Var("(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))",float,doc="PF absolute isolation dR=0.4, total (deltaBeta corrections)")
0139 proc.muonTable.variables.jetAbsIso = Var("?userCand('jetForLepJetVar').isNonnull()?(1./userFloat('ptRatio'))-1.:(pfIsolationR04().sumChargedHadronPt + max(pfIsolationR04().sumNeutralHadronEt + pfIsolationR04().sumPhotonEt - pfIsolationR04().sumPUPt/2,0.0))",float,doc="Absolute isolation in matched jet (1/ptRatio-1, pfRelIso04_all if no matched jet)",precision=8)
0140
0141
0142 proc.muonTable.variables.expectedMatchedStations = Var("expectedNnumberOfMatchedStations()",int,doc="Expected Number of Matched stations")
0143 proc.muonTable.variables.RPCLayers = Var("numberOfMatchedRPCLayers()",int,doc="Number of RPC Layers")
0144 proc.muonTable.variables.stationMask = Var("stationMask()","uint8",doc="Number of masked station")
0145 proc.muonTable.variables.nShowers = Var("numberOfShowers()",int,doc="Number of Showers")
0146
0147
0148
0149
0150 proc.muonTable.variables.pixelLayers = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().hitPattern().pixelLayersWithMeasurement() : -99", float,doc="Number of Pixel Layers")
0151 proc.muonTable.variables.pixelHits = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().hitPattern().numberOfValidPixelHits() : -99", float, doc="Numbr of valid pixel hits")
0152 proc.muonTable.variables.muonStations = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().hitPattern().muonStationsWithValidHits() : -99", float, doc="No of valid hits in muon stations")
0153 proc.muonTable.variables.DTHits = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().hitPattern().numberOfValidMuonDTHits() : -99", float, doc="No of valid hits in DT")
0154 proc.muonTable.variables.CSCHits = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().hitPattern().numberOfValidMuonCSCHits() : -99", float, doc="No of valid hits in CSC")
0155 proc.muonTable.variables.RPCHits = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().hitPattern().numberOfValidMuonRPCHits() : -99", float, doc="No of valid hits in RPC")
0156
0157
0158
0159
0160 proc.muonTable.variables.trkChi2 = Var("? globalTrack().isNonnull() ? globalTrack().normalizedChi2() : ? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().normalizedChi2() : -99",float,doc="Normalized Chi Square from either globalTrack or innerTrack ")
0161 proc.muonTable.variables.trkChi2_outerTrack = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().normalizedChi2() : -99",float,doc="Normalized Chi Square from outerTrack ")
0162 proc.muonTable.variables.trkChi2_innerTrack = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().normalizedChi2() : -99",float,doc="Normalized Chi Square from outerTrack ")
0163
0164
0165
0166 proc.muonTable.variables.innerTrack_ptErr = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().ptError()/innerTrack().pt() : -99", float, doc="InnerTrack Pt Error")
0167 proc.muonTable.variables.innerTrack_pt = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().pt(): -99", float, doc="InnerTrack Pt")
0168 proc.muonTable.variables.innerTrack_eta = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().eta(): -99", float, doc="InnerrTrack Eta")
0169 proc.muonTable.variables.innerTrack_phi = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().phi(): -99", float, doc="InnerTrack Phi")
0170 proc.muonTable.variables.innerTrack_charge = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().charge(): -99", float, doc="InnerTrack charge")
0171 proc.muonTable.variables.innerTrack_MuonHits = Var("? innerTrack().isNonnull() ? innerTrack().hitPattern().numberOfValidMuonHits() : -99", float, doc = "Number of valid Muon Hits from InnerTrack")
0172 proc.muonTable.variables.innerTrack_validFraction = Var("? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().validFraction() : -99", float, doc="Inner Track Valid Fraction")
0173
0174
0175
0176
0177
0178 proc.muonTable.variables.innerTrackDxy = Var("? userInt('isGoodVertex') ? userFloat('innerTrackDxy') : -99.9",float,doc = "dxy from Primary Vertex calculated with Inner Track")
0179 proc.muonTable.variables.innerTrackDz = Var("? userInt('isGoodVertex') ? userFloat('innerTrackDz') : -99.9",float,doc= "dz from Primary Vertex calculated with Inner Track")
0180
0181
0182
0183 proc.muonTable.variables.outerTrack_ptErr = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().ptError()/outerTrack().pt() : -99", float, doc="OuterTrack Pt Error")
0184 proc.muonTable.variables.outerTrack_pt = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().pt(): -99", float, doc="OuterTrack Pt")
0185 proc.muonTable.variables.outerTrack_eta = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().eta(): -99", float, doc="OuterTrack Eta")
0186 proc.muonTable.variables.outerTrack_phi = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().phi(): -99", float, doc="OuterTrack Phi")
0187 proc.muonTable.variables.outerTrack_charge = Var("? outerTrack().isNonnull() && outerTrack().isAvailable() ? outerTrack().charge(): -99", float, doc="OuterTrack charge")
0188 proc.muonTable.variables.outerTrack_MuonHits = Var("? outerTrack().isNonnull() ? outerTrack().hitPattern().numberOfValidMuonHits() : -99", float, doc = "Number of valid Muon Hits from OuterTrack")
0189
0190
0191
0192
0193 proc.muonTable.variables.muonHits = Var("? globalTrack().isNonnull() ? globalTrack().hitPattern().numberOfValidMuonHits() : ? innerTrack().isNonnull() && innerTrack().isAvailable() ? innerTrack().hitPattern().numberOfValidMuonHits() :-99",float,doc="Number of valid Muon Hits from either globalTrack or innerTrack")
0194 proc.muonTable.variables.globalTrack_ptErr = Var("? globalTrack().isNonnull() ? globalTrack().ptError()/globalTrack().pt() : -99", float, doc="GlobalTrack Pt Error")
0195 proc.muonTable.variables.globalTrack_pt = Var("? globalTrack().isNonnull() ? globalTrack().pt(): -99", float, doc="GlobalTrack Pt")
0196 proc.muonTable.variables.globalTrack_eta = Var("? globalTrack().isNonnull() ? globalTrack().eta(): -99", float, doc="GlobalTrack Eta")
0197 proc.muonTable.variables.globalTrack_phi = Var("? globalTrack().isNonnull() ? globalTrack().phi(): -99", float, doc="GlobalTrack Phi")
0198 proc.muonTable.variables.globalTrack_charge = Var("? globalTrack().isNonnull() ? globalTrack().charge(): -99", float, doc="GlobalTrack charge")
0199
0200
0201
0202 proc.muonTable.variables.best_pt = Var("? muonBestTrack().isNonnull() && muonBestTrack().isAvailable() ? muonBestTrack().pt(): -99", float, doc="MuonBestTrack Pt")
0203 proc.muonTable.variables.best_pterr = Var("? muonBestTrack().isNonnull() && muonBestTrack().isAvailable() ? muonBestTrack().ptError() : -99", float, doc = "pTerr from MuonBestTrack")
0204 proc.muonTable.variables.best_eta = Var("? muonBestTrack().isNonnull() && muonBestTrack().isAvailable() ? muonBestTrack().eta(): -99", float, doc="MuonBestrack Eta")
0205 proc.muonTable.variables.best_phi = Var("? muonBestTrack().isNonnull() && muonBestTrack().isAvailable() ? muonBestTrack().phi(): -99", float, doc="MuonBestTrack Phi")
0206 proc.muonTable.variables.best_charge = Var("? muonBestTrack().isNonnull() && muonBestTrack().isAvailable() ? muonBestTrack().charge(): -99", float, doc="MuonBestTrack charge")
0207
0208
0209 proc.muonTable.variables.tuneP_pt = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().pt() : -99", float, doc = "pT from tunePMuonBestTrack")
0210
0211 proc.muonTable.variables.tuneP_eta = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().eta(): -99", float, doc="tunePMuonBestTrack Eta")
0212 proc.muonTable.variables.tuneP_phi = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().phi(): -99", float, doc="tunePMuonBestTrack Phi")
0213
0214
0215 proc.muonTable.variables.tuneP_muonHits = Var("? tunePMuonBestTrack().isNonnull() && tunePMuonBestTrack().isAvailable() ? tunePMuonBestTrack().hitPattern().numberOfValidMuonHits() : -99", int, doc="No of valid muon hists from tunePMuonBestTrack")
0216
0217
0218 proc.muonTable.variables.tpfms_pt = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().pt() : -99", float, doc = "pT from tpfmsTrack")
0219 proc.muonTable.variables.tpfms_pterr = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().ptError() : -99", float, doc = "pTerr from tpfmsTrack")
0220 proc.muonTable.variables.tpfms_eta = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().eta(): -99", float, doc="tpfmsTrack Eta")
0221 proc.muonTable.variables.tpfms_phi = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().phi(): -99", float, doc="tpfmsTrack Phi")
0222 proc.muonTable.variables.tpfms_charge = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().charge(): -99", float, doc="tpfmsTrack charge")
0223 proc.muonTable.variables.tpfms_muonHits = Var("? tpfmsTrack().isNonnull() && tpfmsTrack().isAvailable() ? tpfmsTrack().hitPattern().numberOfValidMuonHits() : -99", int, doc="No of valid muon hists from tpfmsTrack")
0224
0225
0226
0227 proc.muonTable.variables.picky_pt = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().pt() : -99", float, doc = "pT from pickyTrack")
0228 proc.muonTable.variables.picky_pterr = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().ptError() : -99", float, doc = "pTerr from pickyTrack")
0229 proc.muonTable.variables.picky_eta = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().eta(): -99", float, doc="pickyTrack Eta")
0230 proc.muonTable.variables.picky_phi = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().phi(): -99", float, doc="pickyTrack Phi")
0231 proc.muonTable.variables.picky_charge = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().charge(): -99", float, doc="pickyTrack charge")
0232 proc.muonTable.variables.picky_muonHits = Var("? pickyTrack().isNonnull() && pickyTrack().isAvailable() ? pickyTrack().hitPattern().numberOfValidMuonHits() : -99", int, doc="No of valid muon hists from pickyTrack")
0233
0234
0235 proc.muonTable.variables.dyt_pt = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().pt() : -99", float, doc = "pT from dytTrack")
0236 proc.muonTable.variables.dyt_pterr = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().ptError() : -99", float, doc = "pTerr from dytTrack")
0237 proc.muonTable.variables.dyt_eta = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().eta(): -99", float, doc="dytTrack Eta")
0238 proc.muonTable.variables.dyt_phi = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().phi(): -99", float, doc="dytTrack Phi")
0239 proc.muonTable.variables.dyt_charge = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().charge(): -99", float, doc="dytTrack charge")
0240 proc.muonTable.variables.dyt_muonHits = Var("? dytTrack().isNonnull() && dytTrack().isAvailable() ? dytTrack().hitPattern().numberOfValidMuonHits() : -99", int, doc="No of valid muon hists from dytTrack")
0241
0242
0243 proc.muonTable.variables.positionChi2 = Var("combinedQuality().chi2LocalPosition", float, doc="chi2 Local Position")
0244 proc.muonTable.variables.momentumChi2 = Var("combinedQuality().chi2LocalMomentum", float, doc="chi2 Local Momentum")
0245 proc.muonTable.variables.trkKink = Var("combinedQuality().trkKink", float, doc="Track Kink")
0246 proc.muonTable.variables.glbKink = Var("combinedQuality().glbKink", float, doc="Glb Kink")
0247 proc.muonTable.variables.glbTrackProbability = Var("combinedQuality().glbTrackProbability", float, doc="Glb Track Probability")
0248 proc.muonTable.variables.trkRelChi2 = Var("combinedQuality().trkRelChi2",float,doc="Track Rel Chi2")
0249
0250
0251 proc.muonTable.variables.timAtIpInOutErr = Var("time().timeAtIpInOutErr",float,doc="timAtIpInOutErr")
0252
0253
0254 proc.muonTable.variables.isArbitratedTracker = Var("userInt('isArbitratedTracker')", bool, doc = "s Arbitrated Tracker")
0255
0256
0257 proc.muonTable.variables.standaloneExtraIdx = Var('? standAloneMuon().isNonnull() ? standAloneMuon().extra().key() : -99', 'int', precision=-1, doc='Index of the StandAloneTrack TrackExtra in the original collection')
0258 proc.muonTable.variables.innerTrackExtraIdx = Var('? innerTrack().isNonnull() ? innerTrack().extra().key() : -99', 'int', precision=-1, doc='Index of the innerTrack TrackExtra in the original collection')
0259
0260
0261
0262 proc.muonTable.variables.jetPtRatio = Var("?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)", float, doc="ptRatio using the LepAware JEC approach, for muon MVA", lazyEval=True)
0263 proc.muonTable.variables.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="b-tagging discriminator of the jet matched to the lepton, for muon MVA", lazyEval=True)
0264 proc.muonTable.variables.jetCSVv2 = Var("?userCand('jetForLepJetVar').isNonnull()?max(userCand('jetForLepJetVar').bDiscriminator('pfCombinedSecondaryVertexV2BJetTags'),0.0):0.0",float,doc="CSVv2 b-tagging discriminator of the jet matched to the lepton, for muon MVA", lazyEval=True)
0265
0266
0267 proc.muonTable.variables.nsegments = Var("userInt('nsegments')", int, doc = "nsegments as of Spark-tool")
0268
0269
0270 proc.muonTable.variables.simType = Var("? simType() ? simType() : -99",int,doc="simType")
0271 proc.muonTable.variables.simExtType = Var("? simExtType() ? simExtType() : -99",int,doc="simExtType")
0272 proc.muonTable.variables.simFlavour = Var("? simFlavour() ? simFlavour() : -99",int,doc="simFlavour")
0273 proc.muonTable.variables.simHeaviestMotherFlavour = Var(" ? simHeaviestMotherFlavour() ? simHeaviestMotherFlavour() : -99",int,doc="simHeaviestMotherFlavour")
0274 proc.muonTable.variables.simPdgId = Var("? simPdgId() ? simPdgId() : -99",int,doc="simPdgId")
0275 proc.muonTable.variables.simMotherPdgId = Var("? simMotherPdgId() ? simMotherPdgId() : -99",int,doc="simMotherPdgId")
0276 proc.muonTable.variables.simBX = Var("? simBX() ? simBX() : -99",int,doc="simBX")
0277 proc.muonTable.variables.simProdRho = Var("? simProdRho() ? simProdRho(): -99",float,doc="simProdRho")
0278 proc.muonTable.variables.simProdZ = Var("? simProdZ() ? simProdZ(): -99",float,doc="simProdZ")
0279 proc.muonTable.variables.simPt = Var("? simPt() ? simPt(): -99",float,doc="simPt")
0280 proc.muonTable.variables.simEta = Var("? simEta() ? simEta(): -99",float,doc="simEta")
0281 proc.muonTable.variables.simPhi = Var("? simPhi() ? simPhi(): -99",float,doc='simPhi')
0282
0283
0284 proc.muonTable.variables.isRPC = Var("isRPCMuon",bool,doc="muon is RPC muon")
0285
0286 return proc
0287
0288 def AddTriggerObjectBits(process):
0289 process.triggerObjectTable.selections.Muon_POG = cms.PSet(
0290 id = cms.int32(1313),
0291 sel = cms.string("type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"),
0292 l1seed = cms.string("type(-81)"), l1deltaR = cms.double(0.5),
0293 l2seed = cms.string("type(83) && coll('hltL2MuonCandidates')"), l2deltaR = cms.double(0.3),
0294 skipObjectsNotPassingQualityBits = cms.bool(True),
0295 qualityBits = cms.VPSet(
0296 mksel("filter('hltTripleMuonL2PreFiltered0')","hltTripleMuonL2PreFiltered0"),
0297 mksel("filter('hltTripleMuL3PreFiltered222')","hltTripleMuL3PreFiltered222"),
0298 mksel("filter('hltJpsiMuonL3Filtered3p5')","hltJpsiMuonL3Filtered3p5"),
0299 mksel("filter('hltVertexmumuFilterJpsiMuon3p5')","hltVertexmumuFilterJpsiMuon3p5"),
0300 mksel("filter('hltL2fL1sDoubleMu0er15OSIorDoubleMu0er14OSIorDoubleMu4OSIorDoubleMu4p5OSL1Filtered0')","hltL2fL1sDoubleMu0er15OSIorDoubleMu0er14OSIorDoubleMu4OSIorDoubleMu4p5OSL1Filtered0"),
0301 mksel("filter('hltDoubleMu4JpsiDisplacedL3Filtered')","hltDoubleMu4JpsiDisplacedL3Filtered"),
0302 mksel("filter('hltDisplacedmumuFilterDoubleMu4Jpsi')","hltDisplacedmumuFilterDoubleMu4Jpsi"),
0303 mksel("filter('hltJpsiTkTkVertexFilterPhiDoubleTrk1v4')","hltJpsiTkTkVertexFilterPhiDoubleTrk1v4"),
0304 mksel("filter('hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered')","hltL3crIsoL1sSingleMu22L1f0L2f10QL3f24QL3trkIsoFiltered"),
0305 mksel("filter('hltL3fL1DoubleMu155fPreFiltered8')","hltL3fL1DoubleMu155fPreFiltered8"),
0306 mksel("filter('hltL3fL1DoubleMu155fFiltered17')","hltL3fL1DoubleMu155fFiltered17"),
0307 mksel("filter('hltDiMuon178RelTrkIsoVVLFiltered')","hltDiMuon178RelTrkIsoVVLFiltered"),
0308 mksel("filter('hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2')","hltDiMuon178RelTrkIsoVVLFilteredDzFiltered0p2"),
0309 mksel("filter('hltDiMuon178Mass3p8Filtered')","hltDiMuon178Mass3p8Filtered"),
0310 mksel("filter('hltL3fL1sMu22Or25L1f0L2f10QL3Filtered50Q')","hltL3fL1sMu22Or25L1f0L2f10QL3Filtered50Q"),
0311 mksel("filter('hltL2fOldL1sMu22or25L1f0L2Filtered10Q')","hltL2fOldL1sMu22or25L1f0L2Filtered10Q"),
0312 mksel("filter('hltL3fL1sMu22Or25L1f0L2f10QL3Filtered100Q')","hltL3fL1sMu22Or25L1f0L2f10QL3Filtered100Q"),
0313 mksel("filter('hltL3fL1sMu25f0TkFiltered100Q')","hltL3fL1sMu25f0TkFiltered100Q"),
0314 mksel("filter('hltL3fL1sMu15DQlqL1f0L2f10L3Filtered17')","hltL3fL1sMu15DQlqL1f0L2f10L3Filtered17"),
0315 mksel("filter('hltL3fL1sMu1lqL1f0L2f10L3Filtered17TkIsoVVLFiltered')","hltL3fL1sMu1lqL1f0L2f10L3Filtered17TkIsoVVLFiltered"),
0316 mksel("filter('hltL3fL1sMu5L1f0L2f5L3Filtered8')","hltL3fL1sMu5L1f0L2f5L3Filtered8"),
0317 mksel("filter('hltL3fL1sMu5L1f0L2f5L3Filtered8TkIsoVVLFiltered')","hltL3fL1sMu5L1f0L2f5L3Filtered8TkIsoVVLFiltered"),
0318 mksel("filter('hltL3fL1sMu7L1f0L2f0L3Filtered12eta2p3')","hltL3fL1sMu7L1f0L2f0L3Filtered12eta2p3"),
0319 mksel("filter('hltL3fL1sMu15DQorMu7lqL1f0L2f10L3Filtered15')","hltL3fL1sMu15DQorMu7lqL1f0L2f10L3Filtered15"),
0320 mksel("filter('hltL3fL1sMu15DQlqL1f0L2f10L3Filtered17')","hltL3fL1sMu15DQlqL1f0L2f10L3Filtered17"),
0321 mksel("filter('hltL3fL1sMu15DQlqL1f0L2f10L3Filtered19')","hltL3fL1sMu15DQlqL1f0L2f10L3Filtered19"),
0322 mksel("filter('hltL3fL1sMu18L1f0L2f10QL3Filtered20Q')","hltL3fL1sMu18L1f0L2f10QL3Filtered20Q"),
0323 mksel("filter('hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q')","hltL3fL1sMu22Or25L1f0L2f10QL3Filtered27Q"),
0324 mksel("filter('hltL3fL1sSingleMuOpenCandidateL1f0L2f3QL3Filtered50Q')","hltL3fL1sSingleMuOpenCandidateL1f0L2f3QL3Filtered50Q"),
0325 mksel("filter('hltTrk200MuonEndcapFilter')","hltTrk200MuonEndcapFilter")
0326 )
0327 )
0328
0329 process.triggerObjectTable.selections.Muon_POG_v2 = cms.PSet(
0330 id = cms.int32(1331),
0331 sel = cms.string("type(83) && pt > 5 && (coll('hltIterL3MuonCandidates') || (pt > 45 && coll('hltHighPtTkMuonCands')) || (pt > 95 && coll('hltOldL3MuonCandidates')))"),
0332 l1seed = cms.string("type(-81)"), l1deltaR = cms.double(0.5),
0333 l2seed = cms.string("type(83) && coll('hltL2MuonCandidates')"), l2deltaR = cms.double(0.3),
0334 skipObjectsNotPassingQualityBits = cms.bool(True),
0335 qualityBits = cms.VPSet(
0336 mksel("filter('hltSQMu7p5L2Mu2JpsiTrackMassFiltered')","hltSQMu7p5L2Mu2JpsiTrackMassFiltered"),
0337 mksel("filter('hltSQMu7p5L2Mu2UpsilonTrackMassFiltered')","hltSQMu7p5L2Mu2UpsilonTrackMassFiltered"),
0338 mksel("filter('hltDiMuonGlb25PhiTrk0DzFiltered0p2')","hltDiMuonGlb25PhiTrk0DzFiltered0p2"),
0339 mksel("filter('hltDiMuonGlb30Trk0DzPsiFiltered0p2')","hltDiMuonGlb30Trk0DzPsiFiltered0p2"),
0340 mksel("filter('hltDiMuonGlb30TrkUpsilon0DzFiltered0p2')","hltDiMuonGlb30TrkUpsilon0DzFiltered0p2"),
0341 mksel("filter('hltL3fL1sDoubleMu0SQL1f0L2PreFilteres0L3Filtered4')","hltL3fL1sDoubleMu0SQL1f0L2PreFilteres0L3Filtered4"),
0342 mksel("filter('hltL3fL1sMu0BMTFL3Filtered0')","hltL3fL1sMu0BMTFL3Filtered0"),
0343 mksel("filter('hltL3fL1sMuHP10L3Filtered0')","hltL3fL1sMuHP10L3Filtered0"),
0344 mksel("filter('hltL3fL1sMuHP11L3Filtered0')","hltL3fL1sMuHP11L3Filtered0"),
0345 mksel("filter('hltL3fL1sMu9HP10IP6L3Filtered0')","hltL3fL1sMu9HP10IP6L3Filtered0"),
0346 mksel("filter('hltL3fL1sMu10HP11IP6L3Filtered0')","hltL3fL1sMu10HP11IP6L3Filtered0"),
0347 mksel("filter('hltL3fL1sMuHP8L3Filtered0')","hltL3fL1sMuHP8L3Filtered0"),
0348 mksel("filter('hltL3fL1sMuHP9L3Filtered0')","hltL3fL1sMuHP9L3Filtered0"),
0349 mksel("filter('hltL3fL1sMu7HP8IP6L3Filtered0')","hltL3fL1sMu7HP8IP6L3Filtered0"),
0350 mksel("filter('hltL3fL1sMu8HP9IP6L3Filtered0')","hltL3fL1sMu8HP9IP6L3Filtered0"),
0351 mksel("filter('hltL3fL1sMuHP6L3Filtered0')","hltL3fL1sMuHP6L3Filtered0"),
0352 mksel("filter('hltL3fL1sMuHP7L3Filtered0')","hltL3fL1sMuHP7L3Filtered0"),
0353 mksel("filter('hltL3fL1sMu0HP6IP6L3Filtered0')","hltL3fL1sMu0HP6IP6L3Filtered0"),
0354 mksel("filter('hltL3fL1sMu6HP7IP6L3Filtered0')","hltL3fL1sMu6HP7IP6L3Filtered0"),
0355 )
0356 )
0357
0358 return process
0359
0360 def IncreaseGenPrecesion(process):
0361
0362 process.genParticleTable.variables.pt = Var("pt", float, precision=16)
0363 process.genParticleTable.variables.eta = Var("eta", float,precision=16)
0364 process.genParticleTable.variables.phi = Var("phi", float,precision=16)
0365
0366 return process
0367
0368 def PrepMuonCustomNanoAOD(process):
0369
0370 process = Custom_Muon_Task(process)
0371 process = AddPFTracks(process)
0372 process = AddVariablesForMuon(process)
0373 process = AddTriggerObjectBits(process)
0374 process = IncreaseGenPrecesion(process)
0375
0376
0377 return process