CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
DetachedQuadStep_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg
3 
4 ###############################################
5 # Low pT and detached tracks from pixel quadruplets
6 ###############################################
7 
8 # REMOVE HITS ASSIGNED TO GOOD TRACKS FROM PREVIOUS ITERATIONS
9 detachedQuadStepClusters = _cfg.clusterRemoverForIter("DetachedQuadStep")
10 for _eraName, _postfix, _era in _cfg.nonDefaultEras():
11  _era.toReplaceWith(detachedQuadStepClusters, _cfg.clusterRemoverForIter("DetachedQuadStep", _eraName, _postfix))
12 
13 # SEEDING LAYERS
16 detachedQuadStepSeedLayers = RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi.PixelLayerTriplets.clone(
17  BPix = dict(skipClusters = cms.InputTag('detachedQuadStepClusters')),
18  FPix = dict(skipClusters = cms.InputTag('detachedQuadStepClusters'))
19 )
20 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
21 trackingPhase1.toModify(detachedQuadStepSeedLayers,
22  layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
23 )
24 from Configuration.Eras.Modifier_trackingPhase1QuadProp_cff import trackingPhase1QuadProp
25 trackingPhase1QuadProp.toModify(detachedQuadStepSeedLayers,
26  layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
27 )
28 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
29 trackingPhase2PU140.toModify(detachedQuadStepSeedLayers,
30  layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
31 )
32 
33 # TrackingRegion
34 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpotFixedZ_cfi import globalTrackingRegionFromBeamSpotFixedZ as _globalTrackingRegionFromBeamSpotFixedZ
35 detachedQuadStepTrackingRegions = _globalTrackingRegionFromBeamSpotFixedZ.clone(RegionPSet = dict(
36  ptMin = 0.3,
37  originHalfLength = 15.0,
38  originRadius = 1.5
39 ))
40 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpot_cfi import globalTrackingRegionFromBeamSpot as _globalTrackingRegionFromBeamSpot
41 from Configuration.Eras.Modifier_trackingPhase1PU70_cff import trackingPhase1PU70
42 trackingPhase1PU70.toReplaceWith(detachedQuadStepTrackingRegions, _globalTrackingRegionFromBeamSpot.clone(RegionPSet = dict(
43  ptMin = 0.3,
44  originRadius = 0.5,
45  nSigmaZ = 4.0
46 )))
47 trackingPhase2PU140.toReplaceWith(detachedQuadStepTrackingRegions, _globalTrackingRegionFromBeamSpot.clone(RegionPSet = dict(
48  ptMin = 0.45,
49  originRadius = 0.7,
50  nSigmaZ = 4.0
51 )))
52 
53 # seeding
54 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
55 detachedQuadStepHitDoublets = _hitPairEDProducer.clone(
56  seedingLayers = "detachedQuadStepSeedLayers",
57  trackingRegions = "detachedQuadStepTrackingRegions",
58  maxElement = 0,
59  produceIntermediateHitDoublets = True,
60 )
61 from RecoPixelVertexing.PixelTriplets.pixelTripletLargeTipEDProducer_cfi import pixelTripletLargeTipEDProducer as _pixelTripletLargeTipEDProducer
63 detachedQuadStepHitTriplets = _pixelTripletLargeTipEDProducer.clone(
64  doublets = "detachedQuadStepHitDoublets",
65  produceIntermediateHitTriplets = True,
66 )
67 from RecoPixelVertexing.PixelTriplets.pixelQuadrupletEDProducer_cfi import pixelQuadrupletEDProducer as _pixelQuadrupletEDProducer
68 detachedQuadStepHitQuadruplets = _pixelQuadrupletEDProducer.clone(
69  triplets = "detachedQuadStepHitTriplets",
70  extraHitRZtolerance = detachedQuadStepHitTriplets.extraHitRZtolerance,
71  extraHitRPhitolerance = detachedQuadStepHitTriplets.extraHitRPhitolerance,
72  maxChi2 = dict(
73  pt1 = 0.8, pt2 = 2,
74  value1 = 500, value2 = 100,
75  enabled = True,
76  ),
77  extraPhiTolerance = dict(
78  pt1 = 0.4, pt2 = 1,
79  value1 = 0.2, value2 = 0.05,
80  enabled = True,
81  ),
82  useBendingCorrection = True,
83  fitFastCircle = True,
84  fitFastCircleChi2Cut = True,
85 )
86 from RecoPixelVertexing.PixelTriplets.caHitQuadrupletEDProducer_cfi import caHitQuadrupletEDProducer as _caHitQuadrupletEDProducer
87 trackingPhase1.toModify(detachedQuadStepHitDoublets, layerPairs = [0,1,2]) # layer pairs (0,1), (1,2), (2,3)
88 trackingPhase1.toReplaceWith(detachedQuadStepHitQuadruplets, _caHitQuadrupletEDProducer.clone(
89  doublets = "detachedQuadStepHitDoublets",
90  extraHitRPhitolerance = detachedQuadStepHitTriplets.extraHitRPhitolerance,
91  maxChi2 = dict(
92  pt1 = 0.8, pt2 = 2,
93  value1 = 500, value2 = 100,
94  ),
95  useBendingCorrection = True,
96  fitFastCircle = True,
97  fitFastCircleChi2Cut = True,
98  CAThetaCut = 0.0011,
99  CAPhiCut = 0,
100 ))
101 
102 from RecoPixelVertexing.PixelTriplets.pixelQuadrupletMergerEDProducer_cfi import pixelQuadrupletMergerEDProducer as _pixelQuadrupletMergerEDProducer
104 _detachedQuadStepHitQuadrupletsMerging = _pixelQuadrupletMergerEDProducer.clone(
105  triplets = "detachedQuadStepHitTriplets",
106  layerList = dict(refToPSet_ = cms.string("PixelSeedMergerQuadruplets")),
107 )
108 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer_cff import seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
109 detachedQuadStepSeeds = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone(
110  seedingHitSets = "detachedQuadStepHitQuadruplets",
111  SeedComparitorPSet = dict(# FIXME: is this defined in any cfi that could be imported instead of copy-paste?
112  ComponentName = 'PixelClusterShapeSeedComparitor',
113  FilterAtHelixStage = cms.bool(False),
114  FilterPixelHits = cms.bool(True),
115  FilterStripHits = cms.bool(False),
116  ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter'),
117  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache')
118  ),
119 )
120 # temporary...
121 _detachedQuadStepHitQuadrupletsMerging.SeedCreatorPSet = cms.PSet(
122  ComponentName = cms.string("SeedFromConsecutiveHitsTripletOnlyCreator"),
123  MinOneOverPtError = detachedQuadStepSeeds.MinOneOverPtError,
124  OriginTransverseErrorMultiplier = detachedQuadStepSeeds.OriginTransverseErrorMultiplier,
125  SeedMomentumForBOFF = detachedQuadStepSeeds.SeedMomentumForBOFF,
126  TTRHBuilder = detachedQuadStepSeeds.TTRHBuilder,
127  forceKinematicWithRegionDirection = detachedQuadStepSeeds.forceKinematicWithRegionDirection,
128  magneticField = detachedQuadStepSeeds.magneticField,
129  propagator = detachedQuadStepSeeds.propagator,
130 )
131 _detachedQuadStepHitQuadrupletsMerging.SeedComparitorPSet = detachedQuadStepSeeds.SeedComparitorPSet
132 
133 trackingPhase1PU70.toModify(detachedQuadStepHitTriplets, produceIntermediateHitTriplets=False, produceSeedingHitSets=True)
134 trackingPhase1PU70.toReplaceWith(detachedQuadStepHitQuadruplets, _detachedQuadStepHitQuadrupletsMerging)
135 trackingPhase1PU70.toModify(detachedQuadStepSeeds, SeedComparitorPSet=cms.PSet(ComponentName=cms.string("none")))
136 
137 
138 # QUALITY CUTS DURING TRACK BUILDING
139 import TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff as _TrajectoryFilter_cff
140 _detachedQuadStepTrajectoryFilterBase = _TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
141  minimumNumberOfHits = 3,
142  minPt = 0.075,
143 )
144 detachedQuadStepTrajectoryFilterBase = _detachedQuadStepTrajectoryFilterBase.clone(
145  maxCCCLostHits = 0,
146  minGoodStripCharge = dict(refToPSet_ = 'SiStripClusterChargeCutLoose')
147 )
148 trackingPhase1PU70.toReplaceWith(detachedQuadStepTrajectoryFilterBase,
149  _detachedQuadStepTrajectoryFilterBase.clone(
150  maxLostHitsFraction = 1./10.,
151  constantValueForLostHitsFractionFilter = 0.501,
152  )
153 )
154 trackingPhase2PU140.toReplaceWith(detachedQuadStepTrajectoryFilterBase,
155  _detachedQuadStepTrajectoryFilterBase.clone(
156  maxLostHitsFraction = 1./10.,
157  constantValueForLostHitsFractionFilter = 0.301,
158  )
159 )
160 detachedQuadStepTrajectoryFilter = _TrajectoryFilter_cff.CompositeTrajectoryFilter_block.clone(
161  filters = [cms.PSet(refToPSet_ = cms.string('detachedQuadStepTrajectoryFilterBase'))]
162 )
163 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryFilter,
164  filters = detachedQuadStepTrajectoryFilter.filters.value()+[cms.PSet(refToPSet_ = cms.string('ClusterShapeTrajectoryFilter'))]
165 )
166 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryFilter,
167  filters = detachedQuadStepTrajectoryFilter.filters.value()+[cms.PSet(refToPSet_ = cms.string('ClusterShapeTrajectoryFilter'))]
168 )
169 
170 
171 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
172 detachedQuadStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
173  ComponentName = 'detachedQuadStepChi2Est',
174  nSigma = 3.0,
175  MaxChi2 = 9.0,
176  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTight'),
177 )
178 trackingPhase1PU70.toModify(detachedQuadStepChi2Est,
179  clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")
180 )
181 trackingPhase2PU140.toModify(detachedQuadStepChi2Est,
182  MaxChi2 = 16.0,
183  clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")
184 )
185 
186 
187 # TRACK BUILDING
189 detachedQuadStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
190  MeasurementTrackerName = '',
191  trajectoryFilter = dict(refToPSet_ = 'detachedQuadStepTrajectoryFilter'),
192  maxCand = 3,
193  alwaysUseInvalidHits = True,
194  estimator = 'detachedQuadStepChi2Est',
195  maxDPhiForLooperReconstruction = cms.double(2.0),
196  maxPtForLooperReconstruction = cms.double(0.7)
197 )
198 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryBuilder,
199  maxCand = 2,
200  alwaysUseInvalidHits = False,
201 )
202 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryBuilder,
203  maxCand = 2,
204  alwaysUseInvalidHits = False,
205 )
206 
207 # MAKING OF TRACK CANDIDATES
208 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits
209 detachedQuadStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
210  ComponentName = cms.string('detachedQuadStepTrajectoryCleanerBySharedHits'),
211  fractionShared = cms.double(0.13),
212  allowSharedFirstHit = cms.bool(True)
213 )
214 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryCleanerBySharedHits,
215  fractionShared = 0.095
216 )
217 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryCleanerBySharedHits,
218  fractionShared = 0.09
219 )
220 
222 detachedQuadStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
223  src = 'detachedQuadStepSeeds',
224  clustersToSkip = cms.InputTag('detachedQuadStepClusters'),
225  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
226  numHitsForSeedCleaner = cms.int32(50),
227  onlyPixelHitsForSeedCleaner = cms.bool(True),
228  TrajectoryBuilderPSet = dict(refToPSet_ = 'detachedQuadStepTrajectoryBuilder'),
229  TrajectoryCleaner = 'detachedQuadStepTrajectoryCleanerBySharedHits',
230  doSeedingRegionRebuilding = True,
231  useHitsSplitting = True
232 )
233 trackingPhase2PU140.toModify(detachedQuadStepTrackCandidates,
234  clustersToSkip = None,
235  phase2clustersToSkip = cms.InputTag("detachedQuadStepClusters")
236 )
237 
238 
239 # TRACK FITTING
241 detachedQuadStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
242  AlgorithmName = 'detachedQuadStep',
243  src = 'detachedQuadStepTrackCandidates',
244  Fitter = 'FlexibleKFFittingSmoother',
245 )
246 
247 # TRACK SELECTION AND QUALITY FLAG SETTING.
250 detachedQuadStepClassifier1 = TrackMVAClassifierDetached.clone(
251  src = 'detachedQuadStepTracks',
252  GBRForestLabel = 'MVASelectorIter3_13TeV',
253  qualityCuts = [-0.5,0.0,0.5]
254 )
255 detachedQuadStepClassifier2 = TrackMVAClassifierPrompt.clone(
256  src = 'detachedQuadStepTracks',
257  GBRForestLabel = 'MVASelectorIter0_13TeV',
258  qualityCuts = [-0.2,0.0,0.4]
259 )
260 
261 # For Phase1PU70
262 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
263 detachedQuadStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
264  src = 'detachedQuadStepTracks',
265  trackSelectors = [
266  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
267  name = 'detachedQuadStepVtxLoose',
268  chi2n_par = 0.9,
269  res_par = ( 0.003, 0.001 ),
270  minNumberLayers = 3,
271  d0_par1 = ( 0.9, 3.0 ),
272  dz_par1 = ( 0.9, 3.0 ),
273  d0_par2 = ( 1.0, 3.0 ),
274  dz_par2 = ( 1.0, 3.0 )
275  ),
276  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
277  name = 'detachedQuadStepTrkLoose',
278  chi2n_par = 0.5,
279  res_par = ( 0.003, 0.001 ),
280  minNumberLayers = 3,
281  d0_par1 = ( 1.3, 4.0 ),
282  dz_par1 = ( 1.3, 4.0 ),
283  d0_par2 = ( 1.3, 4.0 ),
284  dz_par2 = ( 1.3, 4.0 )
285  ),
286  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
287  name = 'detachedQuadStepVtxTight',
288  preFilterName = 'detachedQuadStepVtxLoose',
289  chi2n_par = 0.9,
290  res_par = ( 0.003, 0.001 ),
291  minNumberLayers = 3,
292  maxNumberLostLayers = 1,
293  minNumber3DLayers = 3,
294  d0_par1 = ( 0.9, 3.0 ),
295  dz_par1 = ( 0.9, 3.0 ),
296  d0_par2 = ( 0.9, 3.0 ),
297  dz_par2 = ( 0.9, 3.0 )
298  ),
299  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
300  name = 'detachedQuadStepTrkTight',
301  preFilterName = 'detachedQuadStepTrkLoose',
302  chi2n_par = 0.35,
303  res_par = ( 0.003, 0.001 ),
304  minNumberLayers = 5,
305  maxNumberLostLayers = 1,
306  minNumber3DLayers = 4,
307  d0_par1 = ( 1.1, 4.0 ),
308  dz_par1 = ( 1.1, 4.0 ),
309  d0_par2 = ( 1.1, 4.0 ),
310  dz_par2 = ( 1.1, 4.0 )
311  ),
312  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
313  name = 'detachedQuadStepVtx',
314  preFilterName = 'detachedQuadStepVtxTight',
315  chi2n_par = 0.9,
316  res_par = ( 0.003, 0.001 ),
317  minNumberLayers = 3,
318  maxNumberLostLayers = 1,
319  minNumber3DLayers = 3,
320  d0_par1 = ( 0.8, 3.0 ),
321  dz_par1 = ( 0.8, 3.0 ),
322  d0_par2 = ( 0.8, 3.0 ),
323  dz_par2 = ( 0.8, 3.0 )
324  ),
325  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
326  name = 'detachedQuadStepTrk',
327  preFilterName = 'detachedQuadStepTrkTight',
328  chi2n_par = 0.2,
329  res_par = ( 0.003, 0.001 ),
330  minNumberLayers = 5,
331  maxNumberLostLayers = 0,
332  minNumber3DLayers = 4,
333  d0_par1 = ( 0.9, 4.0 ),
334  dz_par1 = ( 0.9, 4.0 ),
335  d0_par2 = ( 0.8, 4.0 ),
336  dz_par2 = ( 0.8, 4.0 )
337  )
338  ]
339 ) #end of clone
340 
341 trackingPhase2PU140.toModify(detachedQuadStepSelector,
342  trackSelectors= cms.VPSet(
343  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
344  name = 'detachedQuadStepVtxLoose',
345  chi2n_par = 1.0,
346  res_par = ( 0.003, 0.001 ),
347  minNumberLayers = 3,
348  d0_par1 = ( 0.9, 3.0 ),
349  dz_par1 = ( 0.9, 3.0 ),
350  d0_par2 = ( 1.0, 3.0 ),
351  dz_par2 = ( 1.0, 3.0 )
352  ),
353  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
354  name = 'detachedQuadStepTrkLoose',
355  chi2n_par = 0.6,
356  res_par = ( 0.003, 0.001 ),
357  minNumberLayers = 3,
358  d0_par1 = ( 1.3, 4.0 ),
359  dz_par1 = ( 1.3, 4.0 ),
360  d0_par2 = ( 1.3, 4.0 ),
361  dz_par2 = ( 1.3, 4.0 )
362  ),
363  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
364  name = 'detachedQuadStepVtxTight',
365  preFilterName = 'detachedQuadStepVtxLoose',
366  chi2n_par = 0.9,
367  res_par = ( 0.003, 0.001 ),
368  minNumberLayers = 3,
369  maxNumberLostLayers = 1,
370  minNumber3DLayers = 3,
371  d0_par1 = ( 0.9, 3.0 ),
372  dz_par1 = ( 0.9, 3.0 ),
373  d0_par2 = ( 0.9, 3.0 ),
374  dz_par2 = ( 0.9, 3.0 )
375  ),
376  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
377  name = 'detachedQuadStepTrkTight',
378  preFilterName = 'detachedQuadStepTrkLoose',
379  chi2n_par = 0.5,
380  res_par = ( 0.003, 0.001 ),
381  minNumberLayers = 4,
382  maxNumberLostLayers = 1,
383  minNumber3DLayers = 3,
384  d0_par1 = ( 1.1, 4.0 ),
385  dz_par1 = ( 1.1, 4.0 ),
386  d0_par2 = ( 1.1, 4.0 ),
387  dz_par2 = ( 1.1, 4.0 )
388  ),
389  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
390  name = 'detachedQuadStepVtx',
391  preFilterName = 'detachedQuadStepVtxTight',
392  chi2n_par = 0.9,
393  res_par = ( 0.003, 0.001 ),
394  minNumberLayers = 3,
395  maxNumberLostLayers = 1,
396  minNumber3DLayers = 3,
397  d0_par1 = ( 0.8, 3.0 ),
398  dz_par1 = ( 0.8, 3.0 ),
399  d0_par2 = ( 0.8, 3.0 ),
400  dz_par2 = ( 0.8, 3.0 )
401  ),
402  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
403  name = 'detachedQuadStepTrk',
404  preFilterName = 'detachedQuadStepTrkTight',
405  chi2n_par = 0.45,
406  res_par = ( 0.003, 0.001 ),
407  minNumberLayers = 4,
408  maxNumberLostLayers = 0,
409  minNumber3DLayers = 3,
410  d0_par1 = ( 0.8, 4.0 ),
411  dz_par1 = ( 0.8, 4.0 ),
412  d0_par2 = ( 0.8, 4.0 ),
413  dz_par2 = ( 0.8, 4.0 )
414  )
415  ), #end of vpset
416  vertices = "pixelVertices"
417  ) #end of clone
418 
420 detachedQuadStep = ClassifierMerger.clone()
421 detachedQuadStep.inputClassifiers=['detachedQuadStepClassifier1','detachedQuadStepClassifier2']
422 
424 trackingPhase1PU70.toReplaceWith(detachedQuadStep, RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
425  TrackProducers = [
426  'detachedQuadStepTracks',
427  'detachedQuadStepTracks',
428  ],
429  hasSelector = [1,1],
430  shareFrac = cms.double(0.095),
431  indivShareFrac = [0.095, 0.095],
432  selectedTrackQuals = [
433  cms.InputTag("detachedQuadStepSelector","detachedQuadStepVtx"),
434  cms.InputTag("detachedQuadStepSelector","detachedQuadStepTrk")
435  ],
436  setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )],
437  writeOnlyTrkQuals = True
438 ))
439 
440 trackingPhase2PU140.toReplaceWith(detachedQuadStep, RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
441  TrackProducers = cms.VInputTag(cms.InputTag('detachedQuadStepTracks'),
442  cms.InputTag('detachedQuadStepTracks')),
443  hasSelector=cms.vint32(1,1),
444  shareFrac = cms.double(0.09),
445  indivShareFrac=cms.vdouble(0.09,0.09),
446  selectedTrackQuals = cms.VInputTag(cms.InputTag("detachedQuadStepSelector","detachedQuadStepVtx"),
447  cms.InputTag("detachedQuadStepSelector","detachedQuadStepTrk")),
448  setsToMerge = cms.VPSet(cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )),
449  writeOnlyTrkQuals=cms.bool(True)
450  )
451 )
452 
453 DetachedQuadStep = cms.Sequence(detachedQuadStepClusters*
454  detachedQuadStepSeedLayers*
455  detachedQuadStepTrackingRegions*
456  detachedQuadStepHitDoublets*
457  detachedQuadStepHitTriplets*
458  detachedQuadStepHitQuadruplets*
459  detachedQuadStepSeeds*
460  detachedQuadStepTrackCandidates*
461  detachedQuadStepTracks*
462  detachedQuadStepClassifier1*detachedQuadStepClassifier2*
463  detachedQuadStep)
464 trackingPhase1.toReplaceWith(DetachedQuadStep, DetachedQuadStep.copyAndExclude([detachedQuadStepHitTriplets]))
465 _DetachedQuadStep_Phase1PU70 = DetachedQuadStep.copyAndExclude([detachedQuadStepClassifier1])
466 _DetachedQuadStep_Phase1PU70.replace(detachedQuadStepClassifier2, detachedQuadStepSelector)
467 trackingPhase1PU70.toReplaceWith(DetachedQuadStep, _DetachedQuadStep_Phase1PU70)
468 trackingPhase2PU140.toReplaceWith(DetachedQuadStep, _DetachedQuadStep_Phase1PU70)