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 
339 # For LowPU and Phase2PU140
341 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
342 pixelPairStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
343  src='pixelPairStepTracks',
344  useAnyMVA = cms.bool(True),
345  GBRForestLabel = cms.string('MVASelectorIter2'),
346  trackSelectors= cms.VPSet(
347  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
348  name = 'pixelPairStepLoose',
349  ), #end of pset
350  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
351  name = 'pixelPairStepTight',
352  preFilterName = 'pixelPairStepLoose',
353  ),
354  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
355  name = 'QualityMasks',
356  preFilterName = 'pixelPairStepTight',
357  ),
358  ),
359  vertices = cms.InputTag("pixelVertices")#end of vpset
360 ) #end of clone
361 trackingPhase2PU140.toModify(pixelPairStepSelector,
362  useAnyMVA = None,
363  GBRForestLabel = None,
364  trackSelectors= cms.VPSet(
365  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
366  name = 'pixelPairStepLoose',
367  chi2n_par = 0.7,
368  res_par = ( 0.003, 0.002 ),
369  minNumberLayers = 3,
370  maxNumberLostLayers = 2,
371  minNumber3DLayers = 3,
372  d0_par1 = ( 0.4, 4.0 ),
373  dz_par1 = ( 0.4, 4.0 ),
374  d0_par2 = ( 0.6, 4.0 ),
375  dz_par2 = ( 0.45, 4.0 )
376  ), #end of pset
377  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
378  name = 'pixelPairStepTight',
379  preFilterName = 'pixelPairStepLoose',
380  chi2n_par = 0.6,
381  res_par = ( 0.003, 0.002 ),
382  minNumberLayers = 4,
383  maxNumberLostLayers = 2,
384  minNumber3DLayers = 3,
385  d0_par1 = ( 0.35, 4.0 ),
386  dz_par1 = ( 0.35, 4.0 ),
387  d0_par2 = ( 0.5, 4.0 ),
388  dz_par2 = ( 0.4, 4.0 )
389  ),
390  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
391  name = 'pixelPairStep',
392  preFilterName = 'pixelPairStepTight',
393  chi2n_par = 0.5,
394  res_par = ( 0.003, 0.001 ),
395  minNumberLayers = 5,
396  maxNumberLostLayers = 2,
397  minNumber3DLayers = 4,
398  d0_par1 = ( 0.3, 4.0 ),
399  dz_par1 = ( 0.3, 4.0 ),
400  d0_par2 = ( 0.45, 4.0 ),
401  dz_par2 = ( 0.35, 4.0 )
402  ),
403  ), #end of vpset
404  vertices = "firstStepPrimaryVertices"
405 ) #end of clone
406 
407 
408 # Final sequence
409 PixelPairStepTask = cms.Task(pixelPairStepClusters,
410  pixelPairStepSeedLayers,
411  pixelPairStepTrackingRegions,
412  pixelPairStepHitDoublets,
413  pixelPairStepSeeds,
414  pixelPairStepTrackCandidates,
415  pixelPairStepTracks,
416  pixelPairStep)
417 PixelPairStep = cms.Sequence(PixelPairStepTask)
418 
419 _PixelPairStepTask_LowPU_Phase2PU140 = PixelPairStepTask.copy()
420 _PixelPairStepTask_LowPU_Phase2PU140.replace(pixelPairStep, pixelPairStepSelector)
421 trackingLowPU.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_LowPU_Phase2PU140)
422 trackingPhase2PU140.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_LowPU_Phase2PU140)
423 
424 _PixelPairStepTask_Phase1 = PixelPairStepTask.copy()
425 _PixelPairStepTask_pp_on_AA = PixelPairStepTask.copy()
426 _PixelPairStepTask_Phase1.replace(pixelPairStepSeeds,cms.Task(
427  pixelPairStepSeedsA ,
428  pixelPairStepTrackingRegionsSeedLayersB,pixelPairStepHitDoubletsB,pixelPairStepSeedsB,
429  pixelPairStepSeeds))
430 trackingPhase1.toReplaceWith(PixelPairStepTask, _PixelPairStepTask_Phase1)
431 
432 _PixelPairStepTask_pp_on_AA.replace(pixelPairStepHitDoublets, cms.Task(pixelPairStepTrackingRegionsSeedLayersB,pixelPairStepHitDoubletsB))
433 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(PixelPairStepTask, _PixelPairStepTask_pp_on_AA)
434 
435 #fastSim
436 import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
437 pixelPairStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(pixelPairStepClusters)
438 fastSim.toReplaceWith(PixelPairStepTask,
439  cms.Task(pixelPairStepMasks
440  ,pixelPairStepTrackingRegions
441  ,pixelPairStepSeeds
442  ,pixelPairStepTrackCandidates
443  ,pixelPairStepTracks
444  ,pixelPairStep
445  )
446 )