From 6ed0fa98a8e63c450cd07d35d015224043612df1 Mon Sep 17 00:00:00 2001 From: Matti Kortelainen Date: Mon, 3 Oct 2016 10:18:01 +0200 Subject: [PATCH] Remove dependece on Eras.py from tracking --- .../python/Validation_cff.py | 3 +- .../IterTrackingModules4seedMonitoring_cfi.py | 5 +- .../python/TrackingSourceConfig_Tier0_cff.py | 9 +- .../python/DetachedQuadStep_cff.py | 5 +- .../python/DetachedTripletStep_cff.py | 5 +- .../python/HighPtTripletStep_cff.py | 5 +- .../python/LowPtQuadStep_cff.py | 5 +- .../python/LowPtTripletStep_cff.py | 5 +- .../python/MixedTripletStep_cff.py | 5 +- .../python/PixelLessStep_cff.py | 5 +- .../python/PixelPairStep_cff.py | 4 +- .../python/TobTecStep_cff.py | 5 +- .../python/iterativeTkConfig.py | 59 ++++++------ .../python/iterativeTk_cff.py | 6 +- .../RecoTrack/python/TrackValidation_cff.py | 90 ++++++++----------- 15 files changed, 99 insertions(+), 117 deletions(-) diff --git a/Configuration/StandardSequences/python/Validation_cff.py b/Configuration/StandardSequences/python/Validation_cff.py index 566b1128dcf04..5fd532c725f89 100644 --- a/Configuration/StandardSequences/python/Validation_cff.py +++ b/Configuration/StandardSequences/python/Validation_cff.py @@ -48,7 +48,8 @@ _validation_fastsim = validation.copy() for _entry in [globaldigisanalyze,globalhitsanalyze,globalrechitsanalyze]: _validation_fastsim.remove(_entry) -eras.fastSim.toReplaceWith(validation,_validation_fastsim) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(validation,_validation_fastsim) validationLiteTracking = cms.Sequence( validation ) validationLiteTracking.replace(globalValidation,globalValidationLiteTracking) diff --git a/DQM/TrackingMonitorSource/python/IterTrackingModules4seedMonitoring_cfi.py b/DQM/TrackingMonitorSource/python/IterTrackingModules4seedMonitoring_cfi.py index cd8d7a772c1d3..af29316efea91 100644 --- a/DQM/TrackingMonitorSource/python/IterTrackingModules4seedMonitoring_cfi.py +++ b/DQM/TrackingMonitorSource/python/IterTrackingModules4seedMonitoring_cfi.py @@ -136,8 +136,7 @@ clusterBin ['jetCoreRegionalStep'] = cms.int32(500) clusterMax ['jetCoreRegionalStep'] = cms.double(100000) -for era in _cfg.allEras(): - pf = _cfg.postfix(era) - locals()["selectedIterTrackingStep"+pf] = _cfg.iterationAlgos(era) +for _eraName, _postfix, _era in _cfg.allEras(): + locals()["selectedIterTrackingStep"+_postfix] = _cfg.iterationAlgos(_postfix) #selectedIterTrackingStep.append('muonSeededStepOutInDisplaced') diff --git a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py index f796ef56e14d7..7ff4a1a81968e 100644 --- a/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py +++ b/DQM/TrackingMonitorSource/python/TrackingSourceConfig_Tier0_cff.py @@ -313,15 +313,14 @@ label = 'TrackerCollisionSelectedTrackMonCommon' + str(tracks) TrackingDQMSourceTier0 += locals()[label] # seeding monitoring -for era in _cfg.allEras(): - postfix = _cfg.postfix(era) +for _eraName, _postfix, _era in _cfg.allEras(): _seq = cms.Sequence() - for step in locals()["selectedIterTrackingStep"+postfix]: + for step in locals()["selectedIterTrackingStep"+_postfix]: _seq += locals()["TrackSeedMon"+step] - if era == "": + if _eraName == "": locals()["TrackSeedMonSequence"] = _seq else: - getattr(eras, era).toReplaceWith(TrackSeedMonSequence, _seq) + _era.toReplaceWith(TrackSeedMonSequence, _seq) TrackingDQMSourceTier0 += TrackSeedMonSequence # MessageLog for module in selectedModules : diff --git a/RecoTracker/IterativeTracking/python/DetachedQuadStep_cff.py b/RecoTracker/IterativeTracking/python/DetachedQuadStep_cff.py index 7e855906e9bee..ad25b7a4bb121 100644 --- a/RecoTracker/IterativeTracking/python/DetachedQuadStep_cff.py +++ b/RecoTracker/IterativeTracking/python/DetachedQuadStep_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg ############################################### @@ -8,8 +7,8 @@ # REMOVE HITS ASSIGNED TO GOOD TRACKS FROM PREVIOUS ITERATIONS detachedQuadStepClusters = _cfg.clusterRemoverForIter("DetachedQuadStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(detachedQuadStepClusters, _cfg.clusterRemoverForIter("DetachedQuadStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(detachedQuadStepClusters, _cfg.clusterRemoverForIter("DetachedQuadStep", _eraName, _postfix)) # SEEDING LAYERS import RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi diff --git a/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py b/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py index 4ce92ca9b0b99..5ae9bc53b278f 100644 --- a/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg @@ -9,8 +8,8 @@ # REMOVE HITS ASSIGNED TO GOOD TRACKS FROM PREVIOUS ITERATIONS detachedTripletStepClusters = _cfg.clusterRemoverForIter("DetachedTripletStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(detachedTripletStepClusters, _cfg.clusterRemoverForIter("DetachedTripletStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(detachedTripletStepClusters, _cfg.clusterRemoverForIter("DetachedTripletStep", _eraName, _postfix)) # SEEDING LAYERS import RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi diff --git a/RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py b/RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py index 1e88d4c7cebfe..8f9e873db9c17 100644 --- a/RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/HighPtTripletStep_cff.py @@ -1,13 +1,12 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg ### high-pT triplets ### # NEW CLUSTERS (remove previously used clusters) highPtTripletStepClusters = _cfg.clusterRemoverForIter("HighPtTripletStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(highPtTripletStepClusters, _cfg.clusterRemoverForIter("HighPtTripletStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(highPtTripletStepClusters, _cfg.clusterRemoverForIter("HighPtTripletStep", _eraName, _postfix)) # SEEDING LAYERS diff --git a/RecoTracker/IterativeTracking/python/LowPtQuadStep_cff.py b/RecoTracker/IterativeTracking/python/LowPtQuadStep_cff.py index cacd59e299ab2..a8c6c769b9572 100644 --- a/RecoTracker/IterativeTracking/python/LowPtQuadStep_cff.py +++ b/RecoTracker/IterativeTracking/python/LowPtQuadStep_cff.py @@ -1,11 +1,10 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg # NEW CLUSTERS (remove previously used clusters) lowPtQuadStepClusters = _cfg.clusterRemoverForIter("LowPtQuadStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(lowPtQuadStepClusters, _cfg.clusterRemoverForIter("LowPtQuadStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(lowPtQuadStepClusters, _cfg.clusterRemoverForIter("LowPtQuadStep", _eraName, _postfix)) # SEEDING LAYERS diff --git a/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py b/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py index 42ea88846e2e0..dd2021b03a477 100644 --- a/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py @@ -1,12 +1,11 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg # NEW CLUSTERS (remove previously used clusters) lowPtTripletStepClusters = _cfg.clusterRemoverForIter("LowPtTripletStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(lowPtTripletStepClusters, _cfg.clusterRemoverForIter("LowPtTripletStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(lowPtTripletStepClusters, _cfg.clusterRemoverForIter("LowPtTripletStep", _eraName, _postfix)) # SEEDING LAYERS import RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi diff --git a/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py b/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py index 8f0324fcfb40b..f27e6e4406787 100644 --- a/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg ############################################################### @@ -17,8 +16,8 @@ mixedTripletStepClusters = _cfg.clusterRemoverForIter("MixedTripletStep") chargeCut2069Clusters.oldClusterRemovalInfo = mixedTripletStepClusters.oldClusterRemovalInfo.value() mixedTripletStepClusters.oldClusterRemovalInfo = "chargeCut2069Clusters" -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(mixedTripletStepClusters, _cfg.clusterRemoverForIter("MixedTripletStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(mixedTripletStepClusters, _cfg.clusterRemoverForIter("MixedTripletStep", _eraName, _postfix)) from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1 trackingPhase1.toModify(chargeCut2069Clusters, oldClusterRemovalInfo = mixedTripletStepClusters.oldClusterRemovalInfo.value()) trackingPhase1.toModify(mixedTripletStepClusters, oldClusterRemovalInfo="chargeCut2069Clusters") diff --git a/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py b/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py index 2a4697b371104..3c50e772fad66 100644 --- a/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py +++ b/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg ########################################################################## @@ -7,8 +6,8 @@ ########################################################################## pixelLessStepClusters = _cfg.clusterRemoverForIter("PixelLessStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(pixelLessStepClusters, _cfg.clusterRemoverForIter("PixelLessStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(pixelLessStepClusters, _cfg.clusterRemoverForIter("PixelLessStep", _eraName, _postfix)) # SEEDING LAYERS from RecoLocalTracker.SiStripClusterizer.SiStripClusterChargeCut_cfi import * diff --git a/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py b/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py index 385cab7904922..6112b0e4ad8a5 100644 --- a/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py +++ b/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py @@ -5,8 +5,8 @@ # NEW CLUSTERS (remove previously used clusters) pixelPairStepClusters = _cfg.clusterRemoverForIter("PixelPairStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(pixelPairStepClusters, _cfg.clusterRemoverForIter("PixelPairStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(pixelPairStepClusters, _cfg.clusterRemoverForIter("PixelPairStep", _eraName, _postfix)) # SEEDING LAYERS diff --git a/RecoTracker/IterativeTracking/python/TobTecStep_cff.py b/RecoTracker/IterativeTracking/python/TobTecStep_cff.py index c4bf75059a1ef..aeb912483fb06 100644 --- a/RecoTracker/IterativeTracking/python/TobTecStep_cff.py +++ b/RecoTracker/IterativeTracking/python/TobTecStep_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg ####################################################################### @@ -7,8 +6,8 @@ ####################################################################### tobTecStepClusters = _cfg.clusterRemoverForIter("TobTecStep") -for era in _cfg.nonDefaultEras(): - getattr(eras, era).toReplaceWith(tobTecStepClusters, _cfg.clusterRemoverForIter("TobTecStep", era)) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(tobTecStepClusters, _cfg.clusterRemoverForIter("TobTecStep", _eraName, _postfix)) # TRIPLET SEEDING LAYERS from RecoLocalTracker.SiStripClusterizer.SiStripClusterChargeCut_cfi import * diff --git a/RecoTracker/IterativeTracking/python/iterativeTkConfig.py b/RecoTracker/IterativeTracking/python/iterativeTkConfig.py index f4bd8b728e905..59b682f496d61 100644 --- a/RecoTracker/IterativeTracking/python/iterativeTkConfig.py +++ b/RecoTracker/IterativeTracking/python/iterativeTkConfig.py @@ -3,10 +3,19 @@ # InitialStepPreSplitting is not counted as an iteration. import FWCore.ParameterSet.Config as cms -_defaultEra = "" -_nonDefaultEras = ["trackingLowPU", "trackingPhase1", "trackingPhase1PU70", "trackingPhase2PU140"] +_defaultEraName = "" +_nonDefaultEraNames = ["trackingLowPU", "trackingPhase1", "trackingPhase1PU70", "trackingPhase2PU140"] + +# name, postfix, era +_defaultEra = (_defaultEraName, "", None) +_nonDefaultEras = [ + (_name, "_"+_name, getattr(__import__('Configuration.Eras.Modifier_'+_name+'_cff',globals(),locals(),[_name],0),_name)) \ + for _name in _nonDefaultEraNames +] + _allEras = [_defaultEra] + _nonDefaultEras + _iterations = [ "InitialStep", "DetachedTripletStep", @@ -103,9 +112,6 @@ minNumberOfLayersWithMeasBeforeFiltering = 0, ) -def postfix(era): - return "_"+era if era != _defaultEra else era - def _modulePrefix(iteration): return iteration[0].lower()+iteration[1:] @@ -131,23 +137,21 @@ def allEras(): def nonDefaultEras(): return _nonDefaultEras -def createEarlySequence(era, modDict): - pf = postfix(era) +def createEarlySequence(eraName, postfix, modDict): seq = cms.Sequence() - for it in globals()["_iterations"+pf]: + for it in globals()["_iterations"+postfix]: seq += modDict[it] return seq -def iterationAlgos(era): - muonVariable = "_iterations_muonSeeded"+postfix(era) - return [_modulePrefix(i) for i in globals()["_iterations"+postfix(era)] + globals().get(muonVariable, _iterations_muonSeeded)] +def iterationAlgos(postfix): + muonVariable = "_iterations_muonSeeded"+postfix + return [_modulePrefix(i) for i in globals()["_iterations"+postfix] + globals().get(muonVariable, _iterations_muonSeeded)] -def _seedOrTrackProducers(era, typ): +def _seedOrTrackProducers(postfix, typ): ret = [] - pf = postfix(era) - iters = globals()["_iterations"+pf] + iters = globals()["_iterations"+postfix] if typ == "Seeds": - multipleSeedProducers = globals()["_multipleSeedProducers"+pf] + multipleSeedProducers = globals()["_multipleSeedProducers"+postfix] else: multipleSeedProducers = None for i in iters: @@ -157,25 +161,24 @@ def _seedOrTrackProducers(era, typ): else: ret.append(seeder) - for i in globals().get("_iterations_muonSeeded"+postfix(era), _iterations_muonSeeded): + for i in globals().get("_iterations_muonSeeded"+postfix, _iterations_muonSeeded): ret.append(_modulePrefix(i).replace("Step", typ)) return ret -def seedProducers(era): - return _seedOrTrackProducers(era, "Seeds") +def seedProducers(postfix): + return _seedOrTrackProducers(postfix, "Seeds") -def trackProducers(era): - return _seedOrTrackProducers(era, "Tracks") +def trackProducers(postfix): + return _seedOrTrackProducers(postfix, "Tracks") -def clusterRemoverForIter(iteration, era="", module=None): +def clusterRemoverForIter(iteration, eraName="", postfix="", module=None): if module is None: module = _trackClusterRemoverBase.clone() - if era == "trackingPhase2PU140": - module = globals().get("_trackClusterRemoverBase"+postfix(era), _trackClusterRemoverBase) + if eraName == "trackingPhase2PU140": + module = globals().get("_trackClusterRemoverBase"+postfix, _trackClusterRemoverBase) - pf = postfix(era) - iters = globals()["_iterations"+pf] + iters = globals()["_iterations"+postfix] try: ind = iters.index(iteration) except ValueError: @@ -183,16 +186,16 @@ def clusterRemoverForIter(iteration, era="", module=None): return module if ind == 0: - raise Exception("Iteration %s is the first iteration in era %s, asking cluster remover configuration does not make sense" % (iteration, era)) + raise Exception("Iteration %s is the first iteration in era %s, asking cluster remover configuration does not make sense" % (iteration, eraName)) prevIter = iters[ind-1] customize = dict( trajectories = _tracks(prevIter), oldClusterRemovalInfo = _clusterRemover(prevIter) if ind >= 2 else "", # 1st iteration does not have cluster remover ) - if era in ["trackingPhase1PU70", "trackingPhase2PU140"]: + if eraName in ["trackingPhase1PU70", "trackingPhase2PU140"]: customize["overrideTrkQuals"] = _classifier(prevIter, oldStyle=True) # old-style selector - elif era == "trackingLowPU": + elif eraName == "trackingLowPU": customize["overrideTrkQuals"] = _classifier(prevIter, oldStyle=True, oldStyleQualityMasks=True) # old-style selector with 'QualityMasks' instance label else: customize["trackClassifier"] = _classifier(prevIter) diff --git a/RecoTracker/IterativeTracking/python/iterativeTk_cff.py b/RecoTracker/IterativeTracking/python/iterativeTk_cff.py index 9179e678256c6..26dc90770dcec 100644 --- a/RecoTracker/IterativeTracking/python/iterativeTk_cff.py +++ b/RecoTracker/IterativeTracking/python/iterativeTk_cff.py @@ -25,9 +25,9 @@ import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg -iterTrackingEarly = _cfg.createEarlySequence("", globals()) -for _era in _cfg.nonDefaultEras(): - getattr(eras, _era).toReplaceWith(iterTrackingEarly, _cfg.createEarlySequence(_era, globals())) +iterTrackingEarly = _cfg.createEarlySequence("", "", globals()) +for _eraName, _postfix, _era in _cfg.nonDefaultEras(): + _era.toReplaceWith(iterTrackingEarly, _cfg.createEarlySequence(_eraName, _postfix, globals())) iterTracking = cms.Sequence(InitialStepPreSplitting* iterTrackingEarly* diff --git a/Validation/RecoTrack/python/TrackValidation_cff.py b/Validation/RecoTrack/python/TrackValidation_cff.py index 4478310afaa38..3cefd48fe5bf5 100644 --- a/Validation/RecoTrack/python/TrackValidation_cff.py +++ b/Validation/RecoTrack/python/TrackValidation_cff.py @@ -1,5 +1,4 @@ import FWCore.ParameterSet.Config as cms -from Configuration.StandardSequences.Eras import eras import SimTracker.TrackAssociatorProducers.trackAssociatorByChi2_cfi from SimTracker.TrackAssociatorProducers.quickTrackAssociatorByHits_cfi import * @@ -19,20 +18,20 @@ from CommonTools.RecoAlgos.recoChargedRefCandidateToTrackRefProducer_cfi import recoChargedRefCandidateToTrackRefProducer as _recoChargedRefCandidateToTrackRefProducer import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim ### First define the stuff for the standard validation sequence ## Track selectors -for era in _cfg.allEras(): - pf = _cfg.postfix(era) +for _eraName, _postfix, _era in _cfg.allEras(): _seedProd = ["initialStepSeedsPreSplitting"] _trackProd = ["initialStepTracksPreSplitting"] - if era in ["trackingLowPU", "trackingPhase1PU70", "trackingPhase2PU140"]: # these don't have preSplitting + if _eraName in ["trackingLowPU", "trackingPhase1PU70", "trackingPhase2PU140"]: # these don't have preSplitting _seedProd = [] _trackProd = [] - locals()["_algos"+pf] = ["generalTracks"] + _cfg.iterationAlgos(era) + ["duplicateMerge"] - locals()["_seedProducers"+pf] = _seedProd + _cfg.seedProducers(era) - locals()["_trackProducers"+pf] = _trackProd + _cfg.trackProducers(era) + locals()["_algos"+_postfix] = ["generalTracks"] + _cfg.iterationAlgos(_postfix) + ["duplicateMerge"] + locals()["_seedProducers"+_postfix] = _seedProd + _cfg.seedProducers(_postfix) + locals()["_trackProducers"+_postfix] = _trackProd + _cfg.trackProducers(_postfix) _removeForFastSimSeedProducers =["initialStepSeedsPreSplitting", "jetCoreRegionalStepSeeds", @@ -129,18 +128,8 @@ def _addSeedToTrackProducers(seedProducers,modDict): seq += mod return (names, seq) -def _eraPostfix(era): - if era == "": - return (era, "") - return (era, "_"+era) -_relevantEras = [ - _eraPostfix(""), - _eraPostfix("trackingLowPU"), - _eraPostfix("trackingPhase1"), - _eraPostfix("trackingPhase1PU70"), - _eraPostfix("trackingPhase2PU140"), -] -_relevantErasAndFastSim = _relevantEras + [_eraPostfix("fastSim")] +_relevantEras = _cfg.allEras() +_relevantErasAndFastSim = _relevantEras + [("fastSim", "_fastSim", fastSim)] def _translateArgs(args, postfix, modDict): ret = [] for arg in args: @@ -154,7 +143,7 @@ def _sequenceForEachEra(function, args, names, sequence, modDict, plainArgs=[], raise Exception("Sequence name is expected to begin with _") _eras = _relevantErasAndFastSim if includeFastSim else _relevantEras - for eraName, postfix in _eras: + for eraName, postfix, _era in _eras: _args = _translateArgs(args, postfix, modDict) _args.extend(plainArgs) ret = function(*_args, modDict=modDict) @@ -170,18 +159,18 @@ def _sequenceForEachEra(function, args, names, sequence, modDict, plainArgs=[], # Optionally modify sequences before applying the era if modifySequence is not None: - for eraName, postfix in _eras: + for eraName, postfix, _era in _eras: modifySequence(modDict[sequence+postfix]) # Apply eras - for eraName, postfix in _eras[1:]: - getattr(eras, eraName).toReplaceWith(defaultSequence, modDict[sequence+postfix]) -def _setForEra(module, era, **kwargs): - if era == "": + for _eraName, _postfix, _era in _eras[1:]: + _era.toReplaceWith(defaultSequence, modDict[sequence+_postfix]) +def _setForEra(module, eraName, era, **kwargs): + if eraName == "": for key, value in kwargs.iteritems(): setattr(module, key, value) else: - getattr(eras, era).toModify(module, **kwargs) + era.toModify(module, **kwargs) # Seeding layer sets def _getSeedingLayers(seedProducers): @@ -202,8 +191,8 @@ def _getSeedingLayers(seedProducers): if layerSet not in seedingLayersMerged: seedingLayersMerged.append(layerSet) return seedingLayersMerged -for era, postfix in _relevantEras: - locals()["_seedingLayerSets"+postfix] = _getSeedingLayers(locals()["_seedProducers"+postfix]) +for _eraName, _postfix, _era in _relevantEras: + locals()["_seedingLayerSets"+_postfix] = _getSeedingLayers(locals()["_seedProducers"+_postfix]) # Validation iterative steps _sequenceForEachEra(_addSelectorsByAlgo, args=["_algos"], names="_selectorsByAlgo", sequence="_tracksValidationSelectorsByAlgo", modDict=globals()) @@ -211,10 +200,10 @@ def _getSeedingLayers(seedProducers): # high purity _sequenceForEachEra(_addSelectorsByHp, args=["_algos"], names="_selectorsByAlgoHp", sequence="_tracksValidationSelectorsByAlgoHp", modDict=globals()) -for era, postfix in _relevantEras: - selectors = locals()["_selectorsByAlgoHp"+postfix] - locals()["_generalTracksHp"+postfix] = selectors[0] - locals()["_selectorsByAlgoHp"+postfix] = selectors[1:] +for _eraName, _postfix, _era in _relevantEras: + selectors = locals()["_selectorsByAlgoHp"+_postfix] + locals()["_generalTracksHp"+_postfix] = selectors[0] + locals()["_selectorsByAlgoHp"+_postfix] = selectors[1:] # BTV-like selection import PhysicsTools.RecoAlgos.btvTracks_cfi as btvTracks_cfi @@ -289,17 +278,16 @@ def _getSeedingLayers(seedProducers): #,maxpT = cms.double(3) #,nintpT = cms.int32(40) ) -from Configuration.Eras.Modifier_fastSim_cff import fastSim fastSim.toModify(trackValidator, dodEdxPlots = False) -for era, postfix in _relevantEras: - _setForEra(trackValidator, era, - label = ["generalTracks", locals()["_generalTracksHp"+postfix]] + locals()["_selectorsByAlgo"+postfix] + locals()["_selectorsByAlgoHp"+postfix] + [ +for _eraName, _postfix, _era in _relevantEras: + _setForEra(trackValidator, _eraName, _era, + label = ["generalTracks", locals()["_generalTracksHp"+_postfix]] + locals()["_selectorsByAlgo"+_postfix] + locals()["_selectorsByAlgoHp"+_postfix] + [ "cutsRecoTracksBtvLike", "cutsRecoTracksAK4PFJets" ]) - _setForEra(trackValidator.histoProducerAlgoBlock, era, seedingLayerSets=locals()["_seedingLayerSets"+postfix]) + _setForEra(trackValidator.histoProducerAlgoBlock, _eraName, _era, seedingLayerSets=locals()["_seedingLayerSets"+_postfix]) # For efficiency of signal TPs vs. signal tracks, and fake rate of # signal tracks vs. signal TPs @@ -313,8 +301,8 @@ def _getSeedingLayers(seedProducers): doPlotsOnlyForTruePV = True, doPVAssociationPlots = False, ) -for era, postfix in _relevantEras: - _setForEra(trackValidatorFromPV, era, label = ["generalTracksFromPV"] + locals()["_selectorsFromPV"+postfix]) +for _eraName, _postfix, _era in _relevantEras: + _setForEra(trackValidatorFromPV, _eraName, _era, label = ["generalTracksFromPV"] + locals()["_selectorsFromPV"+_postfix]) # For fake rate of signal tracks vs. all TPs, and pileup rate of # signal tracks vs. non-signal TPs @@ -342,8 +330,8 @@ def _getSeedingLayers(seedProducers): trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsPt.signalOnly = False trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXR.signalOnly = False trackValidatorAllTPEffic.histoProducerAlgoBlock.TpSelectorForEfficiencyVsVTXZ.signalOnly = False -for era, postfix in _relevantEras: - _setForEra(trackValidatorAllTPEffic, era, label = ["generalTracks", locals()["_generalTracksHp"+postfix]]) +for _eraName, _postfix, _era in _relevantEras: + _setForEra(trackValidatorAllTPEffic, _eraName, _era, label = ["generalTracks", locals()["_generalTracksHp"+_postfix]]) # For conversions trackValidatorConversion = trackValidator.clone( @@ -421,8 +409,8 @@ def _getSeedingLayers(seedProducers): ### Then define stuff for standalone mode (i.e. MTV with RECO+DIGI input) # Select by originalAlgo and algoMask -for era, postfix in _relevantEras: - locals()["_selectorsByAlgoAndHp"+postfix] = locals()["_selectorsByAlgo"+postfix] + locals()["_selectorsByAlgoHp"+postfix] +for _eraName, _postfix, _era in _relevantEras: + locals()["_selectorsByAlgoAndHp"+_postfix] = locals()["_selectorsByAlgo"+_postfix] + locals()["_selectorsByAlgoHp"+_postfix] _sequenceForEachEra(_addSelectorsByOriginalAlgoMask, modDict = globals(), args = ["_selectorsByAlgoAndHp"], plainArgs = ["ByOriginalAlgo", "originalAlgorithm"], names = "_selectorsByOriginalAlgo", sequence = "_tracksValidationSelectorsByOriginalAlgoStandalone") @@ -437,12 +425,12 @@ def _getSeedingLayers(seedProducers): # MTV instances trackValidatorStandalone = trackValidator.clone() -for era, postfix in _relevantEras: - _setForEra(trackValidatorStandalone, era, label = trackValidator.label + locals()["_selectorsByOriginalAlgo"+postfix] + locals()["_selectorsByAlgoMask"+postfix]) +for _eraName, _postfix, _era in _relevantEras: + _setForEra(trackValidatorStandalone, _eraName, _era, label = trackValidator.label + locals()["_selectorsByOriginalAlgo"+_postfix] + locals()["_selectorsByAlgoMask"+_postfix]) trackValidatorFromPVStandalone = trackValidatorFromPV.clone() -for era, postfix in _relevantEras: - _setForEra(trackValidatorFromPVStandalone, era, label = trackValidatorFromPV.label + locals()["_selectorsFromPVStandalone"+postfix]) +for _eraName, _postfix, _era in _relevantEras: + _setForEra(trackValidatorFromPVStandalone, _eraName, _era, label = trackValidatorFromPV.label + locals()["_selectorsFromPVStandalone"+_postfix]) trackValidatorFromPVAllTPStandalone = trackValidatorFromPVAllTP.clone( label = trackValidatorFromPVStandalone.label.value() @@ -497,16 +485,16 @@ def _getSeedingLayers(seedProducers): doPVAssociationPlots = False, doSimPlots = False, ) -for era, postfix in _relevantErasAndFastSim: - _setForEra(trackValidatorBuildingTrackingOnly, era, label = locals()["_trackProducers"+postfix]) +for _eraName, _postfix, _era in _relevantErasAndFastSim: + _setForEra(trackValidatorBuildingTrackingOnly, _eraName, _era, label = locals()["_trackProducers"+_postfix]) trackValidatorSeedingTrackingOnly = trackValidatorBuildingTrackingOnly.clone( dirName = "Tracking/TrackSeeding/", label = _seedSelectors, doSeedPlots = True, ) -for era, postfix in _relevantErasAndFastSim: - _setForEra(trackValidatorSeedingTrackingOnly, era, label = locals()["_seedSelectors"+postfix]) +for _eraName, _postfix, _era in _relevantErasAndFastSim: + _setForEra(trackValidatorSeedingTrackingOnly, _eraName, _era, label = locals()["_seedSelectors"+_postfix]) trackValidatorConversionTrackingOnly = trackValidatorConversion.clone(label = [x for x in trackValidatorConversion.label if x not in ["ckfInOutTracksFromConversions", "ckfOutInTracksFromConversions"]])