CMS 3D CMS Logo

PixelPairStep_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016
3 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg
4 from Configuration.Eras.Modifier_fastSim_cff import fastSim
5 
6 # NEW CLUSTERS (remove previously used clusters)
7 pixelPairStepClusters = _cfg.clusterRemoverForIter("PixelPairStep")
8 for _eraName, _postfix, _era in _cfg.nonDefaultEras():
9  _era.toReplaceWith(pixelPairStepClusters, _cfg.clusterRemoverForIter("PixelPairStep", _eraName, _postfix))
10 
11 
12 # SEEDING LAYERS
13 pixelPairStepSeedLayers = cms.EDProducer("SeedingLayersEDProducer",
14  layerList = cms.vstring('BPix1+BPix2', 'BPix1+BPix3', 'BPix2+BPix3',
15  'BPix1+FPix1_pos', 'BPix1+FPix1_neg',
16  'BPix2+FPix1_pos', 'BPix2+FPix1_neg',
17  'FPix1_pos+FPix2_pos', 'FPix1_neg+FPix2_neg'),
18  BPix = cms.PSet(
19  TTRHBuilder = cms.string('WithTrackAngle'),
20  HitProducer = cms.string('siPixelRecHits'),
21  skipClusters = cms.InputTag('pixelPairStepClusters')
22  ),
23  FPix = cms.PSet(
24  TTRHBuilder = cms.string('WithTrackAngle'),
25  HitProducer = cms.string('siPixelRecHits'),
26  skipClusters = cms.InputTag('pixelPairStepClusters')
27  )
28 )
29 # layers covering the region not covered by quadruplets (so it is
30 # just acting as backup of triplets)
31 _layerListForPhase1 = [
32  'BPix1+BPix2', 'BPix1+BPix3', 'BPix2+BPix3',
33  'BPix1+FPix1_pos', 'BPix1+FPix1_neg',
34  'BPix2+FPix1_pos', 'BPix2+FPix1_neg',
35 ]
36 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
37 trackingPhase1.toModify(pixelPairStepSeedLayers, layerList = _layerListForPhase1)
38 
39 # only layers covering the region not covered by quadruplets
40 # (so it is just acting as backup of triplets)
41 _layerListForPhase2 = [
42  'BPix1+BPix2', 'BPix1+BPix3', 'BPix2+BPix3',
43  'BPix1+FPix1_pos', 'BPix1+FPix1_neg',
44  'BPix2+FPix1_pos', 'BPix2+FPix1_neg'
45 ]
46 # modifing these errors seems to make no difference
47 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
48 trackingPhase2PU140.toModify(pixelPairStepSeedLayers,
49  layerList = _layerListForPhase2,
50  BPix = dict(
51  useErrorsFromParam = cms.bool(True),
52  hitErrorRPhi = cms.double(0.0016),
53  hitErrorRZ = cms.double(0.0035),
54  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
55  ),
56  FPix = dict(
57  useErrorsFromParam = cms.bool(True),
58  hitErrorRPhi = cms.double(0.0030),
59  hitErrorRZ = cms.double(0.0020),
60  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
61  )
62 )
63 
64 # TrackingRegion
65 from RecoTracker.TkTrackingRegions.globalTrackingRegionWithVertices_cff import globalTrackingRegionWithVertices as _globalTrackingRegionWithVertices
66 pixelPairStepTrackingRegions = _globalTrackingRegionWithVertices.clone(RegionPSet = dict(
67  ptMin = 0.6,
68  originRadius = 0.015,
69  fixedError = 0.03,
70  useMultipleScattering = True,
71 ))
72 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
73 trackingLowPU.toModify(pixelPairStepTrackingRegions, RegionPSet=dict(useMultipleScattering=False))
74 _region_Phase1 = dict(
75  useMultipleScattering = False,
76  maxNVertices = 5,
77 )
78 trackingPhase1.toModify(pixelPairStepTrackingRegions, RegionPSet=_region_Phase1)
79 trackingPhase2PU140.toModify(pixelPairStepTrackingRegions, RegionPSet=_region_Phase1)
80 from Configuration.Eras.Modifier_highBetaStar_2018_cff import highBetaStar_2018
81 highBetaStar_2018.toModify(pixelPairStepTrackingRegions,RegionPSet = dict(
82  ptMin = 0.05,
83  originRadius = 0.2,
84  fixedError = 4.
85 ))
86 fastSim.toModify(pixelPairStepTrackingRegions, RegionPSet=dict(VertexCollection = "firstStepPrimaryVerticesBeforeMixing"))
87 
88 # SEEDS
89 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
90 pixelPairStepHitDoublets = _hitPairEDProducer.clone(
91  seedingLayers = "pixelPairStepSeedLayers",
92  trackingRegions = "pixelPairStepTrackingRegions",
93  produceSeedingHitSets = True,
94 )
95 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsEDProducer_cff import seedCreatorFromRegionConsecutiveHitsEDProducer as _seedCreatorFromRegionConsecutiveHitsEDProducer
96 pixelPairStepSeeds = _seedCreatorFromRegionConsecutiveHitsEDProducer.clone(
97  seedingHitSets = "pixelPairStepHitDoublets",
98  SeedComparitorPSet = dict(# FIXME: is this defined in any cfi that could be imported instead of copy-paste?
99  ComponentName = 'PixelClusterShapeSeedComparitor',
100  FilterAtHelixStage = cms.bool(True),
101  FilterPixelHits = cms.bool(True),
102  FilterStripHits = cms.bool(False),
103  ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
104  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache'),
105  )
106 )
107 
108 # Clone for the phase1 recovery mode
109 pixelPairStepSeedsA = pixelPairStepSeeds.clone()
110 
111 #have to do it after making pixelPairStepSeedsA since pixelPairStepSeedsB clones A
112 # and then modifies it
113 import FastSimulation.Tracking.TrajectorySeedProducer_cfi
114 fastSim.toReplaceWith(pixelPairStepSeeds,
115  FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
116  trackingRegions = "pixelPairStepTrackingRegions",
117  hitMasks = cms.InputTag("pixelPairStepMasks"),
118  seedFinderSelector = dict(layerList = pixelPairStepSeedLayers.layerList.value())
119  )
120 )
121 
122 # Recovery for regions with 2 inactive layers
123 from RecoTracker.TkTrackingRegions.pixelInactiveAreaTrackingRegionsAndSeedingLayers_cfi import pixelInactiveAreaTrackingRegionsAndSeedingLayers as _pixelInactiveAreaTrackingRegionsAndSeedingLayers
124 pixelPairStepTrackingRegionsSeedLayersB = _pixelInactiveAreaTrackingRegionsAndSeedingLayers.clone(
125  layerList = [
126 # Commented ones are already included in the global seeds (A), but are
127 # included below for completenees
128 #
129 # "BPix1+BPix2",
130 # "BPix1+BPix3",
131  "BPix1+BPix4",
132 # "BPix2+BPix3",
133  "BPix2+BPix4",
134  "BPix3+BPix4",
135 # "BPix1+FPix1_pos" , "BPix1+FPix1_neg",
136  "BPix1+FPix2_pos" , "BPix1+FPix2_neg",
137  "BPix1+FPix3_pos" , "BPix1+FPix3_neg",
138 # "BPix2+FPix1_pos" , "BPix2+FPix1_neg",
139  "BPix2+FPix2_pos" , "BPix2+FPix2_neg",
140  "BPix3+FPix1_pos" , "BPix3+FPix1_neg",
141  "FPix1_pos+FPix2_pos", "FPix1_neg+FPix2_neg",
142  "FPix1_pos+FPix3_pos", "FPix1_neg+FPix3_neg",
143  "FPix2_pos+FPix3_pos", "FPix2_neg+FPix3_neg",
144  ],
145  BPix = dict(
146  TTRHBuilder = cms.string('WithTrackAngle'),
147  HitProducer = cms.string('siPixelRecHits'),
148  skipClusters = cms.InputTag('pixelPairStepClusters')
149  ),
150  FPix = dict(
151  TTRHBuilder = cms.string('WithTrackAngle'),
152  HitProducer = cms.string('siPixelRecHits'),
153  skipClusters = cms.InputTag('pixelPairStepClusters')
154  ),
155  RegionPSet = dict(
156  ptMin = 0.6,
157  originRadius = 0.015,
158  operationMode = "VerticesFixed",
159  zErrorVertex = 0.03,
160  maxNVertices = 5,
161  ),
162  ignoreSingleFPixPanelModules = True,
163 )
164 highBetaStar_2018.toModify(pixelPairStepTrackingRegionsSeedLayersB,RegionPSet = dict(
165  ptMin = 0.05,
166  originRadius = 0.2,
167 ))
168 #include commented lines from above in pp_on_XY eras; global seeds (A) are not used in this era b/c timing
169 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
170 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
171 (pp_on_XeXe_2017 | pp_on_AA_2018).toModify(pixelPairStepTrackingRegionsSeedLayersB, layerList = [
172  "BPix1+BPix2", "BPix1+BPix3", "BPix1+BPix4", "BPix2+BPix3", "BPix2+BPix4","BPix3+BPix4",
173  "BPix1+FPix1_pos" , "BPix1+FPix1_neg",
174  "BPix1+FPix2_pos" , "BPix1+FPix2_neg",
175  "BPix1+FPix3_pos" , "BPix1+FPix3_neg",
176  "BPix2+FPix1_pos" , "BPix2+FPix1_neg",
177  "BPix2+FPix2_pos" , "BPix2+FPix2_neg",
178  "BPix3+FPix1_pos" , "BPix3+FPix1_neg",
179  "FPix1_pos+FPix2_pos", "FPix1_neg+FPix2_neg",
180  "FPix1_pos+FPix3_pos", "FPix1_neg+FPix3_neg",
181  "FPix2_pos+FPix3_pos", "FPix2_neg+FPix3_neg"
182  ])
183 
184 pixelPairStepHitDoubletsB = pixelPairStepHitDoublets.clone(
185  seedingLayers = "",
186  trackingRegions = "",
187  trackingRegionsSeedingLayers = "pixelPairStepTrackingRegionsSeedLayersB",
188 )
189 pixelPairStepSeedsB = pixelPairStepSeedsA.clone(seedingHitSets = "pixelPairStepHitDoubletsB")
190 
191 
192 # Merge
193 from RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi import globalCombinedSeeds as _globalCombinedSeeds
194 _pixelPairStepSeedsMerged = _globalCombinedSeeds.clone(
195  seedCollections = ["pixelPairStepSeedsA", "pixelPairStepSeedsB"],
196 )
197 (trackingPhase1 & ~fastSim).toReplaceWith(pixelPairStepSeeds, _pixelPairStepSeedsMerged)
198 
199 #only use region B for pp_on_XY era for timing reasons
200 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(pixelPairStepSeeds, pixelPairStepSeedsB)
201 
202 # QUALITY CUTS DURING TRACK BUILDING
204 _pixelPairStepTrajectoryFilterBase = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
205  minimumNumberOfHits = 3,
206  minPt = 0.1,
207 )
208 pixelPairStepTrajectoryFilterBase = _pixelPairStepTrajectoryFilterBase.clone(
209  seedPairPenalty =0,
210  maxCCCLostHits = 0,
211  minGoodStripCharge = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose'))
212 )
213 from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016
214 _tracker_apv_vfp30_2016.toModify(pixelPairStepTrajectoryFilterBase, maxCCCLostHits = 2)
215 trackingLowPU.toReplaceWith(pixelPairStepTrajectoryFilterBase, _pixelPairStepTrajectoryFilterBase)
216 trackingPhase1.toModify(pixelPairStepTrajectoryFilterBase, minimumNumberOfHits = 4)
217 trackingPhase2PU140.toReplaceWith(pixelPairStepTrajectoryFilterBase, _pixelPairStepTrajectoryFilterBase.clone(
218  minimumNumberOfHits = 4,
219  maxLostHitsFraction = 1./10.,
220  constantValueForLostHitsFractionFilter = 0.701,
221 ))
222 highBetaStar_2018.toModify(pixelPairStepTrajectoryFilterBase, minPt = 0.05)
223 
224 import RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi
225 pixelPairStepTrajectoryFilterShape = RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeTrajectoryFilter_cfi.StripSubClusterShapeTrajectoryFilterTIX12.clone()
226 pixelPairStepTrajectoryFilter = cms.PSet(
227  ComponentType = cms.string('CompositeTrajectoryFilter'),
228  filters = cms.VPSet(
229  cms.PSet( refToPSet_ = cms.string('pixelPairStepTrajectoryFilterBase')),
230  # cms.PSet( refToPSet_ = cms.string('pixelPairStepTrajectoryFilterShape'))
231  ),
232 )
234 trackingPhase2PU140.toModify(pixelPairStepTrajectoryFilter,
235  filters = pixelPairStepTrajectoryFilter.filters + [cms.PSet(refToPSet_ = cms.string('ClusterShapeTrajectoryFilter'))]
236 )
237 
238 
239 
240 pixelPairStepTrajectoryFilterInOut = pixelPairStepTrajectoryFilterBase.clone(
241  minimumNumberOfHits = 4,
242  seedExtension = 1,
243  strictSeedExtension = False, # allow inactive
244  pixelSeedExtension = False,
245 )
246 
247 
248 
249 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
250 pixelPairStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
251  ComponentName = cms.string('pixelPairStepChi2Est'),
252  nSigma = cms.double(3.0),
253  MaxChi2 = cms.double(9.0),
254  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutLoose')),
255  pTChargeCutThreshold = cms.double(15.)
256 )
257 _tracker_apv_vfp30_2016.toModify(pixelPairStepChi2Est,
258  clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutTiny")
259 )
260 trackingLowPU.toModify(pixelPairStepChi2Est,
261  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny'),
262 )
263 highBetaStar_2018.toModify(pixelPairStepChi2Est,MaxChi2 = cms.double(30))
264 
265 # TRACK BUILDING
267 pixelPairStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
268  MeasurementTrackerName = '',
269  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('pixelPairStepTrajectoryFilter')),
270  maxCand = 3,
271  estimator = cms.string('pixelPairStepChi2Est'),
272  maxDPhiForLooperReconstruction = cms.double(2.0),
273  maxPtForLooperReconstruction = cms.double(0.7)
274  )
275 trackingLowPU.toModify(pixelPairStepTrajectoryBuilder, maxCand = 2)
276 _seedExtension = dict(
277  inOutTrajectoryFilter = dict(refToPSet_ = "pixelPairStepTrajectoryFilterInOut"),
278  useSameTrajFilter = False,
279 )
280 trackingPhase1.toModify(pixelPairStepTrajectoryBuilder, **_seedExtension)
281 trackingPhase2PU140.toModify(pixelPairStepTrajectoryBuilder, **_seedExtension)
282 
283 
284 
285 
286 # MAKING OF TRACK CANDIDATES
288 pixelPairStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
289  src = cms.InputTag('pixelPairStepSeeds'),
290  clustersToSkip = cms.InputTag('pixelPairStepClusters'),
291  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('pixelPairStepTrajectoryBuilder')),
292  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
293  numHitsForSeedCleaner = cms.int32(50),
294  onlyPixelHitsForSeedCleaner = cms.bool(True),
295 
296 )
297 trackingPhase2PU140.toModify(pixelPairStepTrackCandidates,
298  clustersToSkip = None,
299  phase2clustersToSkip = cms.InputTag("pixelPairStepClusters"),
300  TrajectoryCleaner = "pixelPairStepTrajectoryCleanerBySharedHits"
301 )
302 import FastSimulation.Tracking.TrackCandidateProducer_cfi
303 fastSim.toReplaceWith(pixelPairStepTrackCandidates,
304  FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
305  src = cms.InputTag("pixelPairStepSeeds"),
306  MinNumberOfCrossedLayers = 2, # ?
307  hitMasks = cms.InputTag("pixelPairStepMasks")
308  )
309 )
310 
311 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits as _trajectoryCleanerBySharedHits
312 pixelPairStepTrajectoryCleanerBySharedHits = _trajectoryCleanerBySharedHits.clone(
313  ComponentName = 'pixelPairStepTrajectoryCleanerBySharedHits',
314  fractionShared = 0.095,
315  allowSharedFirstHit = True
316 )
317 trackingPhase2PU140.toModify(pixelPairStepTrajectoryCleanerBySharedHits, fractionShared = 0.09)
318 
319 # TRACK FITTING
321 pixelPairStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
322  AlgorithmName = cms.string('pixelPairStep'),
323  src = 'pixelPairStepTrackCandidates',
324  Fitter = cms.string('FlexibleKFFittingSmoother')
325  )
326 fastSim.toModify(pixelPairStepTracks, TTRHBuilder = 'WithoutRefit')
327 
328 # Final selection
330 pixelPairStep = TrackMVAClassifierPrompt.clone()
331 pixelPairStep.src = 'pixelPairStepTracks'
332 pixelPairStep.mva.GBRForestLabel = 'MVASelectorIter2_13TeV'
333 pixelPairStep.qualityCuts = [-0.2,0.0,0.3]
334 highBetaStar_2018.toModify(pixelPairStep,qualityCuts = [-0.95,0.0,0.3])
335 
336 trackingPhase1.toModify(pixelPairStep, mva=dict(GBRForestLabel = 'MVASelectorPixelPairStep_Phase1'))
337 fastSim.toModify(pixelPairStep, vertices = "firstStepPrimaryVerticesBeforeMixing")
338 pp_on_AA_2018.toModify(pixelPairStep, qualityCuts = [-0.2, 0.0, 0.9])
339 
340 # For LowPU and Phase2PU140
342 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
343 pixelPairStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
344  src='pixelPairStepTracks',
345  useAnyMVA = cms.bool(True),
346  GBRForestLabel = cms.string('MVASelectorIter2'),
347  trackSelectors= cms.VPSet(
348  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
349  name = 'pixelPairStepLoose',
350  ), #end of pset
351  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
352  name = 'pixelPairStepTight',
353  preFilterName = 'pixelPairStepLoose',
354  ),
355  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
356  name = 'QualityMasks',
357  preFilterName = 'pixelPairStepTight',
358  ),
359  ),
360  vertices = cms.InputTag("pixelVertices")#end of vpset
361 ) #end of clone
362 trackingPhase2PU140.toModify(pixelPairStepSelector,
363  useAnyMVA = None,
364  GBRForestLabel = None,
365  trackSelectors= cms.VPSet(
366  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
367  name = 'pixelPairStepLoose',
368  chi2n_par = 0.7,
369  res_par = ( 0.003, 0.002 ),
370  minNumberLayers = 3,
371  maxNumberLostLayers = 2,
372  minNumber3DLayers = 3,
373  d0_par1 = ( 0.4, 4.0 ),
374  dz_par1 = ( 0.4, 4.0 ),
375  d0_par2 = ( 0.6, 4.0 ),
376  dz_par2 = ( 0.45, 4.0 )
377  ), #end of pset
378  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
379  name = 'pixelPairStepTight',
380  preFilterName = 'pixelPairStepLoose',
381  chi2n_par = 0.6,
382  res_par = ( 0.003, 0.002 ),
383  minNumberLayers = 4,
384  maxNumberLostLayers = 2,
385  minNumber3DLayers = 3,
386  d0_par1 = ( 0.35, 4.0 ),
387  dz_par1 = ( 0.35, 4.0 ),
388  d0_par2 = ( 0.5, 4.0 ),
389  dz_par2 = ( 0.4, 4.0 )
390  ),
391  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
392  name = 'pixelPairStep',
393  preFilterName = 'pixelPairStepTight',
394  chi2n_par = 0.5,
395  res_par = ( 0.003, 0.001 ),
396  minNumberLayers = 5,
397  maxNumberLostLayers = 2,
398  minNumber3DLayers = 4,
399  d0_par1 = ( 0.3, 4.0 ),
400  dz_par1 = ( 0.3, 4.0 ),
401  d0_par2 = ( 0.45, 4.0 ),
402  dz_par2 = ( 0.35, 4.0 )
403  ),
404  ), #end of vpset
405  vertices = "firstStepPrimaryVertices"
406 ) #end of clone
407 
408 
409 # Final sequence
410 PixelPairStepTask = cms.Task(pixelPairStepClusters,
411  pixelPairStepSeedLayers,
412  pixelPairStepTrackingRegions,
413  pixelPairStepHitDoublets,
414  pixelPairStepSeeds,
415  pixelPairStepTrackCandidates,
416  pixelPairStepTracks,
417  pixelPairStep)
418 PixelPairStep = cms.Sequence(PixelPairStepTask)
419 
420 _PixelPairStepTask_LowPU_Phase2PU140 = PixelPairStepTask.copy()
421 _PixelPairStepTask_LowPU_Phase2PU140.replace(pixelPairStep, pixelPairStepSelector)
422 trackingLowPU.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_LowPU_Phase2PU140)
423 trackingPhase2PU140.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_LowPU_Phase2PU140)
424 
425 _PixelPairStepTask_Phase1 = PixelPairStepTask.copy()
426 _PixelPairStepTask_pp_on_AA = PixelPairStepTask.copy()
427 _PixelPairStepTask_Phase1.replace(pixelPairStepSeeds,cms.Task(
428  pixelPairStepSeedsA ,
429  pixelPairStepTrackingRegionsSeedLayersB,pixelPairStepHitDoubletsB,pixelPairStepSeedsB,
430  pixelPairStepSeeds))
431 trackingPhase1.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_Phase1)
432 
433 _PixelPairStepTask_pp_on_AA.replace(pixelPairStepHitDoublets, cms.Task(pixelPairStepTrackingRegionsSeedLayersB,pixelPairStepHitDoubletsB))
434 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(PixelPairStepTask, _PixelPairStepTask_pp_on_AA)
435 
436 #fastSim
437 import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
438 pixelPairStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(pixelPairStepClusters)
439 fastSim.toReplaceWith(PixelPairStepTask,
440  cms.Task(pixelPairStepMasks
441  ,pixelPairStepTrackingRegions
442  ,pixelPairStepSeeds
443  ,pixelPairStepTrackCandidates
444  ,pixelPairStepTracks
445  ,pixelPairStep
446  )
447 )