5 import FWCore.ParameterSet.Config
as cms
8 from PhysicsTools.PatAlgos.patRefitVertexProducer_cfi
import patRefitVertexProducer
9 from PhysicsTools.NanoAOD.simpleVertexFlatTableProducer_cfi
import simpleVertexFlatTableProducer
10 from PhysicsTools.PatAlgos.patElectronTimeLifeInfoProducer_cfi
import patElectronTimeLifeInfoProducer
11 from PhysicsTools.PatAlgos.patMuonTimeLifeInfoProducer_cfi
import patMuonTimeLifeInfoProducer
12 from PhysicsTools.PatAlgos.patTauTimeLifeInfoProducer_cfi
import patTauTimeLifeInfoProducer
13 from PhysicsTools.NanoAOD.simplePATElectron2TrackTimeLifeInfoFlatTableProducer_cfi
import simplePATElectron2TrackTimeLifeInfoFlatTableProducer
14 from PhysicsTools.NanoAOD.simplePATMuon2TrackTimeLifeInfoFlatTableProducer_cfi
import simplePATMuon2TrackTimeLifeInfoFlatTableProducer
15 from PhysicsTools.NanoAOD.simplePATTau2TrackTimeLifeInfoFlatTableProducer_cfi
import simplePATTau2TrackTimeLifeInfoFlatTableProducer
20 prod_common = cms.PSet(
21 pvSource = cms.InputTag(
"offlineSlimmedPrimaryVerticesWithBS"),
22 pvChoice = cms.int32(0)
28 ipLengthSig =
Var(
"ipLength().significance()", float, doc=
"significance of impact parameter", precision=10),
29 IPx =
Var(
"ipVector().x()", float, doc=
"x coordinate of impact parameter vector", precision=10),
30 IPy =
Var(
"ipVector().y()", float, doc=
"y coordinate of impact parameter vector", precision=10),
31 IPz =
Var(
"ipVector().z()", float, doc=
"z coordinate of impact parameter vector", precision=10)
36 track_qoverp =
Var(
"?hasTrack()?track().parameter(0):0", float, doc=
"track q/p", precision=10),
37 track_lambda =
Var(
"?hasTrack()?track().parameter(1):0", float, doc=
"track lambda", precision=10),
38 track_phi =
Var(
"?hasTrack()?track().parameter(2):0", float, doc=
"track phi", precision=10),
40 track_dxy =
Var(
"?hasTrack()?track().parameter(3):0", float, doc=
"track dxy", precision=10),
41 track_dsz =
Var(
"?hasTrack()?track().parameter(4):0", float, doc=
"track dsz", precision=10),
42 bField_z =
Var(
"?hasTrack()?bField_z:0", float, doc=
"z coordinate of magnetic field at track ref. point", precision=10),
48 setattr(trackVars,
'track_cov'+jistr,
Var(
"?hasTrack()?track().covariance("+
str(j)+
","+
str(i)+
"):0", float, doc=
"track covariance element ("+
str(j)+
","+
str(i)+
")", precision=10))
53 hasRefitSV =
Var(
"hasSV()", bool, doc=
"has SV refit using miniAOD quantities"),
54 refitSVx =
Var(
"?hasSV()?sv().x():0", float, doc=
"x coordinate of SV", precision=10),
55 refitSVy =
Var(
"?hasSV()?sv().y():0", float, doc=
"y coordinate of SV", precision=10),
56 refitSVz =
Var(
"?hasSV()?sv().z():0", float, doc=
"z coordinate of SV", precision=10),
57 refitSVchi2 =
Var(
"?hasSV()?sv().normalizedChi2():0", float, doc=
"reduced chi2, i.e. chi2/ndof, of SV fit", precision=8),
67 setattr(svVars,
'refitSVcov'+jistr,
Var(
"?hasSV()?sv().covariance("+
str(j)+
","+
str(i)+
"):0", float, doc=
"Covariance of SV ("+
str(j)+
","+
str(i)+
")", precision=10))
70 pvCovVars = cms.PSet()
74 setattr(pvCovVars,
'cov'+jistr,
Var(
"covariance("+
str(j)+
","+
str(i)+
")", float, doc=
"vertex covariance ("+
str(j)+
","+
str(i)+
")", precision=10))
77 refittedPV = patRefitVertexProducer.clone(
78 srcVertices =
"offlineSlimmedPrimaryVertices",
80 run2_nanoAOD_ANY.toModify(
81 prod_common, pvSource =
"refittedPV")
84 ipVarsPlots = cms.VPSet(
86 Plot1D(
'ipLengthSig',
'ipLengthSig', 60, -5, 10,
'signed significance of impact parameter'),
87 Plot1D(
'IPx',
'IPx', 40, -0.02, 0.02,
'x coordinate of impact parameter vector'),
88 Plot1D(
'IPy',
'IPy', 40, -0.02, 0.02,
'y coordinate of impact parameter vector'),
89 Plot1D(
'IPz',
'IPz', 40, -0.02, 0.02,
'z coordinate of impact parameter vector')
91 trackVarsPlots = cms.VPSet(
92 Plot1D(
'track_qoverp',
'track_qoverp', 40, -0.2, 0.2,
'track q/p'),
93 Plot1D(
'track_lambda',
'track_lambda', 30, -1.5, 1.5,
'track lambda'),
94 Plot1D(
'track_phi',
'track_phi', 20, -3.14159, 3.14159,
'track phi'),
95 Plot1D(
'track_dxy',
'track_dxy', 20, -0.1, 0.1,
'track dxy'),
96 Plot1D(
'track_dsz',
'track_dsz', 20, -10, 10,
'track dsz'),
102 trackVarsPlots.append(
NoPlot(
'track_cov'+
str(j)+
str(i)))
103 svVarsPlots = cms.VPSet(
104 Plot1D(
'hasRefitSV',
'hasRefitSV', 2, 0, 2,
'has SV refit using miniAOD quantities'),
105 Plot1D(
'refitSVx',
'refitSVx', 20, -0.1, 0.1,
'x coordinate of refitted SV'),
106 Plot1D(
'refitSVy',
'refitSVy', 20, -0.1, 0.1,
'y coordinate of refitted SV'),
107 Plot1D(
'refitSVz',
'refitSVz', 20, -20, 20,
'z coordinate of refitted SV'),
108 Plot1D(
'refitSVchi2',
'refitSVchi2', 20, 0, 40,
'reduced chi2 of SV fit'),
121 process.electronTimeLifeInfos = patElectronTimeLifeInfoProducer.clone(
122 src = process.electronTable.src,
123 selection =
'pt > 15',
124 pvSource = prod_common.pvSource,
125 pvChoice = prod_common.pvChoice
127 process.electronTimeLifeInfoTable = simplePATElectron2TrackTimeLifeInfoFlatTableProducer.clone(
128 name = process.electronTable.name,
129 src = process.electronTable.src,
130 doc = cms.string(
"Additional time-life info for non-prompt electrons"),
132 externalTypedVariables = cms.PSet()
134 process.electronTimeLifeInfoTask = cms.Task(
135 process.electronTimeLifeInfos,
136 process.electronTimeLifeInfoTable
139 if not hasattr(process,
'refittedPV'):
140 setattr(process,
'refittedPV',refittedPV)
141 _electronTimeLifeInfoTaskRun2 = process.electronTimeLifeInfoTask.copy()
142 _electronTimeLifeInfoTaskRun2.add(process.refittedPV)
143 run2_nanoAOD_ANY.toReplaceWith(process.electronTimeLifeInfoTask,
144 _electronTimeLifeInfoTaskRun2)
145 process.electronTablesTask.add(process.electronTimeLifeInfoTask)
148 electronVars = cms.PSet(
151 for var
in electronVars.parameters_():
152 setattr(getattr(electronVars, var),
"src", cms.InputTag(
"electronTimeLifeInfos"))
154 if not hasattr(process,
'electronTimeLifeInfoTask'):
156 electronExtVars = cms.PSet(
157 process.electronTimeLifeInfoTable.externalTypedVariables,
160 process.electronTimeLifeInfoTable.externalTypedVariables = electronExtVars
162 if hasattr(process,
'nanoDQM'):
163 process.nanoDQM.vplots.Electron.plots.extend(ipVarsPlots)
166 electronTrackVars = cms.PSet(
169 for var
in electronTrackVars.parameters_():
170 setattr(getattr(electronTrackVars, var),
"src", cms.InputTag(
"electronTimeLifeInfos"))
172 if not hasattr(process,
'electronTimeLifeInfoTask'):
174 electronExtVars = cms.PSet(
175 process.electronTimeLifeInfoTable.externalTypedVariables,
178 process.electronTimeLifeInfoTable.externalTypedVariables = electronExtVars
180 if hasattr(process,
'nanoDQM'):
181 process.nanoDQM.vplots.Electron.plots.extend(trackVarsPlots)
186 process.muonTimeLifeInfos = patMuonTimeLifeInfoProducer.clone(
187 src = process.muonTable.src,
188 selection =
'pt > 15',
189 pvSource = prod_common.pvSource,
190 pvChoice = prod_common.pvChoice
192 process.muonTimeLifeInfoTable = simplePATMuon2TrackTimeLifeInfoFlatTableProducer.clone(
193 name = process.muonTable.name,
194 src = process.muonTable.src,
195 doc = cms.string(
"Additional time-life info for non-prompt muon"),
197 externalTypedVariables = cms.PSet()
199 process.muonTimeLifeInfoTask = cms.Task(
200 process.muonTimeLifeInfos,
201 process.muonTimeLifeInfoTable
204 if not hasattr(process,
'refittedPV'):
205 setattr(process,
'refittedPV',refittedPV)
206 _muonTimeLifeInfoTaskRun2 = process.muonTimeLifeInfoTask.copy()
207 _muonTimeLifeInfoTaskRun2.add(process.refittedPV)
208 run2_nanoAOD_ANY.toReplaceWith(process.muonTimeLifeInfoTask,
209 _muonTimeLifeInfoTaskRun2)
210 process.muonTablesTask.add(process.muonTimeLifeInfoTask)
216 for var
in muonVars.parameters_():
217 setattr(getattr(muonVars, var),
"src", cms.InputTag(
"muonTimeLifeInfos"))
219 if not hasattr(process,
'muonTimeLifeInfoTask'):
221 muonExtVars = cms.PSet(
222 process.muonTimeLifeInfoTable.externalTypedVariables,
225 process.muonTimeLifeInfoTable.externalTypedVariables = muonExtVars
227 if hasattr(process,
'nanoDQM'):
228 process.nanoDQM.vplots.Muon.plots.extend(ipVarsPlots)
231 muonTrackVars = cms.PSet(
234 for var
in muonTrackVars.parameters_():
235 setattr(getattr(muonTrackVars, var),
"src", cms.InputTag(
"muonTimeLifeInfos"))
237 if not hasattr(process,
'muonTimeLifeInfoTask'):
239 muonExtVars = cms.PSet(
240 process.muonTimeLifeInfoTable.externalTypedVariables,
243 process.muonTimeLifeInfoTable.externalTypedVariables = muonExtVars
245 if hasattr(process,
'nanoDQM'):
246 process.nanoDQM.vplots.Muon.plots.extend(trackVarsPlots)
251 process.tauTimeLifeInfos = patTauTimeLifeInfoProducer.clone(
252 src = process.tauTable.src,
253 pvSource = prod_common.pvSource,
254 pvChoice = prod_common.pvChoice
256 process.tauTimeLifeInfoTable = simplePATTau2TrackTimeLifeInfoFlatTableProducer.clone(
257 name = process.tauTable.name,
258 src = process.tauTable.src,
259 doc = cms.string(
"Additional tau time-life info"),
261 externalTypedVariables = cms.PSet()
263 process.tauTimeLifeInfoTask = cms.Task(
264 process.tauTimeLifeInfos,
265 process.tauTimeLifeInfoTable
268 if not hasattr(process,
'refittedPV'):
269 setattr(process,
'refittedPV',refittedPV)
270 _tauTimeLifeInfoTaskRun2 = process.tauTimeLifeInfoTask.copy()
271 _tauTimeLifeInfoTaskRun2.add(process.refittedPV)
272 run2_nanoAOD_ANY.toReplaceWith(process.tauTimeLifeInfoTask,
273 _tauTimeLifeInfoTaskRun2)
274 process.tauTablesTask.add(process.tauTimeLifeInfoTask)
281 for var
in tauVars.parameters_():
282 setattr(getattr(tauVars, var),
"src", cms.InputTag(
"tauTimeLifeInfos"))
284 if not hasattr(process,
'tauTimeLifeInfoTask'):
286 tauExtVars = cms.PSet(
287 process.tauTimeLifeInfoTable.externalTypedVariables,
290 process.tauTimeLifeInfoTable.externalTypedVariables = tauExtVars
292 if hasattr(process,
'nanoDQM'):
293 process.nanoDQM.vplots.Tau.plots.extend(ipVarsPlots)
294 process.nanoDQM.vplots.Tau.plots.extend(svVarsPlots)
297 tauTrackVars = cms.PSet(
300 for var
in tauTrackVars.parameters_():
301 setattr(getattr(tauTrackVars, var),
"src", cms.InputTag(
"tauTimeLifeInfos"))
303 if not hasattr(process,
'tauTimeLifeInfoTask'):
305 tauExtVars = cms.PSet(
306 process.tauTimeLifeInfoTable.externalTypedVariables,
309 process.tauTimeLifeInfoTable.externalTypedVariables = tauExtVars
311 if hasattr(process,
'nanoDQM'):
312 process.nanoDQM.vplots.Tau.plots.extend(trackVarsPlots)
317 process.pvbsTable = simpleVertexFlatTableProducer.clone(
318 src = prod_common.pvSource,
320 doc =
"main primary vertex with beam-spot",
322 variables = cms.PSet(
324 x =
Var(
"position().x()", float, doc =
"position x coordinate, in cm", precision = 10),
325 y =
Var(
"position().y()", float, doc =
"position y coordinate, in cm", precision = 10),
326 z =
Var(
"position().z()", float, doc =
"position z coordinate, in cm", precision = 16),
328 chi2 =
Var(
"normalizedChi2()", float, doc =
"reduced chi2, i.e. chi2/ndof", precision = 8),
331 process.pvbsTableTask = cms.Task(process.pvbsTable)
333 if not hasattr(process,
'refittedPV'):
334 setattr(process,
'refittedPV',refittedPV)
335 _pvbsTableTaskRun2 = process.pvbsTableTask.copy()
336 _pvbsTableTaskRun2.add(process.refittedPV)
337 run2_nanoAOD_ANY.toReplaceWith(process.pvbsTableTask,
339 process.vertexTablesTask.add(process.pvbsTableTask)
def addTimeLifeInfoToElectrons(process)
def addTimeLifeInfoToMuons(process)
def Var(expr, valtype, doc=None, precision=-1, lazyEval=False)
def addTimeLifeInfoBase(process)
def addMuonTrackVarsToTimeLifeInfo(process)
def addMuonTimeLifeInfoTask(process)
def addTauTrackVarsToTimeLifeInfo(process)
def addTimeLifeInfo(process)
def addTimeLifeInfoToTaus(process)
def addElectronTrackVarsToTimeLifeInfo(process)
def addTauTimeLifeInfoTask(process)
def addTrackVarsToTimeLifeInfo(process)
def addElectronTimeLifeInfoTask(process)
def addExtendVertexInfo(process)