1 from __future__
import absolute_import
2 import FWCore.ParameterSet.Config
as cms
8 from Validation.RecoTrack.trajectorySeedTracks_cfi
import trajectorySeedTracks
as _trajectorySeedTracks
17 from CommonTools.RecoAlgos.trackingParticleRefSelector_cfi
import trackingParticleRefSelector
as _trackingParticleRefSelector
18 from CommonTools.RecoAlgos.trackingParticleConversionRefSelector_cfi
import trackingParticleConversionRefSelector
as _trackingParticleConversionRefSelector
19 from SimTracker.TrackHistory.trackingParticleBHadronRefSelector_cfi
import trackingParticleBHadronRefSelector
as _trackingParticleBHadronRefSelector
21 from CommonTools.RecoAlgos.recoChargedRefCandidateToTrackRefProducer_cfi
import recoChargedRefCandidateToTrackRefProducer
as _recoChargedRefCandidateToTrackRefProducer
23 import RecoTracker.IterativeTracking.iterativeTkConfig
as _cfg
24 import RecoTracker.IterativeTracking.iterativeTkUtils
as _utils
25 from Configuration.Eras.Modifier_fastSim_cff
import fastSim
30 for _eraName, _postfix, _era
in _cfg.allEras():
31 _seedProd = [
"initialStepSeedsPreSplitting"]
32 _trackProd = [
"initialStepTracksPreSplitting"]
33 if _eraName
in [
"trackingLowPU",
"trackingPhase2PU140"]:
37 locals()[
"_algos"+_postfix] = [
"generalTracks"] + _cfg.iterationAlgos(_postfix) + [
"duplicateMerge"]
38 locals()[
"_seedProducersPreSplitting"+_postfix] = _seedProd
39 locals()[
"_trackProducersPreSplitting"+_postfix] = _trackProd
40 locals()[
"_seedProducers"+_postfix] = _cfg.seedProducers(_postfix)
41 locals()[
"_trackProducers"+_postfix] = _cfg.trackProducers(_postfix)
43 if _eraName !=
"trackingPhase2PU140":
44 locals()[
"_electronSeedProducers"+_postfix] = [
"tripletElectronSeeds",
"pixelPairElectronSeeds",
"stripPairElectronSeeds"]
46 locals()[
"_electronSeedProducers"+_postfix] = [
"tripletElectronSeeds"]
48 _removeForFastSimSeedProducers =[
"initialStepSeedsPreSplitting",
49 "jetCoreRegionalStepSeeds",
50 "muonSeededSeedsInOut",
51 "muonSeededSeedsOutIn"]
52 _seedProducers_fastSim = [ x
for x
in _seedProducers
if x
not in _removeForFastSimSeedProducers]
54 _removeForFastTrackProducers = [
"initialStepTracksPreSplitting",
55 "jetCoreRegionalStepTracks",
56 "muonSeededTracksInOut",
57 "muonSeededTracksOutIn"]
58 _trackProducers_fastSim = [ x
for x
in _trackProducers
if x
not in _removeForFastTrackProducers]
62 if algo !=
"generalTracks":
63 sel = algo[0].
upper()+algo[1:]
64 return "cutsRecoTracks"+sel
70 if algo ==
"generalTracks":
73 if modName
not in modDict:
74 mod = cutsRecoTracks_cfi.cutsRecoTracks.clone(algorithm=[algo])
75 modDict[modName] = mod
77 mod = modDict[modName]
86 modNameHp = modName+
"Hp" 87 if modNameHp
not in modDict:
88 if algo ==
"generalTracks":
89 mod = cutsRecoTracks_cfi.cutsRecoTracks.clone(quality=[
"highPurity"])
91 mod = modDict[modName].
clone(quality=[
"highPurity"])
92 modDict[modNameHp] = mod
94 mod = modDict[modNameHp]
95 names.append(modNameHp)
101 for modName
in modules:
102 modNameNew = modName.replace(
"cutsRecoTracks",
"cutsRecoTracks"+midfix)
103 if modNameNew
not in modDict:
104 mod = modDict[modName].
clone(src=src)
105 modDict[modNameNew] = mod
107 mod = modDict[modNameNew]
108 names.append(modNameNew)
114 for modName
in modules:
115 if modName[-2:] ==
"Hp":
116 modNameNew = modName[:-2] + midfix +
"Hp" 118 modNameNew = modName + midfix
119 if modNameNew
not in modDict:
120 mod = modDict[modName].
clone()
121 setattr(mod, algoParam, mod.algorithm.value())
123 modDict[modNameNew] = mod
125 mod = modDict[modNameNew]
126 names.append(modNameNew)
132 for seed
in seedProducers:
133 modName =
"seedTracks"+seed
134 if modName
not in modDict:
135 mod = _trajectorySeedTracks.clone(src=seed)
136 modDict[modName] = mod
138 mod = modDict[modName]
139 names.append(modName)
143 _relevantEras = _cfg.allEras()
144 _relevantErasAndFastSim = _relevantEras + [(
"fastSim",
"_fastSim", fastSim)]
148 if isinstance(arg, list):
151 ret.append(modDict[arg+postfix])
153 def _taskForEachEra(function, args, names, task, modDict, plainArgs=[], modifyTask=None, includeFastSim=False):
155 raise Exception(
"Task name is expected to begin with _")
157 _eras = _relevantErasAndFastSim
if includeFastSim
else _relevantEras
158 for eraName, postfix, _era
in _eras:
160 _args.extend(plainArgs)
161 ret =
function(*_args, modDict=modDict)
163 raise Exception(
"_taskForEachEra is expected to return 2 values, but function returned %d" % len(ret))
164 modDict[names+postfix] = ret[0]
165 modDict[task+postfix] = ret[1]
168 defaultTaskName = task+_eras[0][0]
169 defaultTask = modDict[defaultTaskName]
170 modDict[defaultTaskName[1:]] = defaultTask
173 if modifyTask
is not None:
174 for eraName, postfix, _era
in _eras:
178 for _eraName, _postfix, _era
in _eras[1:]:
179 _era.toReplaceWith(defaultTask, modDict[task+_postfix])
182 for key, value
in six.iteritems(kwargs):
183 setattr(module, key, value)
185 era.toModify(module, **kwargs)
189 def _findSeedingLayers(name):
190 prod = getattr(config, name)
191 if hasattr(prod,
"triplets"):
192 if hasattr(prod,
"layerList"):
193 return prod.layerList.refToPSet_.value()
194 return _findSeedingLayers(prod.triplets.getModuleLabel())
195 elif hasattr(prod,
"doublets"):
196 return _findSeedingLayers(prod.doublets.getModuleLabel())
197 label = prod.trackingRegionsSeedingLayers.getModuleLabel()
200 return prod.seedingLayers.getModuleLabel()
202 seedingLayersMerged = []
203 for seedName
in seedProducers:
204 seedProd = getattr(config, seedName)
205 seedingLayersName =
None 207 if hasattr(seedProd,
"OrderedHitsFactoryPSet"):
208 seedingLayersName = seedProd.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel()
209 elif hasattr(seedProd,
"seedingHitSets"):
210 seedingLayersName = _findSeedingLayers(seedProd.seedingHitSets.getModuleLabel())
211 elif hasattr(seedProd,
"layerList"):
212 seedingLayers = seedProd.layerList.value()
216 if seedingLayersName
is not None:
217 seedingLayers = getattr(config, seedingLayersName).layerList.value()
218 for layerSet
in seedingLayers:
219 if layerSet
not in seedingLayersMerged:
220 seedingLayersMerged.append(layerSet)
222 return seedingLayersMerged
225 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
228 if "_electronSeedProducers"+_postfix
in locals():
229 for _layer
in _getSeedingLayers(locals()[
"_electronSeedProducers"+_postfix], _ElectronSeeds_cff):
230 if _layer
not in _stdLayers:
231 _eleLayers.append(_layer)
233 locals()[
"_seedingLayerSets"+_postfix] = _stdLayers
234 locals()[
"_seedingLayerSetsForElectrons"+_postfix] = _eleLayers
239 mvaSel = _utils.getMVASelectors(postfix)
241 pset = cms.untracked.PSet()
242 for iteration, (trackProducer, classifiers)
in six.iteritems(mvaSel):
243 setattr(pset, trackProducer, cms.untracked.vstring(classifiers))
245 for _eraName, _postfix, _era
in _relevantEras:
249 _taskForEachEra(_addSelectorsByAlgo, args=[
"_algos"], names=
"_selectorsByAlgo", task=
"_tracksValidationSelectorsByAlgo", modDict=globals())
252 _taskForEachEra(_addSelectorsByHp, args=[
"_algos"], names=
"_selectorsByAlgoHp", task=
"_tracksValidationSelectorsByAlgoHp", modDict=globals())
255 for _eraName, _postfix, _era
in _relevantEras:
256 locals()[
"_selectorsByAlgoAndHp"+_postfix] = locals()[
"_selectorsByAlgo"+_postfix] + locals()[
"_selectorsByAlgoHp"+_postfix]
258 locals()[
"_selectorsByAlgoAndHpNoGenTk"+_postfix] = [n
for n
in locals()[
"_selectorsByAlgoAndHp"+_postfix]
if n
not in [
"generalTracks",
"cutsRecoTracksHp"]]
260 locals()[
"_selectorsByAlgoAndHpNoGenTkDupMerge"+_postfix] = [n
for n
in locals()[
"_selectorsByAlgoAndHpNoGenTk"+_postfix]
if n
not in [
"cutsRecoTracksDuplicateMerge",
"cutsRecoTracksDuplicateMergeHp"]]
262 args = [
"_selectorsByAlgoAndHpNoGenTkDupMerge"], plainArgs = [
"ByOriginalAlgo",
"originalAlgorithm"],
263 names =
"_selectorsByOriginalAlgo", task =
"_tracksValidationSelectorsByOriginalAlgo")
266 for _eraName, _postfix, _era
in _relevantEras:
267 selectors = locals()[
"_selectorsByAlgoHp"+_postfix]
268 locals()[
"_generalTracksHp"+_postfix] = selectors[0]
269 locals()[
"_selectorsByAlgoHp"+_postfix] = selectors[1:]
272 import PhysicsTools.RecoAlgos.btvTracks_cfi
as btvTracks_cfi
273 cutsRecoTracksBtvLike = btvTracks_cfi.btvTrackRefs.clone()
277 ak4JetTracksAssociatorExplicitAll = ak4JTA_cff.ak4JetTracksAssociatorExplicit.clone(
281 import CommonTools.RecoAlgos.jetTracksAssociationToTrackRefs_cfi
as jetTracksAssociationToTrackRefs_cfi
282 cutsRecoTracksAK4PFJets = jetTracksAssociationToTrackRefs_cfi.jetTracksAssociationToTrackRefs.clone(
283 association =
"ak4JetTracksAssociatorExplicitAll",
290 trackingParticlesSignal = _trackingParticleRefSelector.clone(
301 generalTracksPt09 = cutsRecoTracks_cfi.cutsRecoTracks.clone(ptMin=0.9)
304 args=[[
"_generalTracksHp"]],
305 plainArgs=[
"Pt09",
"generalTracksPt09"],
306 names=
"_selectorsPt09", task=
"_tracksValidationSelectorsPt09",
307 modifyTask=
lambda task:task.add(generalTracksPt09))
311 generalTracksFromPV = _trackWithVertexRefSelector.clone(
312 src =
"generalTracks",
317 vertexTag =
"offlinePrimaryVertices",
325 args=[[
"_generalTracksHp"]],
326 plainArgs=[
"FromPV",
"generalTracksFromPV"],
327 names=
"_selectorsFromPV", task=
"_tracksValidationSelectorsFromPV",
328 modifyTask=
lambda task: task.add(generalTracksFromPV))
331 generalTracksFromPVPt09 = generalTracksPt09.clone(src=
"generalTracksFromPV")
334 args=[[
"_generalTracksHp"]],
335 plainArgs=[
"FromPVPt09",
"generalTracksFromPVPt09"],
336 names=
"_selectorsFromPVPt09", task=
"_tracksValidationSelectorsFromPVPt09",
337 modifyTask=
lambda task: task.add(generalTracksFromPVPt09))
340 trackingParticlesConversion = _trackingParticleConversionRefSelector.clone()
343 trackingParticlesElectron = _trackingParticleRefSelector.clone(
354 highPtJets = cms.EDFilter(
"CandPtrSelector", src = cms.InputTag(
"ak4CaloJets"), cut = cms.string(
"pt()>1000"))
355 highPtJetsForTrk = highPtJetsForTrk = highPtJets.clone(src =
"ak4CaloJetsForTrk")
358 trackingParticlesBHadron = _trackingParticleBHadronRefSelector.clone()
361 trackValidator = Validation.RecoTrack.MultiTrackValidator_cfi.multiTrackValidator.clone(
362 useLogPt = cms.untracked.bool(
True),
364 doPVAssociationPlots =
True 369 fastSim.toModify(trackValidator,
372 for _eraName, _postfix, _era
in _relevantEras:
374 label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix]] +
375 locals()[
"_selectorsByAlgo"+_postfix] + locals()[
"_selectorsByAlgoHp"+_postfix] +
376 locals()[
"_selectorsByOriginalAlgo"+_postfix] +
377 [
"generalTracksPt09"] + locals()[
"_selectorsPt09"+_postfix] +
379 "cutsRecoTracksBtvLike",
380 "cutsRecoTracksAK4PFJets" 382 doResolutionPlotsForLabels = [
384 locals()[
"_generalTracksHp"+_postfix],
386 "cutsRecoTracksBtvLike",
389 _setForEra(trackValidator.histoProducerAlgoBlock, _eraName, _era, seedingLayerSets=locals()[
"_seedingLayerSets"+_postfix])
392 trackValidatorTPPtLess09 = trackValidator.clone(
393 dirName =
"Tracking/TrackTPPtLess09/",
394 label = [x
for x
in trackValidator.label.value()
if (
"Pt09" not in x)
and (
"BtvLike" not in x)
and (
"AK4PFJets" not in x)],
396 histoProducerAlgoBlock = dict(
397 TpSelectorForEfficiencyVsEta = dict(ptMin=0.05),
398 TpSelectorForEfficiencyVsPhi = dict(ptMin=0.05),
399 TpSelectorForEfficiencyVsVTXR = dict(ptMin=0.05),
400 TpSelectorForEfficiencyVsVTXZ = dict(ptMin=0.05),
403 doRecoTrackPlots =
False,
404 doResolutionPlotsForLabels = [
"disabled"],
408 trackValidatorTPEtaGreater2p7 = trackValidator.clone(
409 dirName =
"Tracking/TrackTPEtaGreater2p7/",
410 label = [x
for x
in trackValidator.label.value()
if (
"Pt09" not in x)
and (
"BtvLike" not in x)
and (
"AK4PFJets" not in x)],
413 minRapidityTP = -2.7,
415 invertRapidityCutTP =
True,
417 histoProducerAlgoBlock = dict(
418 TpSelectorForEfficiencyVsPt = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
419 TpSelectorForEfficiencyVsEta = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
420 TpSelectorForEfficiencyVsPhi = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
421 TpSelectorForEfficiencyVsVTXR = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
422 TpSelectorForEfficiencyVsVTXZ = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
423 generalTpSelector = dict(ptMin=0.005,minRapidity=-2.7,maxRapidity=2.7,invertRapidityCut=
True),
430 doRecoTrackPlots =
False,
431 doResolutionPlotsForLabels = [
"disabled"]
437 trackValidatorFromPV = trackValidator.clone(
438 dirName =
"Tracking/TrackFromPV/",
439 label_tp_effic =
"trackingParticlesSignal",
440 label_tp_fake =
"trackingParticlesSignal",
441 label_tp_effic_refvector =
True,
442 label_tp_fake_refvector =
True,
443 trackCollectionForDrCalculation =
"generalTracksFromPV",
444 doPlotsOnlyForTruePV =
True,
445 doPVAssociationPlots =
False,
446 doResolutionPlotsForLabels = [
"disabled"],
448 for _eraName, _postfix, _era
in _relevantEras:
449 _setForEra(trackValidatorFromPV, _eraName, _era,
450 label = [
"generalTracksFromPV"] + locals()[
"_selectorsFromPV"+_postfix] + [
"generalTracksFromPVPt09"] + locals()[
"_selectorsFromPVPt09"+_postfix],
451 doResolutionPlotsForLabels = []
456 trackValidatorFromPVAllTP = trackValidatorFromPV.clone(
457 dirName =
"Tracking/TrackFromPVAllTP/",
458 label_tp_effic = trackValidator.label_tp_effic.value(),
459 label_tp_fake = trackValidator.label_tp_fake.value(),
460 label_tp_effic_refvector =
False,
461 label_tp_fake_refvector =
False,
463 doSimTrackPlots =
False,
464 doResolutionPlotsForLabels = [
"disabled"],
468 trackValidatorAllTPEffic = trackValidator.clone(
469 dirName =
"Tracking/TrackAllTPEffic/",
470 label = [x
for x
in trackValidator.label.value()
if "Pt09" not in x],
472 doRecoTrackPlots =
True,
473 doPVAssociationPlots =
False,
474 doResolutionPlotsForLabels = [
"disabled"],
476 trackValidatorAllTPEffic.histoProducerAlgoBlock.generalTpSelector.signalOnly =
False 477 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsEta.signalOnly =
False 478 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsPhi.signalOnly =
False 479 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsPt.signalOnly =
False 480 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXR.signalOnly =
False 481 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXZ.signalOnly =
False 482 for _eraName, _postfix, _era
in _relevantEras:
483 _setForEra(trackValidatorAllTPEffic, _eraName, _era, label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix]])
486 tpClusterProducerPreSplitting = tpClusterProducer.clone(pixelClusterSrc =
"siPixelClustersPreSplitting")
487 quickTrackAssociatorByHitsPreSplitting = quickTrackAssociatorByHits.clone(cluster2TPSrc =
"tpClusterProducerPreSplitting")
488 _trackValidatorSeedingBuilding = trackValidator.clone(
489 associators = [
"quickTrackAssociatorByHits"],
490 UseAssociators =
True,
492 doPVAssociationPlots =
False,
494 doResolutionPlotsForLabels = [
"disabled"],
496 trackValidatorBuilding = _trackValidatorSeedingBuilding.clone(
497 dirName =
"Tracking/TrackBuilding/",
500 trackValidatorBuildingPreSplitting = trackValidatorBuilding.clone(
501 associators = [
"quickTrackAssociatorByHitsPreSplitting"],
503 doSummaryPlots =
False,
505 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
506 _setForEra(trackValidatorBuilding, _eraName, _era, label = locals()[
"_trackProducers"+_postfix])
507 fastSim.toModify(trackValidatorBuilding, doMVAPlots=
False)
508 for _eraName, _postfix, _era
in _relevantEras:
509 _setForEra(trackValidatorBuilding, _eraName, _era, mvaLabels = locals()[
"_mvaSelectors"+_postfix])
510 _setForEra(trackValidatorBuildingPreSplitting, _eraName, _era, label = locals()[
"_trackProducersPreSplitting"+_postfix])
514 trackValidatorConversion = trackValidator.clone(
515 dirName =
"Tracking/TrackConversion/",
518 "conversionStepTracks",
519 "ckfInOutTracksFromConversions",
520 "ckfOutInTracksFromConversions",
522 label_tp_effic =
"trackingParticlesConversion",
523 label_tp_effic_refvector =
True,
524 associators = [
"quickTrackAssociatorByHits"],
525 UseAssociators =
True,
528 doPVAssociationPlots =
False,
529 calculateDrSingleCollection =
False,
533 firstLayers = [layerSet.split(
"+")[0]
for layerSet
in layerList]
535 for l
in firstLayers:
540 if l.startswith(
"TEC"):
546 trackValidatorConversion.histoProducerAlgoBlock.seedingLayerSets =
_uniqueFirstLayers(_convLayerPairs.layerList.value())
548 for n
in [
"Eta",
"Phi",
"Pt",
"VTXR",
"VTXZ"]:
549 pset = getattr(trackValidatorConversion.histoProducerAlgoBlock,
"TpSelectorForEfficiencyVs"+n)
550 pset.lip = trackValidatorConversion.lipTP.value()
551 pset.tip = trackValidatorConversion.tipTP.value()
554 trackValidatorGsfTracks = trackValidatorConversion.clone(
555 dirName =
"Tracking/TrackGsf/",
556 label = [
"electronGsfTracks"],
557 label_tp_effic =
"trackingParticlesElectron",
560 for _eraName, _postfix, _era
in _relevantEras:
561 _setForEra(trackValidatorGsfTracks.histoProducerAlgoBlock, _eraName, _era, seedingLayerSets=trackValidator.histoProducerAlgoBlock.seedingLayerSets.value()+locals()[
"_seedingLayerSetsForElectrons"+_postfix])
566 trackValidatorBHadron = trackValidator.clone(
567 dirName =
"Tracking/TrackBHadron/",
568 label_tp_effic =
"trackingParticlesBHadron",
569 label_tp_effic_refvector =
True,
571 doRecoTrackPlots =
False,
574 for _eraName, _postfix, _era
in _relevantEras:
575 _setForEra(trackValidatorBHadron, _eraName, _era,
576 label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix],
"cutsRecoTracksBtvLike"]
581 tracksValidationSelectors = cms.Task(
582 tracksValidationSelectorsByAlgo,
583 tracksValidationSelectorsByAlgoHp,
584 tracksValidationSelectorsByOriginalAlgo,
585 cutsRecoTracksBtvLike,
586 ak4JetTracksAssociatorExplicitAll,
587 cutsRecoTracksAK4PFJets
589 tracksValidationTruth = cms.Task(
591 tpClusterProducerPreSplitting,
592 quickTrackAssociatorByHits,
593 quickTrackAssociatorByHitsPreSplitting,
594 trackingParticleRecoTrackAsssociation,
595 VertexAssociatorByPositionAndTracks,
596 trackingParticleNumberOfLayersProducer
598 fastSim.toModify(tracksValidationTruth,
lambda x: x.remove(tpClusterProducer))
600 tracksPreValidation = cms.Task(
602 tracksValidationSelectors,
603 tracksValidationSelectorsPt09,
604 tracksValidationSelectorsFromPV,
605 tracksValidationSelectorsFromPVPt09,
606 tracksValidationTruth,
607 trackingParticlesSignal,
608 trackingParticlesElectron,
609 trackingParticlesConversion
611 fastSim.toReplaceWith(tracksPreValidation, tracksPreValidation.copyAndExclude([
612 trackingParticlesElectron,
613 trackingParticlesConversion,
616 tracksValidation = cms.Sequence(
618 trackValidatorTPPtLess09 +
619 trackValidatorFromPV +
620 trackValidatorFromPVAllTP +
621 trackValidatorAllTPEffic +
622 trackValidatorBuilding +
623 trackValidatorBuildingPreSplitting +
624 trackValidatorConversion +
625 trackValidatorGsfTracks,
629 from Configuration.Eras.Modifier_phase2_tracker_cff
import phase2_tracker
631 tracksValidationPhase2 = tracksValidation.copy()
632 tracksValidationPhase2+=trackValidatorTPEtaGreater2p7
633 phase2_tracker.toReplaceWith(tracksValidation, tracksValidationPhase2)
636 fastSim.toReplaceWith(tracksValidation, tracksValidation.copyAndExclude([
637 trackValidatorBuildingPreSplitting,
638 trackValidatorConversion,
639 trackValidatorGsfTracks,
646 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"ByAlgoMask",
"algorithmMaskContains"],
647 names =
"_selectorsByAlgoMask", task =
"_tracksValidationSelectorsByAlgoMaskStandalone")
652 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"Pt09",
"generalTracksPt09"],
653 names =
"_selectorsPt09Standalone", task =
"_tracksValidationSelectorsPt09Standalone")
658 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"FromPV",
"generalTracksFromPV"],
659 names =
"_selectorsFromPVStandalone", task =
"_tracksValidationSelectorsFromPVStandalone")
664 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"FromPVPt09",
"generalTracksFromPVPt09"],
665 names =
"_selectorsFromPVPt09Standalone", task =
"_tracksValidationSelectorsFromPVPt09Standalone")
668 trackValidatorStandalone = trackValidator.clone(
671 trackValidatorTPPtLess09Standalone = trackValidatorTPPtLess09.clone(
674 for _eraName, _postfix, _era
in _relevantEras:
675 _setForEra(trackValidatorStandalone, _eraName, _era, label = trackValidator.label + locals()[
"_selectorsByAlgoMask"+_postfix] + locals()[
"_selectorsPt09Standalone"+_postfix])
676 _setForEra(trackValidatorTPPtLess09Standalone, _eraName, _era, label = trackValidatorTPPtLess09.label + locals()[
"_selectorsByAlgoMask"+_postfix] + locals()[
"_selectorsPt09Standalone"+_postfix])
678 trackValidatorFromPVStandalone = trackValidatorFromPV.clone(
681 for _eraName, _postfix, _era
in _relevantEras:
682 _setForEra(trackValidatorFromPVStandalone, _eraName, _era, label = trackValidatorFromPV.label + locals()[
"_selectorsFromPVStandalone"+_postfix] + locals()[
"_selectorsFromPVPt09Standalone"+_postfix])
685 trackValidatorFromPVAllTPStandalone = trackValidatorFromPVAllTP.clone(
686 label = trackValidatorFromPVStandalone.label.value(),
690 trackValidatorAllTPEfficStandalone = trackValidatorAllTPEffic.clone(
691 label = [ x
for x
in trackValidator.label.value()
if x
not in [
"cutsRecoTracksBtvLike",
"cutsRecoTracksAK4PFJets"]
and "Pt09" not in x],
695 trackValidatorConversionStandalone = trackValidatorConversion.clone(
696 label = [x
for x
in trackValidatorConversion.label
if x !=
"convStepTracks"],
700 trackValidatorBHadronStandalone = trackValidatorBHadron.clone(
701 label = [x
for x
in trackValidatorStandalone.label
if "Pt09" not in x],
705 trackValidatorGsfTracksStandalone = trackValidatorGsfTracks.clone(
710 tracksPreValidationStandalone = tracksPreValidation.copy()
711 tracksPreValidationStandalone.add(trackingParticlesBHadron)
712 tracksPreValidationStandalone.replace(highPtJetsForTrk,highPtJets)
713 fastSim.toReplaceWith(tracksPreValidationStandalone, tracksPreValidation)
715 tracksValidationSelectorsStandalone = cms.Task(
716 tracksValidationSelectorsByAlgoMaskStandalone,
717 tracksValidationSelectorsPt09Standalone,
718 tracksValidationSelectorsFromPVStandalone,
719 tracksValidationSelectorsFromPVPt09Standalone
724 _trackValidatorsBase = cms.Sequence(
725 trackValidatorStandalone +
726 trackValidatorTPPtLess09Standalone +
727 trackValidatorFromPVStandalone +
728 trackValidatorFromPVAllTPStandalone +
729 trackValidatorAllTPEfficStandalone +
730 trackValidatorConversionStandalone +
731 trackValidatorGsfTracksStandalone +
732 trackValidatorBHadronStandalone
734 trackValidatorsStandalone = _trackValidatorsBase.copy()
735 fastSim.toModify(trackValidatorsStandalone,
lambda x: x.remove(trackValidatorConversionStandalone) )
737 tracksValidationStandalone = cms.Sequence(
738 ak4PFL1FastL2L3CorrectorChain +
739 trackValidatorsStandalone,
740 tracksPreValidationStandalone,
741 tracksValidationSelectorsStandalone
747 tracksValidationSelectorsTrackingOnly = tracksValidationSelectors.copyAndExclude([ak4JetTracksAssociatorExplicitAll,cutsRecoTracksAK4PFJets])
748 _taskForEachEra(_addSeedToTrackProducers, args=[
"_seedProducers"], names=
"_seedSelectors", task=
"_tracksValidationSeedSelectorsTrackingOnly", includeFastSim=
True, modDict=globals())
749 _taskForEachEra(_addSeedToTrackProducers, args=[
"_seedProducersPreSplitting"], names=
"_seedSelectorsPreSplitting", task=
"_tracksValidationSeedSelectorsPreSplittingTrackingOnly", modDict=globals())
750 tracksValidationSeedSelectorsTrackingOnly.add(tracksValidationSeedSelectorsPreSplittingTrackingOnly)
753 trackValidatorTrackingOnly = trackValidatorStandalone.clone(
754 label = [ x
for x
in trackValidatorStandalone.label
if x !=
"cutsRecoTracksAK4PFJets"],
755 cores =
"highPtJetsForTrk" 758 trackValidatorSeedingTrackingOnly = _trackValidatorSeedingBuilding.clone(
759 dirName =
"Tracking/TrackSeeding/",
760 label = _seedSelectors,
763 trackValidatorSeedingPreSplittingTrackingOnly = trackValidatorSeedingTrackingOnly.clone(
764 associators = [
"quickTrackAssociatorByHitsPreSplitting"],
765 label = _seedSelectorsPreSplitting,
766 doSummaryPlots =
False,
769 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
770 _setForEra(trackValidatorSeedingTrackingOnly, _eraName, _era, label = locals()[
"_seedSelectors"+_postfix])
771 for _eraName, _postfix, _era
in _relevantEras:
772 _setForEra(trackValidatorSeedingPreSplittingTrackingOnly, _eraName, _era, label = locals()[
"_seedSelectorsPreSplitting"+_postfix])
775 trackValidatorConversionTrackingOnly = trackValidatorConversion.clone(label = [x
for x
in trackValidatorConversion.label
if x
not in [
"ckfInOutTracksFromConversions",
"ckfOutInTracksFromConversions"]])
777 trackValidatorBHadronTrackingOnly = trackValidatorBHadron.clone(label = [x
for x
in trackValidatorTrackingOnly.label
if "Pt09" not in x])
779 trackValidatorTPPtLess09TrackingOnly = trackValidatorTPPtLess09Standalone.clone(cores =
"highPtJetsForTrk")
780 trackValidatorFromPVTrackingOnly = trackValidatorFromPVStandalone.clone(cores =
"highPtJetsForTrk")
781 trackValidatorFromPVAllTPTrackingOnly = trackValidatorFromPVAllTPStandalone.clone(cores =
"highPtJetsForTrk")
782 trackValidatorAllTPEfficTrackingOnly = trackValidatorAllTPEfficStandalone.clone(cores =
"highPtJetsForTrk")
784 tracksPreValidationTrackingOnly = tracksPreValidationStandalone.copy()
785 tracksPreValidationTrackingOnly.replace(tracksValidationSelectors, tracksValidationSelectorsTrackingOnly)
786 tracksPreValidationTrackingOnly.replace(highPtJets,highPtJetsForTrk)
788 trackValidatorsTrackingOnly = _trackValidatorsBase.copy()
789 trackValidatorsTrackingOnly.replace(trackValidatorStandalone, trackValidatorTrackingOnly)
790 trackValidatorsTrackingOnly.replace(trackValidatorTPPtLess09Standalone,trackValidatorTPPtLess09TrackingOnly)
791 trackValidatorsTrackingOnly.replace(trackValidatorFromPVStandalone,trackValidatorFromPVTrackingOnly)
792 trackValidatorsTrackingOnly.replace(trackValidatorFromPVAllTPStandalone,trackValidatorFromPVAllTPTrackingOnly)
793 trackValidatorsTrackingOnly.replace(trackValidatorAllTPEfficStandalone,trackValidatorAllTPEfficTrackingOnly)
794 trackValidatorsTrackingOnly += trackValidatorSeedingTrackingOnly
795 trackValidatorsTrackingOnly += trackValidatorSeedingPreSplittingTrackingOnly
796 trackValidatorsTrackingOnly += trackValidatorBuilding
797 trackValidatorsTrackingOnly += trackValidatorBuildingPreSplitting
798 trackValidatorsTrackingOnly.replace(trackValidatorConversionStandalone, trackValidatorConversionTrackingOnly)
799 trackValidatorsTrackingOnly.remove(trackValidatorGsfTracksStandalone)
800 trackValidatorsTrackingOnly.replace(trackValidatorBHadronStandalone, trackValidatorBHadronTrackingOnly)
801 fastSim.toReplaceWith(trackValidatorsTrackingOnly, trackValidatorsTrackingOnly.copyAndExclude([
802 trackValidatorBuildingPreSplitting,
803 trackValidatorSeedingPreSplittingTrackingOnly,
804 trackValidatorConversionTrackingOnly,
805 trackValidatorBHadronTrackingOnly
809 tracksValidationTrackingOnly = cms.Sequence(
810 trackValidatorsTrackingOnly,
811 tracksPreValidationTrackingOnly,
812 tracksValidationSelectorsStandalone,
813 tracksValidationSeedSelectorsTrackingOnly
818 trackingParticlePixelTrackAsssociation = trackingParticleRecoTrackAsssociation.clone(
819 label_tr =
"pixelTracks",
820 associator =
"quickTrackAssociatorByHitsPreSplitting",
822 PixelVertexAssociatorByPositionAndTracks = VertexAssociatorByPositionAndTracks.clone(
823 trackAssociation =
"trackingParticlePixelTrackAsssociation" 826 trackValidatorPixelTrackingOnly = trackValidator.clone(
827 dirName =
"Tracking/PixelTrack/",
828 label = [
"pixelTracks"],
829 doResolutionPlotsForLabels = [],
830 trackCollectionForDrCalculation =
"pixelTracks",
831 associators = [
"trackingParticlePixelTrackAsssociation"],
832 label_vertex =
"pixelVertices",
833 vertexAssociator =
"PixelVertexAssociatorByPositionAndTracks",
835 cores = cms.InputTag(
""),
838 tracksValidationTruthPixelTrackingOnly = tracksValidationTruth.copy()
839 tracksValidationTruthPixelTrackingOnly.replace(trackingParticleRecoTrackAsssociation, trackingParticlePixelTrackAsssociation)
840 tracksValidationTruthPixelTrackingOnly.replace(VertexAssociatorByPositionAndTracks, PixelVertexAssociatorByPositionAndTracks)
841 tracksValidationPixelTrackingOnly = cms.Sequence(
842 trackValidatorPixelTrackingOnly,
843 tracksValidationTruthPixelTrackingOnly
848 trackValidatorLite = trackValidator.clone(
849 label = [
"generalTracks",
"cutsRecoTracksHp"]
851 tracksValidationLite = cms.Sequence(
854 tracksValidationTruth
858 from Configuration.Eras.Modifier_phase2_timing_layer_cff
import phase2_timing_layer
859 phase2_timing_layer.toModify( generalTracksFromPV,
860 timesTag = cms.InputTag(
'tofPID:t0'),
861 timeResosTag = cms.InputTag(
'tofPID:sigmat0'),
862 nSigmaDtVertex = cms.double(3) )
863 phase2_timing_layer.toModify( trackValidatorStandalone,
864 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
865 phase2_timing_layer.toModify( trackValidatorFromPVStandalone,
866 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
867 phase2_timing_layer.toModify( trackValidatorFromPVAllTPStandalone,
868 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
869 phase2_timing_layer.toModify( trackValidatorConversionStandalone,
870 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
871 phase2_timing_layer.toModify( trackValidatorGsfTracks,
872 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
def _getMVASelectors(postfix)
def _setForEra(module, eraName, era, kwargs)
def _translateArgs(args, postfix, modDict)
def _uniqueFirstLayers(layerList)
_addSelectorsByOriginalAlgoMask
Then define stuff for standalone mode (i.e.
def _getSeedingLayers(seedProducers, config)
TEveGeoShape * clone(const TEveElement *element, TEveElement *parent)
def _algoToSelector(algo)
def _taskForEachEra(function, args, names, task, modDict, plainArgs=[], modifyTask=None, includeFastSim=False)