File indexing completed on 2024-04-06 12:28:10
0001
0002
0003
0004 import FWCore.ParameterSet.Config as cms
0005
0006 _defaultEraName = ""
0007 _nonDefaultEraNames = ["trackingLowPU", "trackingPhase1", "trackingPhase2PU140"]
0008
0009
0010 _defaultEra = (_defaultEraName, "", None)
0011 _nonDefaultEras = [
0012 (_name, "_"+_name, getattr(__import__('Configuration.Eras.Modifier_'+_name+'_cff',globals(),locals(),[_name],0),_name)) \
0013 for _name in _nonDefaultEraNames
0014 ]
0015
0016 _allEras = [_defaultEra] + _nonDefaultEras
0017
0018
0019 _iterations = [
0020 "InitialStep",
0021 "DetachedTripletStep",
0022 "LowPtTripletStep",
0023 "PixelPairStep",
0024 "MixedTripletStep",
0025 "PixelLessStep",
0026 "TobTecStep",
0027 "JetCoreRegionalStep",
0028 ]
0029 _iterations_trackingLowPU = [
0030 "InitialStep",
0031 "LowPtTripletStep",
0032 "PixelPairStep",
0033 "DetachedTripletStep",
0034 "MixedTripletStep",
0035 "PixelLessStep",
0036 "TobTecStep",
0037 ]
0038 _iterations_trackingPhase1 = [
0039 "InitialStep",
0040 "LowPtQuadStep",
0041 "HighPtTripletStep",
0042 "LowPtTripletStep",
0043 "DetachedQuadStep",
0044 "DetachedTripletStep",
0045 "PixelPairStep",
0046 "MixedTripletStep",
0047 "PixelLessStep",
0048 "TobTecStep",
0049 ]
0050
0051 from Configuration.ProcessModifiers.displacedTracking_cff import displacedTracking
0052 displacedTracking.toModify(_iterations_trackingPhase1, func=lambda x: x.append('DisplacedGeneralStep'))
0053
0054 _iterations_trackingPhase1.append('JetCoreRegionalStep')
0055
0056 _iterations_trackingPhase2PU140 = [
0057 "InitialStep",
0058 "HighPtTripletStep",
0059 "LowPtQuadStep",
0060 "LowPtTripletStep",
0061 "DetachedQuadStep",
0062 "PixelPairStep",
0063 ]
0064 from Configuration.ProcessModifiers.vectorHits_cff import vectorHits
0065 vectorHits.toModify(_iterations_trackingPhase2PU140, func=lambda x: x.append('PixelLessStep'))
0066 _iterations_muonSeeded = [
0067 "MuonSeededStepInOut",
0068 "MuonSeededStepOutIn",
0069 ]
0070 _iterations_muonSeeded_trackingPhase1 = [
0071 "MuonSeededStepInOut",
0072 "MuonSeededStepOutIn",
0073 ]
0074
0075 _iterations_muonSeeded_trackingPhase2PU140 = [
0076 "MuonSeededStepInOut",
0077 "MuonSeededStepOutIn",
0078 ]
0079 _multipleSeedProducers = {
0080 "MixedTripletStep": ["A", "B"],
0081 "TobTecStep": ["Pair", "Tripl"],
0082 }
0083 _multipleSeedProducers_trackingLowPU = {
0084 "MixedTripletStep": ["A", "B"],
0085 }
0086 _multipleSeedProducers_trackingPhase1 = {
0087 "PixelPairStep": ["A", "B"],
0088 "MixedTripletStep": ["A", "B"],
0089 "TobTecStep": ["Pair", "Tripl"],
0090 }
0091 from Configuration.ProcessModifiers.seedingDeepCore_cff import seedingDeepCore
0092 seedingDeepCore.toModify(_multipleSeedProducers_trackingPhase1, func=lambda x: x.update({"JetCoreRegionalStep": ["Barrel","Endcap"]}))
0093
0094
0095 _multipleSeedProducers_trackingPhase2PU140 = {}
0096 _oldStyleHasSelector = set([
0097 "InitialStep",
0098 "HighPtTripletStep",
0099 "LowPtQuadStep",
0100 "LowPtTripletStep",
0101 "PixelPairStep",
0102 "PixelLessStep",
0103 "TobTecStep",
0104 ])
0105
0106 from Configuration.ProcessModifiers.displacedRegionalTracking_cff import displacedRegionalTracking
0107 displacedRegionalTracking.toModify(_iterations_muonSeeded_trackingPhase1, func=lambda x: x.append('DisplacedRegionalStep'))
0108 displacedRegionalTracking.toModify(_multipleSeedProducers_trackingPhase1, func=lambda x: x.update({'DisplacedRegionalStep': ['Pair', 'Tripl']}))
0109
0110 from RecoLocalTracker.SubCollectionProducers.trackClusterRemover_cfi import trackClusterRemover as _trackClusterRemover
0111 _trackClusterRemoverBase = _trackClusterRemover.clone(
0112 maxChi2 = 9.0,
0113 pixelClusters = "siPixelClusters",
0114 stripClusters = "siStripClusters",
0115 TrackQuality = 'highPurity',
0116 minNumberOfLayersWithMeasBeforeFiltering = 0,
0117 )
0118
0119 from Configuration.ProcessModifiers.pp_on_AA_cff import pp_on_AA
0120 from Configuration.ProcessModifiers.trackdnn_cff import trackdnn
0121 (pp_on_AA & (~trackdnn) ).toModify(_trackClusterRemoverBase, TrackQuality = 'tight')
0122
0123
0124 from RecoLocalTracker.SubCollectionProducers.phase2trackClusterRemover_cfi import phase2trackClusterRemover as _phase2trackClusterRemover
0125 _trackClusterRemoverBase_trackingPhase2PU140 = _phase2trackClusterRemover.clone(
0126 maxChi2 = 9.0,
0127 phase2pixelClusters = "siPixelClusters",
0128 phase2OTClusters = "siPhase2Clusters",
0129 TrackQuality = 'highPurity',
0130 minNumberOfLayersWithMeasBeforeFiltering = 0,
0131 )
0132
0133 def _modulePrefix(iteration):
0134 return iteration[0].lower()+iteration[1:]
0135
0136 def _clusterRemover(iteration):
0137 return _modulePrefix(iteration)+"Clusters"
0138
0139 def _tracks(iteration):
0140 return _modulePrefix(iteration)+"Tracks"
0141
0142 def _classifier(iteration, oldStyle=False, oldStyleQualityMasks=False):
0143 pre = _modulePrefix(iteration)
0144 if oldStyle:
0145 if iteration in _oldStyleHasSelector:
0146 return pre+"Selector:" + ("QualityMasks" if oldStyleQualityMasks else pre)
0147 else:
0148 return pre
0149 else:
0150 return pre+":QualityMasks"
0151
0152 def allEras():
0153 return _allEras
0154
0155 def nonDefaultEras():
0156 return _nonDefaultEras
0157
0158 def createEarlyTask(eraName, postfix, modDict):
0159 task = cms.Task()
0160 for it in globals()["_iterations"+postfix]:
0161 task.add(modDict[it+'Task'])
0162 return task
0163
0164 def iterationAlgos(postfix, includeSequenceName=False):
0165 muonVariable = "_iterations_muonSeeded"+postfix
0166 iterations = globals()["_iterations"+postfix] + globals().get(muonVariable, _iterations_muonSeeded)
0167
0168 if includeSequenceName:
0169 return [(_modulePrefix(i), i) for i in iterations]
0170 else:
0171 return [_modulePrefix(i) for i in iterations]
0172
0173 def _seedOrTrackProducers(postfix, typ):
0174 ret = []
0175 iters = globals()["_iterations"+postfix]
0176 if typ == "Seeds":
0177 multipleSeedProducers = globals()["_multipleSeedProducers"+postfix]
0178 else:
0179 multipleSeedProducers = None
0180 for i in iters:
0181 seeder = _modulePrefix(i)+typ
0182 if multipleSeedProducers is not None and i in multipleSeedProducers:
0183 ret.extend([seeder+m for m in multipleSeedProducers[i]])
0184 else:
0185 ret.append(seeder)
0186
0187 for i in globals().get("_iterations_muonSeeded"+postfix, _iterations_muonSeeded):
0188 if _modulePrefix(i).endswith("Step"):
0189 ret.append(_modulePrefix(i)+typ)
0190 else:
0191 ret.append(_modulePrefix(i).replace("Step", typ))
0192
0193 return ret
0194
0195 def seedProducers(postfix):
0196 return _seedOrTrackProducers(postfix, "Seeds")
0197
0198 def trackProducers(postfix):
0199 return _seedOrTrackProducers(postfix, "Tracks")
0200
0201 def clusterRemoverForIter(iteration, eraName="", postfix="", module=None):
0202 if module is None:
0203 module = _trackClusterRemoverBase.clone()
0204 if eraName == "trackingPhase2PU140":
0205 module = globals().get("_trackClusterRemoverBase"+postfix, _trackClusterRemoverBase)
0206
0207 iters = globals()["_iterations"+postfix]
0208 try:
0209
0210
0211 ind = iters.index(iteration) if iteration != "DisplacedRegionalStep" else len(iters)
0212 except ValueError:
0213
0214 return module
0215
0216 if ind == 0:
0217 raise Exception("Iteration %s is the first iteration in era %s, asking cluster remover configuration does not make sense" % (iteration, eraName))
0218 prevIter = iters[ind-1]
0219
0220
0221 if prevIter == "JetCoreRegionalStep":
0222 prevIter = iters[ind-2]
0223
0224 customize = dict(
0225 trajectories = _tracks(prevIter),
0226 oldClusterRemovalInfo = _clusterRemover(prevIter) if ind >= 2 else "",
0227 )
0228 if eraName in ["trackingPhase2PU140"]:
0229 customize["overrideTrkQuals"] = _classifier(prevIter, oldStyle=True)
0230 elif eraName == "trackingLowPU":
0231 customize["overrideTrkQuals"] = _classifier(prevIter, oldStyle=True, oldStyleQualityMasks=True)
0232 else:
0233 customize["trackClassifier"] = _classifier(prevIter)
0234
0235 return module.clone(**customize)