CMS 3D CMS Logo

ConversionStep_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
4 
7 
8 from RecoLocalTracker.SubCollectionProducers.trackClusterRemover_cfi import trackClusterRemover as _trackClusterRemover
9 _convClustersBase = _trackClusterRemover.clone(
10  maxChi2 = cms.double(30.0),
11  trajectories = cms.InputTag("tobTecStepTracks"),
12  pixelClusters = cms.InputTag("siPixelClusters"),
13  stripClusters = cms.InputTag("siStripClusters"),
14  oldClusterRemovalInfo = cms.InputTag("tobTecStepClusters"),
15  TrackQuality = cms.string('highPurity'),
16 )
17 convClusters = _convClustersBase.clone(
18  trackClassifier = cms.InputTag('tobTecStep',"QualityMasks"),
19 )
20 from Configuration.Eras.Modifier_trackingPhase1PU70_cff import trackingPhase1PU70
21 trackingPhase1PU70.toReplaceWith(convClusters, _convClustersBase.clone(
22  overrideTrkQuals = "tobTecStepSelector:tobTecStep",
23 ))
24 
25 #Phase2 : configuring the phase2 track Cluster Remover
26 from RecoLocalTracker.SubCollectionProducers.phase2trackClusterRemover_cfi import phase2trackClusterRemover as _phase2trackClusterRemover
27 from Configuration.Eras.Modifier_trackingPhase2PU140_cff import trackingPhase2PU140
28 trackingPhase2PU140.toReplaceWith(convClusters, _phase2trackClusterRemover.clone(
29  maxChi2 = 30.0,
30  phase2pixelClusters = "siPixelClusters",
31  phase2OTClusters = "siPhase2Clusters",
32  TrackQuality = 'highPurity',
33  minNumberOfLayersWithMeasBeforeFiltering = 0,
34  trajectories = cms.InputTag("detachedQuadStepTracks"),
35  oldClusterRemovalInfo = cms.InputTag("detachedQuadStepClusters"),
36  overrideTrkQuals = cms.InputTag("detachedQuadStepSelector","detachedQuadStepTrk"),
37  )
38 )
39 
40 convLayerPairs = cms.EDProducer("SeedingLayersEDProducer",
41  layerList = cms.vstring('BPix1+BPix2',
42 
43  'BPix2+BPix3',
44  'BPix2+FPix1_pos',
45  'BPix2+FPix1_neg',
46  'BPix2+FPix2_pos',
47  'BPix2+FPix2_neg',
48 
49  'FPix1_pos+FPix2_pos',
50  'FPix1_neg+FPix2_neg',
51 
52  'BPix3+TIB1',
53  'BPix3+TIB2',
54 
55  'TIB1+TID1_pos',
56  'TIB1+TID1_neg',
57  'TIB1+TID2_pos',
58  'TIB1+TID2_neg',
59  'TIB1+TIB2',
60  'TIB1+TIB3',
61 
62  'TIB2+TID1_pos',
63  'TIB2+TID1_neg',
64  'TIB2+TID2_pos',
65  'TIB2+TID2_neg',
66  'TIB2+TIB3',
67  'TIB2+TIB4',
68 
69  'TIB3+TIB4',
70  'TIB3+TOB1',
71  'TIB3+TID1_pos',
72  'TIB3+TID1_neg',
73 
74  'TIB4+TOB1',
75  'TIB4+TOB2',
76 
77  'TOB1+TOB2',
78  'TOB1+TOB3',
79  'TOB1+TEC1_pos',
80  'TOB1+TEC1_neg',
81 
82  'TOB2+TOB3',
83  'TOB2+TOB4',
84  'TOB2+TEC1_pos',
85  'TOB2+TEC1_neg',
86 
87  #NB: re-introduce these combinations when large displaced
88  # tracks, reconstructed only in TOB will be available
89  # For instance think at the OutIn Ecal Seeded tracks
90  #'TOB3+TOB4',
91  #'TOB3+TOB5',
92  #'TOB3+TEC1_pos',
93  #'TOB3+TEC1_neg',
94  #
95  #'TOB4+TOB5',
96  #'TOB4+TOB6',
97  #
98  #'TOB5+TOB6',
99 
100  'TID1_pos+TID2_pos',
101  'TID2_pos+TID3_pos',
102  'TID3_pos+TEC1_pos',
103 
104  'TID1_neg+TID2_neg',
105  'TID2_neg+TID3_neg',
106  'TID3_neg+TEC1_neg',
107 
108  'TEC1_pos+TEC2_pos',
109  'TEC2_pos+TEC3_pos',
110  'TEC3_pos+TEC4_pos',
111  'TEC4_pos+TEC5_pos',
112  'TEC5_pos+TEC6_pos',
113  'TEC6_pos+TEC7_pos',
114  'TEC7_pos+TEC8_pos',
115 
116  'TEC1_neg+TEC2_neg',
117  'TEC2_neg+TEC3_neg',
118  'TEC3_neg+TEC4_neg',
119  'TEC4_neg+TEC5_neg',
120  'TEC5_neg+TEC6_neg',
121  'TEC6_neg+TEC7_neg',
122  'TEC7_neg+TEC8_neg'
123  #other combinations could be added
124  ),
125 
126  BPix = cms.PSet(
127  TTRHBuilder = cms.string('WithTrackAngle'),
128  HitProducer = cms.string('siPixelRecHits'),
129  skipClusters = cms.InputTag('convClusters'),
130  ),
131  FPix = cms.PSet(
132  TTRHBuilder = cms.string('WithTrackAngle'),
133  HitProducer = cms.string('siPixelRecHits'),
134  skipClusters = cms.InputTag('convClusters'),
135  ),
136  TIB1 = cms.PSet(
137  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
138  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
139  skipClusters = cms.InputTag('convClusters'),
140  ),
141  TIB2 = cms.PSet(
142  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
143  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
144  skipClusters = cms.InputTag('convClusters'),
145  ),
146  TIB3 = cms.PSet(
147  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
148  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
149  skipClusters = cms.InputTag('convClusters'),
150  ),
151  TIB4 = cms.PSet(
152  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
153  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
154  skipClusters = cms.InputTag('convClusters'),
155  ),
156  TID1 = cms.PSet(
157  useSimpleRphiHitsCleaner = cms.bool(False),
158  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
159  useRingSlector = cms.bool(True),
160  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
161  maxRing = cms.int32(2),
162  minRing = cms.int32(1),
163  skipClusters = cms.InputTag('convClusters'),
164  ),
165  TID2 = cms.PSet(
166  useSimpleRphiHitsCleaner = cms.bool(False),
167  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
168  useRingSlector = cms.bool(True),
169  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
170  maxRing = cms.int32(2),
171  minRing = cms.int32(1),
172  skipClusters = cms.InputTag('convClusters'),
173  ),
174  TID3 = cms.PSet(
175  useSimpleRphiHitsCleaner = cms.bool(False),
176  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
177  useRingSlector = cms.bool(True),
178  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
179  maxRing = cms.int32(2),
180  minRing = cms.int32(1),
181  skipClusters = cms.InputTag('convClusters'),
182  ),
183  TEC = cms.PSet(
184  useSimpleRphiHitsCleaner = cms.bool(False),
185  minRing = cms.int32(1),
186  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
187  useRingSlector = cms.bool(True),
188  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
189  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHitUnmatched"),
190  maxRing = cms.int32(7),
191  stereoRecHits = cms.InputTag("siStripMatchedRecHits","stereoRecHitUnmatched"),
192  skipClusters = cms.InputTag('convClusters'),
193  ),
194  TOB1 = cms.PSet(
195  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
196  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
197  skipClusters = cms.InputTag('convClusters'),
198  ),
199  TOB2 = cms.PSet(
200  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
201  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
202  skipClusters = cms.InputTag('convClusters'),
203  ),
204  TOB3 = cms.PSet(
205  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
206  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
207  skipClusters = cms.InputTag('convClusters'),
208  ),
209  TOB4 = cms.PSet(
210  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
211  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
212  skipClusters = cms.InputTag('convClusters'),
213  ),
214  TOB5 = cms.PSet(
215  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
216  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
217  skipClusters = cms.InputTag('convClusters'),
218  ),
219  TOB6 = cms.PSet(
220  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
221  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
222  skipClusters = cms.InputTag('convClusters'),
223  )
224  )
225 trackingPhase1PU70.toModify(convLayerPairs,
226  layerList = [
227  'BPix1+BPix2',
228 
229  'BPix2+BPix3',
230  'BPix2+FPix1_pos',
231  'BPix2+FPix1_neg',
232  'BPix2+FPix2_pos',
233  'BPix2+FPix2_neg',
234 
235  'FPix1_pos+FPix2_pos',
236  'FPix1_neg+FPix2_neg',
237 
238  'BPix3+TIB1',
239  'BPix3+TIB2',
240 
241  'TIB1+TID1_pos',
242  'TIB1+TID1_neg',
243  'TIB1+TID2_pos',
244  'TIB1+TID2_neg',
245  'TIB1+TIB2',
246  'TIB1+TIB3',
247 
248  'TIB2+TID1_pos',
249  'TIB2+TID1_neg',
250  'TIB2+TID2_pos',
251  'TIB2+TID2_neg',
252  'TIB2+TIB3',
253  'TIB2+TIB4',
254 
255  'TIB3+TIB4',
256  'TIB3+TOB1',
257  'TIB3+TID1_pos',
258  'TIB3+TID1_neg',
259 
260  'TIB4+TOB1',
261  'TIB4+TOB2',
262 
263  'TOB1+TOB2',
264  'TOB1+TOB3',
265  'TOB1+TEC1_pos',
266  'TOB1+TEC1_neg',
267 
268  'TOB2+TOB3',
269  'TOB2+TOB4',
270  'TOB2+TEC1_pos',
271  'TOB2+TEC1_neg',
272 
273  #NB: re-introduce these combinations when large displaced
274  # tracks, reconstructed only in TOB will be available
275  # For instance think at the OutIn Ecal Seeded tracks
276  #'TOB3+TOB4',
277  #'TOB3+TOB5',
278  #'TOB3+TEC1_pos',
279  #'TOB3+TEC1_neg',
280  #
281  #'TOB4+TOB5',
282  #'TOB4+TOB6',
283  #
284  #'TOB5+TOB6',
285 
286  'TID1_pos+TID2_pos',
287  'TID2_pos+TID3_pos',
288  'TID3_pos+TEC1_pos',
289 
290  'TID1_neg+TID2_neg',
291  'TID2_neg+TID3_neg',
292  'TID3_neg+TEC1_neg',
293 
294  'TEC1_pos+TEC2_pos',
295  'TEC2_pos+TEC3_pos',
296  'TEC3_pos+TEC4_pos',
297  'TEC4_pos+TEC5_pos',
298  'TEC5_pos+TEC6_pos',
299  'TEC6_pos+TEC7_pos',
300  'TEC7_pos+TEC8_pos',
301 
302  'TEC1_neg+TEC2_neg',
303  'TEC2_neg+TEC3_neg',
304  'TEC3_neg+TEC4_neg',
305  'TEC4_neg+TEC5_neg',
306  'TEC5_neg+TEC6_neg',
307  'TEC6_neg+TEC7_neg',
308  'TEC7_neg+TEC8_neg'
309  #other combinations could be added
310  ],
311  BPix = dict(TTRHBuilder = "TTRHBuilderWithoutAngle4PixelPairs"),
312  FPix = dict(TTRHBuilder = "TTRHBuilderWithoutAngle4PixelPairs"),
313  TIB1 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
314  TIB2 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
315  TIB3 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
316  TIB4 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
317  TID1 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
318  TID2 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
319  TID3 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
320  TEC = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
321  TOB1 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
322  TOB2 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
323  TOB3 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
324  TOB4 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
325  TOB5 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
326  TOB6 = dict(clusterChargeCut = dict(refToPSet_ = "SiStripClusterChargeCutNone")),
327 )
328 trackingPhase2PU140.toReplaceWith(convLayerPairs, cms.EDProducer("SeedingLayersEDProducer",
329  layerList = cms.vstring('BPix1+BPix2',
330  'BPix2+BPix3',
331  'BPix3+BPix4',
332 
333  'BPix1+FPix1_pos',
334  'BPix1+FPix1_neg',
335  'BPix2+FPix1_pos',
336  'BPix2+FPix1_neg',
337  'BPix3+FPix1_pos',
338  'BPix3+FPix1_neg',
339 
340  'FPix1_pos+FPix2_pos',
341  'FPix1_neg+FPix2_neg',
342  'FPix2_pos+FPix3_pos',
343  'FPix2_neg+FPix3_neg'
344  ),
345 
346  BPix = cms.PSet(
347  hitErrorRZ = cms.double(0.006),
348  hitErrorRPhi = cms.double(0.0027),
349  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
350  HitProducer = cms.string('siPixelRecHits'),
351  useErrorsFromParam = cms.bool(True),
352  skipClusters = cms.InputTag('convClusters'),
353  ),
354  FPix = cms.PSet(
355  hitErrorRZ = cms.double(0.0036),
356  hitErrorRPhi = cms.double(0.0051),
357  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
358  HitProducer = cms.string('siPixelRecHits'),
359  useErrorsFromParam = cms.bool(True),
360  skipClusters = cms.InputTag('convClusters'),
361  )
362  )
363 )
364 
365 photonConvTrajSeedFromSingleLeg.TrackRefitter = cms.InputTag('generalTracks')
366 photonConvTrajSeedFromSingleLeg.primaryVerticesTag = cms.InputTag('firstStepPrimaryVertices')
367 #photonConvTrajSeedFromQuadruplets.TrackRefitter = cms.InputTag('generalTracks')
368 #photonConvTrajSeedFromQuadruplets.primaryVerticesTag = cms.InputTag('pixelVertices')
369 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
370 trackingLowPU.toModify(photonConvTrajSeedFromSingleLeg, primaryVerticesTag = "pixelVertices")
371 trackingPhase1PU70.toModify(photonConvTrajSeedFromSingleLeg, primaryVerticesTag = "pixelVertices")
372 trackingPhase2PU140.toModify(photonConvTrajSeedFromSingleLeg, primaryVerticesTag = "pixelVertices")
373 
374 # TRACKER DATA CONTROL
375 
376 # QUALITY CUTS DURING TRACK BUILDING
378 convCkfTrajectoryFilter = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
379  maxLostHits = 1,
380  minimumNumberOfHits = 3,
381  minPt = 0.1
382  )
383 
384 
385 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
386 convStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
387  ComponentName = cms.string('convStepChi2Est'),
388  nSigma = cms.double(3.0),
389  MaxChi2 = cms.double(30.0),
390  MaxDisplacement = cms.double(100),
391  MaxSagitta = cms.double(-1.),
392  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight'))
393 )
394 
395 
396 # TRACK BUILDING
398 _convCkfTrajectoryBuilderBase = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
399  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('convCkfTrajectoryFilter')),
400  minNrOfHitsForRebuild = 3,
401  maxCand = 1,
402 )
403 convCkfTrajectoryBuilder = _convCkfTrajectoryBuilderBase.clone(
404  estimator = cms.string('convStepChi2Est')
405  )
406 trackingPhase1PU70.toReplaceWith(convCkfTrajectoryBuilder, _convCkfTrajectoryBuilderBase.clone(
407  maxCand = 2,
408 ))
409 trackingPhase2PU140.toReplaceWith(convCkfTrajectoryBuilder, _convCkfTrajectoryBuilderBase.clone(
410  maxCand = 2,
411 ))
412 
413 # MAKING OF TRACK CANDIDATES
415 convTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
416  src = cms.InputTag('photonConvTrajSeedFromSingleLeg:convSeedCandidates'),
417  clustersToSkip = cms.InputTag('convClusters'),
418  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('convCkfTrajectoryBuilder'))
419 )
420 trackingPhase2PU140.toModify(convTrackCandidates,
421  clustersToSkip = None,
422  phase2clustersToSkip = cms.InputTag("convClusters")
423 )
424 
426 convStepFitterSmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.KFFittingSmootherWithOutliersRejectionAndRK.clone(
427  ComponentName = 'convStepFitterSmoother',
428  EstimateCut = 30,
429  Smoother = cms.string('convStepRKSmoother')
430  )
431 
432 convStepRKTrajectorySmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.RKTrajectorySmoother.clone(
433  ComponentName = cms.string('convStepRKSmoother'),
434  errorRescaling = 10.0
435  )
436 
437 
438 # TRACK FITTING
440 convStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
441  src = 'convTrackCandidates',
442  AlgorithmName = cms.string('conversionStep'),
443  Fitter = 'convStepFitterSmoother',
444  )
445 
446 
447 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
448 convStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
449  src='convStepTracks',
450  trackSelectors= cms.VPSet(
451  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
452  name = 'convStepLoose',
453  applyAdaptedPVCuts = False,
454  chi2n_par = 3.0,
455  res_par = ( 0.003, 0.001 ),
456  minNumberLayers = 3,
457  maxNumberLostLayers = 1,
458  minNumber3DLayers = 1,
459  d0_par1 = ( 5., 8.0 ), # not sure these values are sane....
460  dz_par1 = ( 5., 8.0 ),
461  d0_par2 = ( 5., 8.0 ),
462  dz_par2 = ( 5., 8.0 )
463  ),
464  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
465  name = 'convStepTight',
466  preFilterName = 'convStepLoose',
467  chi2n_par = 2.5,
468  res_par = ( 0.003, 0.001 ),
469  minNumberLayers = 3,
470  maxNumberLostLayers = 1,
471  minNumber3DLayers = 1,
472  d0_par1 = ( 5., 8.0 ),
473  dz_par1 = ( 5., 8.0 ),
474  d0_par2 = ( 5., 8.0 ),
475  dz_par2 = ( 5., 8.0 )
476  ),
477  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
478  name = 'convStep',
479  preFilterName = 'convStepTight',
480  chi2n_par = 2.0,
481  res_par = ( 0.003, 0.001 ),
482  minNumberLayers = 3,
483  maxNumberLostLayers = 1,
484  minNumber3DLayers = 1,
485  d0_par1 = ( 5., 8.0 ),
486  dz_par1 = ( 5., 8.0 ),
487  d0_par2 = ( 5., 8.0 ),
488  dz_par2 = ( 5., 8.0 )
489  ),
490  ) #end of vpset
491  ) #end of clone
492 
493 ConvStep = cms.Sequence( convClusters
494  + convLayerPairs
495  + photonConvTrajSeedFromSingleLeg
496  + convTrackCandidates
497  + convStepTracks
498  + convStepSelector
499  #+ Conv2Step #full quad-seeding sequence
500  )
501 
502 
503 ### Quad-seeding sequence disabled (#+ Conv2Step)
504 # if enabled, the quad-seeded tracks have to be merged with the single-leg seeded tracks
505 # in RecoTracker.FinalTrackSelectors.MergeTrackCollections_cff change:
506 ###
507 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
508 # TrackProducers = cms.VInputTag(cms.InputTag('convStepTracks')),
509 # hasSelector=cms.vint32(1),
510 # selectedTrackQuals = cms.VInputTag(cms.InputTag("convStepSelector","convStep")
511 # ),
512 # setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(1), pQual=cms.bool(True) )
513 # ),
514 # copyExtras = True,
515 # makeReKeyedSeeds = cms.untracked.bool(False)
516 # )
517 ###
518 # TO this:
519 ###
520 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
521 # TrackProducers = cms.VInputTag(
522 # cms.InputTag('convStepTracks'),
523 # cms.InputTag('conv2StepTracks')
524 # ),
525 # hasSelector=cms.vint32(1,1),
526 # selectedTrackQuals = cms.VInputTag(
527 # cms.InputTag("convStepSelector","convStep"),
528 # cms.InputTag("conv2StepSelector","conv2Step")
529 # ),
530 # setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )
531 # ),
532 # copyExtras = True,
533 # makeReKeyedSeeds = cms.untracked.bool(False)
534 # )
535 ###