1 import FWCore.ParameterSet.Config
as cms
7 from Validation.RecoTrack.trajectorySeedTracks_cfi
import trajectorySeedTracks
as _trajectorySeedTracks
11 import cutsRecoTracks_cfi
15 from CommonTools.RecoAlgos.trackingParticleRefSelector_cfi
import trackingParticleRefSelector
as _trackingParticleRefSelector
16 from CommonTools.RecoAlgos.trackingParticleConversionRefSelector_cfi
import trackingParticleConversionRefSelector
as _trackingParticleConversionRefSelector
17 from SimTracker.TrackHistory.trackingParticleBHadronRefSelector_cfi
import trackingParticleBHadronRefSelector
as _trackingParticleBHadronRefSelector
19 from CommonTools.RecoAlgos.recoChargedRefCandidateToTrackRefProducer_cfi
import recoChargedRefCandidateToTrackRefProducer
as _recoChargedRefCandidateToTrackRefProducer
21 import RecoTracker.IterativeTracking.iterativeTkConfig
as _cfg
22 import RecoTracker.IterativeTracking.iterativeTkUtils
as _utils
23 from Configuration.Eras.Modifier_fastSim_cff
import fastSim
28 for _eraName, _postfix, _era
in _cfg.allEras():
29 _seedProd = [
"initialStepSeedsPreSplitting"]
30 _trackProd = [
"initialStepTracksPreSplitting"]
31 if _eraName
in [
"trackingLowPU",
"trackingPhase2PU140"]:
35 locals()[
"_algos"+_postfix] = [
"generalTracks"] + _cfg.iterationAlgos(_postfix) + [
"duplicateMerge"]
36 locals()[
"_seedProducersPreSplitting"+_postfix] = _seedProd
37 locals()[
"_trackProducersPreSplitting"+_postfix] = _trackProd
38 locals()[
"_seedProducers"+_postfix] = _cfg.seedProducers(_postfix)
39 locals()[
"_trackProducers"+_postfix] = _cfg.trackProducers(_postfix)
41 if _eraName !=
"trackingPhase2PU140":
42 locals()[
"_electronSeedProducers"+_postfix] = [
"tripletElectronSeeds",
"pixelPairElectronSeeds",
"stripPairElectronSeeds"]
44 locals()[
"_electronSeedProducers"+_postfix] = [
"tripletElectronSeeds"]
46 _removeForFastSimSeedProducers =[
"initialStepSeedsPreSplitting",
47 "jetCoreRegionalStepSeeds",
48 "muonSeededSeedsInOut",
49 "muonSeededSeedsOutIn"]
50 _seedProducers_fastSim = [ x
for x
in _seedProducers
if x
not in _removeForFastSimSeedProducers]
52 _removeForFastTrackProducers = [
"initialStepTracksPreSplitting",
53 "jetCoreRegionalStepTracks",
54 "muonSeededTracksInOut",
55 "muonSeededTracksOutIn"]
56 _trackProducers_fastSim = [ x
for x
in _trackProducers
if x
not in _removeForFastTrackProducers]
60 if algo !=
"generalTracks":
61 sel = algo[0].
upper()+algo[1:]
62 return "cutsRecoTracks"+sel
68 if algo ==
"generalTracks":
71 if modName
not in modDict:
72 mod = cutsRecoTracks_cfi.cutsRecoTracks.clone(algorithm=[algo])
73 modDict[modName] = mod
75 mod = modDict[modName]
84 modNameHp = modName+
"Hp" 85 if modNameHp
not in modDict:
86 if algo ==
"generalTracks":
87 mod = cutsRecoTracks_cfi.cutsRecoTracks.clone(quality=[
"highPurity"])
89 mod = modDict[modName].
clone(quality=[
"highPurity"])
90 modDict[modNameHp] = mod
92 mod = modDict[modNameHp]
93 names.append(modNameHp)
99 for modName
in modules:
100 modNameNew = modName.replace(
"cutsRecoTracks",
"cutsRecoTracks"+midfix)
101 if modNameNew
not in modDict:
102 mod = modDict[modName].
clone(src=src)
103 modDict[modNameNew] = mod
105 mod = modDict[modNameNew]
106 names.append(modNameNew)
112 for modName
in modules:
113 if modName[-2:] ==
"Hp":
114 modNameNew = modName[:-2] + midfix +
"Hp" 116 modNameNew = modName + midfix
117 if modNameNew
not in modDict:
118 mod = modDict[modName].
clone()
119 setattr(mod, algoParam, mod.algorithm.value())
121 modDict[modNameNew] = mod
123 mod = modDict[modNameNew]
124 names.append(modNameNew)
130 for seed
in seedProducers:
131 modName =
"seedTracks"+seed
132 if modName
not in modDict:
133 mod = _trajectorySeedTracks.clone(src=seed)
134 modDict[modName] = mod
136 mod = modDict[modName]
137 names.append(modName)
141 _relevantEras = _cfg.allEras()
142 _relevantErasAndFastSim = _relevantEras + [(
"fastSim",
"_fastSim", fastSim)]
146 if isinstance(arg, list):
149 ret.append(modDict[arg+postfix])
151 def _taskForEachEra(function, args, names, task, modDict, plainArgs=[], modifyTask=None, includeFastSim=False):
153 raise Exception(
"Task name is expected to begin with _")
155 _eras = _relevantErasAndFastSim
if includeFastSim
else _relevantEras
156 for eraName, postfix, _era
in _eras:
158 _args.extend(plainArgs)
159 ret =
function(*_args, modDict=modDict)
161 raise Exception(
"_taskForEachEra is expected to return 2 values, but function returned %d" % len(ret))
162 modDict[names+postfix] = ret[0]
163 modDict[task+postfix] = ret[1]
166 defaultTaskName = task+_eras[0][0]
167 defaultTask = modDict[defaultTaskName]
168 modDict[defaultTaskName[1:]] = defaultTask
171 if modifyTask
is not None:
172 for eraName, postfix, _era
in _eras:
176 for _eraName, _postfix, _era
in _eras[1:]:
177 _era.toReplaceWith(defaultTask, modDict[task+_postfix])
180 for key, value
in six.iteritems(kwargs):
181 setattr(module, key, value)
183 era.toModify(module, **kwargs)
187 def _findSeedingLayers(name):
188 prod = getattr(config, name)
189 if hasattr(prod,
"triplets"):
190 if hasattr(prod,
"layerList"):
191 return prod.layerList.refToPSet_.value()
192 return _findSeedingLayers(prod.triplets.getModuleLabel())
193 elif hasattr(prod,
"doublets"):
194 return _findSeedingLayers(prod.doublets.getModuleLabel())
195 label = prod.trackingRegionsSeedingLayers.getModuleLabel()
198 return prod.seedingLayers.getModuleLabel()
200 seedingLayersMerged = []
201 for seedName
in seedProducers:
202 seedProd = getattr(config, seedName)
203 seedingLayersName =
None 205 if hasattr(seedProd,
"OrderedHitsFactoryPSet"):
206 seedingLayersName = seedProd.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel()
207 elif hasattr(seedProd,
"seedingHitSets"):
208 seedingLayersName = _findSeedingLayers(seedProd.seedingHitSets.getModuleLabel())
209 elif hasattr(seedProd,
"layerList"):
210 seedingLayers = seedProd.layerList.value()
214 if seedingLayersName
is not None:
215 seedingLayers = getattr(config, seedingLayersName).layerList.value()
216 for layerSet
in seedingLayers:
217 if layerSet
not in seedingLayersMerged:
218 seedingLayersMerged.append(layerSet)
220 return seedingLayersMerged
223 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
226 if "_electronSeedProducers"+_postfix
in locals():
227 for _layer
in _getSeedingLayers(locals()[
"_electronSeedProducers"+_postfix], _ElectronSeeds_cff):
228 if _layer
not in _stdLayers:
229 _eleLayers.append(_layer)
231 locals()[
"_seedingLayerSets"+_postfix] = _stdLayers
232 locals()[
"_seedingLayerSetsForElectrons"+_postfix] = _eleLayers
237 mvaSel = _utils.getMVASelectors(postfix)
239 pset = cms.untracked.PSet()
240 for iteration, (trackProducer, classifiers)
in six.iteritems(mvaSel):
241 setattr(pset, trackProducer, cms.untracked.vstring(classifiers))
243 for _eraName, _postfix, _era
in _relevantEras:
247 _taskForEachEra(_addSelectorsByAlgo, args=[
"_algos"], names=
"_selectorsByAlgo", task=
"_tracksValidationSelectorsByAlgo", modDict=globals())
250 _taskForEachEra(_addSelectorsByHp, args=[
"_algos"], names=
"_selectorsByAlgoHp", task=
"_tracksValidationSelectorsByAlgoHp", modDict=globals())
253 for _eraName, _postfix, _era
in _relevantEras:
254 locals()[
"_selectorsByAlgoAndHp"+_postfix] = locals()[
"_selectorsByAlgo"+_postfix] + locals()[
"_selectorsByAlgoHp"+_postfix]
256 locals()[
"_selectorsByAlgoAndHpNoGenTk"+_postfix] = [n
for n
in locals()[
"_selectorsByAlgoAndHp"+_postfix]
if n
not in [
"generalTracks",
"cutsRecoTracksHp"]]
258 locals()[
"_selectorsByAlgoAndHpNoGenTkDupMerge"+_postfix] = [n
for n
in locals()[
"_selectorsByAlgoAndHpNoGenTk"+_postfix]
if n
not in [
"cutsRecoTracksDuplicateMerge",
"cutsRecoTracksDuplicateMergeHp"]]
260 args = [
"_selectorsByAlgoAndHpNoGenTkDupMerge"], plainArgs = [
"ByOriginalAlgo",
"originalAlgorithm"],
261 names =
"_selectorsByOriginalAlgo", task =
"_tracksValidationSelectorsByOriginalAlgo")
264 for _eraName, _postfix, _era
in _relevantEras:
265 selectors = locals()[
"_selectorsByAlgoHp"+_postfix]
266 locals()[
"_generalTracksHp"+_postfix] = selectors[0]
267 locals()[
"_selectorsByAlgoHp"+_postfix] = selectors[1:]
270 import PhysicsTools.RecoAlgos.btvTracks_cfi
as btvTracks_cfi
271 cutsRecoTracksBtvLike = btvTracks_cfi.btvTrackRefs.clone()
275 ak4JetTracksAssociatorExplicitAll = ak4JTA_cff.ak4JetTracksAssociatorExplicit.clone(
279 import CommonTools.RecoAlgos.jetTracksAssociationToTrackRefs_cfi
as jetTracksAssociationToTrackRefs_cfi
280 cutsRecoTracksAK4PFJets = jetTracksAssociationToTrackRefs_cfi.jetTracksAssociationToTrackRefs.clone(
281 association =
"ak4JetTracksAssociatorExplicitAll",
288 trackingParticlesSignal = _trackingParticleRefSelector.clone(
299 generalTracksPt09 = cutsRecoTracks_cfi.cutsRecoTracks.clone(ptMin=0.9)
302 args=[[
"_generalTracksHp"]],
303 plainArgs=[
"Pt09",
"generalTracksPt09"],
304 names=
"_selectorsPt09", task=
"_tracksValidationSelectorsPt09",
305 modifyTask=
lambda task:task.add(generalTracksPt09))
309 generalTracksFromPV = _trackWithVertexRefSelector.clone(
310 src =
"generalTracks",
315 vertexTag =
"offlinePrimaryVertices",
323 args=[[
"_generalTracksHp"]],
324 plainArgs=[
"FromPV",
"generalTracksFromPV"],
325 names=
"_selectorsFromPV", task=
"_tracksValidationSelectorsFromPV",
326 modifyTask=
lambda task: task.add(generalTracksFromPV))
329 generalTracksFromPVPt09 = generalTracksPt09.clone(src=
"generalTracksFromPV")
332 args=[[
"_generalTracksHp"]],
333 plainArgs=[
"FromPVPt09",
"generalTracksFromPVPt09"],
334 names=
"_selectorsFromPVPt09", task=
"_tracksValidationSelectorsFromPVPt09",
335 modifyTask=
lambda task: task.add(generalTracksFromPVPt09))
338 trackingParticlesConversion = _trackingParticleConversionRefSelector.clone()
341 trackingParticlesElectron = _trackingParticleRefSelector.clone(
352 trackingParticlesBHadron = _trackingParticleBHadronRefSelector.clone()
355 trackValidator = Validation.RecoTrack.MultiTrackValidator_cfi.multiTrackValidator.clone(
356 useLogPt = cms.untracked.bool(
True),
358 doPVAssociationPlots =
True 363 fastSim.toModify(trackValidator,
366 for _eraName, _postfix, _era
in _relevantEras:
368 label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix]] +
369 locals()[
"_selectorsByAlgo"+_postfix] + locals()[
"_selectorsByAlgoHp"+_postfix] +
370 locals()[
"_selectorsByOriginalAlgo"+_postfix] +
371 [
"generalTracksPt09"] + locals()[
"_selectorsPt09"+_postfix] +
373 "cutsRecoTracksBtvLike",
374 "cutsRecoTracksAK4PFJets" 376 doResolutionPlotsForLabels = [
378 locals()[
"_generalTracksHp"+_postfix],
380 "cutsRecoTracksBtvLike",
383 _setForEra(trackValidator.histoProducerAlgoBlock, _eraName, _era, seedingLayerSets=locals()[
"_seedingLayerSets"+_postfix])
386 trackValidatorTPPtLess09 = trackValidator.clone(
387 dirName =
"Tracking/TrackTPPtLess09/",
388 label = [x
for x
in trackValidator.label.value()
if (
"Pt09" not in x)
and (
"BtvLike" not in x)
and (
"AK4PFJets" not in x)],
390 histoProducerAlgoBlock =
dict(
391 TpSelectorForEfficiencyVsEta =
dict(ptMin=0.05),
392 TpSelectorForEfficiencyVsPhi =
dict(ptMin=0.05),
393 TpSelectorForEfficiencyVsVTXR =
dict(ptMin=0.05),
394 TpSelectorForEfficiencyVsVTXZ =
dict(ptMin=0.05),
397 doRecoTrackPlots =
False,
398 doResolutionPlotsForLabels = [
"disabled"],
403 trackValidatorFromPV = trackValidator.clone(
404 dirName =
"Tracking/TrackFromPV/",
405 label_tp_effic =
"trackingParticlesSignal",
406 label_tp_fake =
"trackingParticlesSignal",
407 label_tp_effic_refvector =
True,
408 label_tp_fake_refvector =
True,
409 trackCollectionForDrCalculation =
"generalTracksFromPV",
410 doPlotsOnlyForTruePV =
True,
411 doPVAssociationPlots =
False,
412 doResolutionPlotsForLabels = [
"disabled"],
414 for _eraName, _postfix, _era
in _relevantEras:
415 _setForEra(trackValidatorFromPV, _eraName, _era,
416 label = [
"generalTracksFromPV"] + locals()[
"_selectorsFromPV"+_postfix] + [
"generalTracksFromPVPt09"] + locals()[
"_selectorsFromPVPt09"+_postfix],
417 doResolutionPlotsForLabels = []
422 trackValidatorFromPVAllTP = trackValidatorFromPV.clone(
423 dirName =
"Tracking/TrackFromPVAllTP/",
424 label_tp_effic = trackValidator.label_tp_effic.value(),
425 label_tp_fake = trackValidator.label_tp_fake.value(),
426 label_tp_effic_refvector =
False,
427 label_tp_fake_refvector =
False,
429 doSimTrackPlots =
False,
430 doResolutionPlotsForLabels = [
"disabled"],
434 trackValidatorAllTPEffic = trackValidator.clone(
435 dirName =
"Tracking/TrackAllTPEffic/",
436 label = [x
for x
in trackValidator.label.value()
if "Pt09" not in x],
438 doRecoTrackPlots =
True,
439 doPVAssociationPlots =
False,
440 doResolutionPlotsForLabels = [
"disabled"],
442 trackValidatorAllTPEffic.histoProducerAlgoBlock.generalTpSelector.signalOnly =
False 443 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsEta.signalOnly =
False 444 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsPhi.signalOnly =
False 445 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsPt.signalOnly =
False 446 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXR.signalOnly =
False 447 trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXZ.signalOnly =
False 448 for _eraName, _postfix, _era
in _relevantEras:
449 _setForEra(trackValidatorAllTPEffic, _eraName, _era, label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix]])
452 tpClusterProducerPreSplitting = tpClusterProducer.clone(pixelClusterSrc =
"siPixelClustersPreSplitting")
453 quickTrackAssociatorByHitsPreSplitting = quickTrackAssociatorByHits.clone(cluster2TPSrc =
"tpClusterProducerPreSplitting")
454 _trackValidatorSeedingBuilding = trackValidator.clone(
455 associators = [
"quickTrackAssociatorByHits"],
456 UseAssociators =
True,
458 doPVAssociationPlots =
False,
460 doResolutionPlotsForLabels = [
"disabled"],
462 trackValidatorBuilding = _trackValidatorSeedingBuilding.clone(
463 dirName =
"Tracking/TrackBuilding/",
466 trackValidatorBuildingPreSplitting = trackValidatorBuilding.clone(
467 associators = [
"quickTrackAssociatorByHitsPreSplitting"],
469 doSummaryPlots =
False,
471 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
472 _setForEra(trackValidatorBuilding, _eraName, _era, label = locals()[
"_trackProducers"+_postfix])
473 fastSim.toModify(trackValidatorBuilding, doMVAPlots=
False)
474 for _eraName, _postfix, _era
in _relevantEras:
475 _setForEra(trackValidatorBuilding, _eraName, _era, mvaLabels = locals()[
"_mvaSelectors"+_postfix])
476 _setForEra(trackValidatorBuildingPreSplitting, _eraName, _era, label = locals()[
"_trackProducersPreSplitting"+_postfix])
480 trackValidatorConversion = trackValidator.clone(
481 dirName =
"Tracking/TrackConversion/",
484 "conversionStepTracks",
485 "ckfInOutTracksFromConversions",
486 "ckfOutInTracksFromConversions",
488 label_tp_effic =
"trackingParticlesConversion",
489 label_tp_effic_refvector =
True,
490 associators = [
"quickTrackAssociatorByHits"],
491 UseAssociators =
True,
494 doPVAssociationPlots =
False,
495 calculateDrSingleCollection =
False,
499 firstLayers = [layerSet.split(
"+")[0]
for layerSet
in layerList]
501 for l
in firstLayers:
506 if l.startswith(
"TEC"):
512 trackValidatorConversion.histoProducerAlgoBlock.seedingLayerSets =
_uniqueFirstLayers(_convLayerPairs.layerList.value())
514 for n
in [
"Eta",
"Phi",
"Pt",
"VTXR",
"VTXZ"]:
515 pset = getattr(trackValidatorConversion.histoProducerAlgoBlock,
"TpSelectorForEfficiencyVs"+n)
516 pset.lip = trackValidatorConversion.lipTP.value()
517 pset.tip = trackValidatorConversion.tipTP.value()
520 trackValidatorGsfTracks = trackValidatorConversion.clone(
521 dirName =
"Tracking/TrackGsf/",
522 label = [
"electronGsfTracks"],
523 label_tp_effic =
"trackingParticlesElectron",
526 for _eraName, _postfix, _era
in _relevantEras:
527 _setForEra(trackValidatorGsfTracks.histoProducerAlgoBlock, _eraName, _era, seedingLayerSets=trackValidator.histoProducerAlgoBlock.seedingLayerSets.value()+locals()[
"_seedingLayerSetsForElectrons"+_postfix])
532 trackValidatorBHadron = trackValidator.clone(
533 dirName =
"Tracking/TrackBHadron/",
534 label_tp_effic =
"trackingParticlesBHadron",
535 label_tp_effic_refvector =
True,
537 doRecoTrackPlots =
False,
540 for _eraName, _postfix, _era
in _relevantEras:
541 _setForEra(trackValidatorBHadron, _eraName, _era,
542 label = [
"generalTracks", locals()[
"_generalTracksHp"+_postfix],
"cutsRecoTracksBtvLike"]
547 tracksValidationSelectors = cms.Task(
548 tracksValidationSelectorsByAlgo,
549 tracksValidationSelectorsByAlgoHp,
550 tracksValidationSelectorsByOriginalAlgo,
551 cutsRecoTracksBtvLike,
552 ak4JetTracksAssociatorExplicitAll,
553 cutsRecoTracksAK4PFJets
555 tracksValidationTruth = cms.Task(
557 tpClusterProducerPreSplitting,
558 quickTrackAssociatorByHits,
559 quickTrackAssociatorByHitsPreSplitting,
560 trackingParticleRecoTrackAsssociation,
561 VertexAssociatorByPositionAndTracks,
562 trackingParticleNumberOfLayersProducer
564 fastSim.toModify(tracksValidationTruth,
lambda x: x.remove(tpClusterProducer))
566 tracksPreValidation = cms.Task(
567 tracksValidationSelectors,
568 tracksValidationSelectorsPt09,
569 tracksValidationSelectorsFromPV,
570 tracksValidationSelectorsFromPVPt09,
571 tracksValidationTruth,
572 trackingParticlesSignal,
573 trackingParticlesElectron,
574 trackingParticlesConversion
576 fastSim.toReplaceWith(tracksPreValidation, tracksPreValidation.copyAndExclude([
577 trackingParticlesElectron,
578 trackingParticlesConversion,
581 tracksValidation = cms.Sequence(
583 trackValidatorTPPtLess09 +
584 trackValidatorFromPV +
585 trackValidatorFromPVAllTP +
586 trackValidatorAllTPEffic +
587 trackValidatorBuilding +
588 trackValidatorBuildingPreSplitting +
589 trackValidatorConversion +
590 trackValidatorGsfTracks,
593 fastSim.toReplaceWith(tracksValidation, tracksValidation.copyAndExclude([
594 trackValidatorBuildingPreSplitting,
595 trackValidatorConversion,
596 trackValidatorGsfTracks,
603 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"ByAlgoMask",
"algorithmMaskContains"],
604 names =
"_selectorsByAlgoMask", task =
"_tracksValidationSelectorsByAlgoMaskStandalone")
609 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"Pt09",
"generalTracksPt09"],
610 names =
"_selectorsPt09Standalone", task =
"_tracksValidationSelectorsPt09Standalone")
615 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"FromPV",
"generalTracksFromPV"],
616 names =
"_selectorsFromPVStandalone", task =
"_tracksValidationSelectorsFromPVStandalone")
621 args = [
"_selectorsByAlgoAndHpNoGenTk"], plainArgs = [
"FromPVPt09",
"generalTracksFromPVPt09"],
622 names =
"_selectorsFromPVPt09Standalone", task =
"_tracksValidationSelectorsFromPVPt09Standalone")
625 trackValidatorStandalone = trackValidator.clone()
626 trackValidatorTPPtLess09Standalone = trackValidatorTPPtLess09.clone()
627 for _eraName, _postfix, _era
in _relevantEras:
628 _setForEra(trackValidatorStandalone, _eraName, _era, label = trackValidator.label + locals()[
"_selectorsByAlgoMask"+_postfix] + locals()[
"_selectorsPt09Standalone"+_postfix])
629 _setForEra(trackValidatorTPPtLess09Standalone, _eraName, _era, label = trackValidatorTPPtLess09.label + locals()[
"_selectorsByAlgoMask"+_postfix] + locals()[
"_selectorsPt09Standalone"+_postfix])
631 trackValidatorFromPVStandalone = trackValidatorFromPV.clone()
632 for _eraName, _postfix, _era
in _relevantEras:
633 _setForEra(trackValidatorFromPVStandalone, _eraName, _era, label = trackValidatorFromPV.label + locals()[
"_selectorsFromPVStandalone"+_postfix] + locals()[
"_selectorsFromPVPt09Standalone"+_postfix])
636 trackValidatorFromPVAllTPStandalone = trackValidatorFromPVAllTP.clone(
637 label = trackValidatorFromPVStandalone.label.value()
639 trackValidatorAllTPEfficStandalone = trackValidatorAllTPEffic.clone(
640 label = [ x
for x
in trackValidator.label.value()
if x
not in [
"cutsRecoTracksBtvLike",
"cutsRecoTracksAK4PFJets"]
and "Pt09" not in x]
643 trackValidatorConversionStandalone = trackValidatorConversion.clone( label = [x
for x
in trackValidatorConversion.label
if x !=
"convStepTracks"])
645 trackValidatorBHadronStandalone = trackValidatorBHadron.clone(label = [x
for x
in trackValidatorStandalone.label
if "Pt09" not in x])
648 tracksPreValidationStandalone = tracksPreValidation.copy()
649 tracksPreValidationStandalone.add(trackingParticlesBHadron)
650 fastSim.toReplaceWith(tracksPreValidationStandalone, tracksPreValidation)
652 tracksValidationSelectorsStandalone = cms.Task(
653 tracksValidationSelectorsByAlgoMaskStandalone,
654 tracksValidationSelectorsPt09Standalone,
655 tracksValidationSelectorsFromPVStandalone,
656 tracksValidationSelectorsFromPVPt09Standalone
661 _trackValidatorsBase = cms.Sequence(
662 trackValidatorStandalone +
663 trackValidatorTPPtLess09Standalone +
664 trackValidatorFromPVStandalone +
665 trackValidatorFromPVAllTPStandalone +
666 trackValidatorAllTPEfficStandalone +
667 trackValidatorConversionStandalone +
668 trackValidatorGsfTracks +
669 trackValidatorBHadronStandalone
671 trackValidatorsStandalone = _trackValidatorsBase.copy()
672 fastSim.toModify(trackValidatorsStandalone,
lambda x: x.remove(trackValidatorConversionStandalone) )
674 tracksValidationStandalone = cms.Sequence(
675 ak4PFL1FastL2L3CorrectorChain +
676 trackValidatorsStandalone,
677 tracksPreValidationStandalone,
678 tracksValidationSelectorsStandalone
684 tracksValidationSelectorsTrackingOnly = tracksValidationSelectors.copyAndExclude([ak4JetTracksAssociatorExplicitAll,cutsRecoTracksAK4PFJets])
685 _taskForEachEra(_addSeedToTrackProducers, args=[
"_seedProducers"], names=
"_seedSelectors", task=
"_tracksValidationSeedSelectorsTrackingOnly", includeFastSim=
True, modDict=globals())
686 _taskForEachEra(_addSeedToTrackProducers, args=[
"_seedProducersPreSplitting"], names=
"_seedSelectorsPreSplitting", task=
"_tracksValidationSeedSelectorsPreSplittingTrackingOnly", modDict=globals())
687 tracksValidationSeedSelectorsTrackingOnly.add(tracksValidationSeedSelectorsPreSplittingTrackingOnly)
690 trackValidatorTrackingOnly = trackValidatorStandalone.clone(label = [ x
for x
in trackValidatorStandalone.label
if x !=
"cutsRecoTracksAK4PFJets"] )
692 trackValidatorSeedingTrackingOnly = _trackValidatorSeedingBuilding.clone(
693 dirName =
"Tracking/TrackSeeding/",
694 label = _seedSelectors,
697 trackValidatorSeedingPreSplittingTrackingOnly = trackValidatorSeedingTrackingOnly.clone(
698 associators = [
"quickTrackAssociatorByHitsPreSplitting"],
699 label = _seedSelectorsPreSplitting,
700 doSummaryPlots =
False,
703 for _eraName, _postfix, _era
in _relevantErasAndFastSim:
704 _setForEra(trackValidatorSeedingTrackingOnly, _eraName, _era, label = locals()[
"_seedSelectors"+_postfix])
705 for _eraName, _postfix, _era
in _relevantEras:
706 _setForEra(trackValidatorSeedingPreSplittingTrackingOnly, _eraName, _era, label = locals()[
"_seedSelectorsPreSplitting"+_postfix])
709 trackValidatorConversionTrackingOnly = trackValidatorConversion.clone(label = [x
for x
in trackValidatorConversion.label
if x
not in [
"ckfInOutTracksFromConversions",
"ckfOutInTracksFromConversions"]])
711 trackValidatorBHadronTrackingOnly = trackValidatorBHadron.clone(label = [x
for x
in trackValidatorTrackingOnly.label
if "Pt09" not in x])
714 tracksPreValidationTrackingOnly = tracksPreValidationStandalone.copy()
715 tracksPreValidationTrackingOnly.replace(tracksValidationSelectors, tracksValidationSelectorsTrackingOnly)
717 trackValidatorsTrackingOnly = _trackValidatorsBase.copy()
718 trackValidatorsTrackingOnly.replace(trackValidatorStandalone, trackValidatorTrackingOnly)
719 trackValidatorsTrackingOnly += trackValidatorSeedingTrackingOnly
720 trackValidatorsTrackingOnly += trackValidatorSeedingPreSplittingTrackingOnly
721 trackValidatorsTrackingOnly += trackValidatorBuilding
722 trackValidatorsTrackingOnly += trackValidatorBuildingPreSplitting
723 trackValidatorsTrackingOnly.replace(trackValidatorConversionStandalone, trackValidatorConversionTrackingOnly)
724 trackValidatorsTrackingOnly.remove(trackValidatorGsfTracks)
725 trackValidatorsTrackingOnly.replace(trackValidatorBHadronStandalone, trackValidatorBHadronTrackingOnly)
726 fastSim.toReplaceWith(trackValidatorsTrackingOnly, trackValidatorsTrackingOnly.copyAndExclude([
727 trackValidatorBuildingPreSplitting,
728 trackValidatorSeedingPreSplittingTrackingOnly,
729 trackValidatorConversionTrackingOnly,
730 trackValidatorBHadronTrackingOnly
734 tracksValidationTrackingOnly = cms.Sequence(
735 trackValidatorsTrackingOnly,
736 tracksPreValidationTrackingOnly,
737 tracksValidationSelectorsStandalone,
738 tracksValidationSeedSelectorsTrackingOnly
743 trackingParticlePixelTrackAsssociation = trackingParticleRecoTrackAsssociation.clone(
744 label_tr =
"pixelTracks",
745 associator =
"quickTrackAssociatorByHitsPreSplitting",
747 PixelVertexAssociatorByPositionAndTracks = VertexAssociatorByPositionAndTracks.clone(
748 trackAssociation =
"trackingParticlePixelTrackAsssociation" 751 trackValidatorPixelTrackingOnly = trackValidator.clone(
752 dirName =
"Tracking/PixelTrack/",
753 label = [
"pixelTracks"],
754 doResolutionPlotsForLabels = [],
755 trackCollectionForDrCalculation =
"pixelTracks",
756 associators = [
"trackingParticlePixelTrackAsssociation"],
757 label_vertex =
"pixelVertices",
758 vertexAssociator =
"PixelVertexAssociatorByPositionAndTracks",
762 tracksValidationTruthPixelTrackingOnly = tracksValidationTruth.copy()
763 tracksValidationTruthPixelTrackingOnly.replace(trackingParticleRecoTrackAsssociation, trackingParticlePixelTrackAsssociation)
764 tracksValidationTruthPixelTrackingOnly.replace(VertexAssociatorByPositionAndTracks, PixelVertexAssociatorByPositionAndTracks)
765 tracksValidationPixelTrackingOnly = cms.Sequence(
766 trackValidatorPixelTrackingOnly,
767 tracksValidationTruthPixelTrackingOnly
772 trackValidatorLite = trackValidator.clone(
773 label = [
"generalTracks",
"cutsRecoTracksHp"]
775 tracksValidationLite = cms.Sequence(
778 tracksValidationTruth
782 from Configuration.Eras.Modifier_phase2_timing_layer_cff
import phase2_timing_layer
783 phase2_timing_layer.toModify( generalTracksFromPV,
784 vertexTag = cms.InputTag(
'offlinePrimaryVertices4D'),
785 timesTag = cms.InputTag(
'trackTimeValueMapProducer:generalTracksConfigurableFlatResolutionModel'),
786 timeResosTag = cms.InputTag(
'trackTimeValueMapProducer:generalTracksConfigurableFlatResolutionModelResolution'),
787 nSigmaDtVertex = cms.double(3) )
788 phase2_timing_layer.toModify( trackValidatorStandalone,
789 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
790 phase2_timing_layer.toModify( trackValidatorFromPVStandalone,
791 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
792 phase2_timing_layer.toModify( trackValidatorFromPVAllTPStandalone,
793 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
794 phase2_timing_layer.toModify( trackValidatorConversionStandalone,
795 label_vertex = cms.untracked.InputTag(
'offlinePrimaryVertices4D') )
796 phase2_timing_layer.toModify( trackValidatorGsfTracks,
797 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)