CMS 3D CMS Logo

TobTecStep_cff.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg
3 from Configuration.Eras.Modifier_fastSim_cff import fastSim
4 
5 #for dnn classifier
6 from Configuration.ProcessModifiers.trackdnn_cff import trackdnn
7 
8 #######################################################################
9 # Very large impact parameter tracking using TOB + TEC ring 5 seeding #
10 #######################################################################
11 
12 tobTecStepClusters = _cfg.clusterRemoverForIter("TobTecStep")
13 for _eraName, _postfix, _era in _cfg.nonDefaultEras():
14  _era.toReplaceWith(tobTecStepClusters, _cfg.clusterRemoverForIter("TobTecStep", _eraName, _postfix))
15 
16 # TRIPLET SEEDING LAYERS
18 tobTecStepSeedLayersTripl = cms.EDProducer("SeedingLayersEDProducer",
19  layerList = cms.vstring(
20  #TOB
21  'TOB1+TOB2+MTOB3','TOB1+TOB2+MTOB4',
22  #TOB+MTEC
23  'TOB1+TOB2+MTEC1_pos','TOB1+TOB2+MTEC1_neg',
24  ),
25  TOB = cms.PSet(
26  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
27  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
28  skipClusters = cms.InputTag('tobTecStepClusters')
29  ),
30  MTOB = cms.PSet(
31  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
32  skipClusters = cms.InputTag('tobTecStepClusters'),
33  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit")
34  ),
35  MTEC = cms.PSet(
36  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
37  skipClusters = cms.InputTag('tobTecStepClusters'),
38  useRingSlector = cms.bool(True),
39  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
40  minRing = cms.int32(6),
41  maxRing = cms.int32(7)
42  )
43 )
44 
45 # Triplet TrackingRegion
46 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpotFixedZ_cfi import globalTrackingRegionFromBeamSpotFixedZ as _globalTrackingRegionFromBeamSpotFixedZ
47 tobTecStepTrackingRegionsTripl = _globalTrackingRegionFromBeamSpotFixedZ.clone(RegionPSet = dict(
48  ptMin = 0.55,
49  originHalfLength = 20.0,
50  originRadius = 3.5
51 ))
52 
53 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
54 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
55 from RecoTracker.IterativeTracking.MixedTripletStep_cff import _mixedTripletStepTrackingRegionsCommon_pp_on_HI
56 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(tobTecStepTrackingRegionsTripl,
57  _mixedTripletStepTrackingRegionsCommon_pp_on_HI.clone(RegionPSet=dict(
58  ptMinScaling4BigEvts= False,
59  fixedError = 5.0,
60  ptMin = 2.0,
61  originRadius = 3.5
62  ) )
63 )
64 
65 # Triplet seeding
66 from RecoPixelVertexing.PixelLowPtUtilities.ClusterShapeHitFilterESProducer_cfi import ClusterShapeHitFilterESProducer as _ClusterShapeHitFilterESProducer
67 tobTecStepClusterShapeHitFilter = _ClusterShapeHitFilterESProducer.clone(
68  ComponentName = 'tobTecStepClusterShapeHitFilter',
69  doStripShapeCut = cms.bool(False),
70  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTight')
71 )
72 
73 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
74 tobTecStepHitDoubletsTripl = _hitPairEDProducer.clone(
75  seedingLayers = "tobTecStepSeedLayersTripl",
76  trackingRegions = "tobTecStepTrackingRegionsTripl",
77  maxElement = 50000000,
78  produceIntermediateHitDoublets = True,
79 )
80 from RecoTracker.TkSeedGenerator.multiHitFromChi2EDProducer_cfi import multiHitFromChi2EDProducer as _multiHitFromChi2EDProducer
81 tobTecStepHitTripletsTripl = _multiHitFromChi2EDProducer.clone(
82  doublets = "tobTecStepHitDoubletsTripl",
83  extraPhiKDBox = 0.01,
84 )
85 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsEDProducer_cff import seedCreatorFromRegionConsecutiveHitsEDProducer as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
86 from RecoPixelVertexing.PixelLowPtUtilities.StripSubClusterShapeSeedFilter_cfi import StripSubClusterShapeSeedFilter as _StripSubClusterShapeSeedFilter
87 _tobTecStepSeedComparitorPSet = dict(
88  ComponentName = 'CombinedSeedComparitor',
89  mode = cms.string("and"),
90  comparitors = cms.VPSet(
91  cms.PSet(# FIXME: is this defined in any cfi that could be imported instead of copy-paste?
92  ComponentName = cms.string('PixelClusterShapeSeedComparitor'),
93  FilterAtHelixStage = cms.bool(True),
94  FilterPixelHits = cms.bool(False),
95  FilterStripHits = cms.bool(True),
96  ClusterShapeHitFilterName = cms.string('tobTecStepClusterShapeHitFilter'),
97  ClusterShapeCacheSrc = cms.InputTag("siPixelClusterShapeCache") # not really needed here since FilterPixelHits=False
98  ),
99  _StripSubClusterShapeSeedFilter.clone()
100  )
101 )
102 tobTecStepSeedsTripl = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone(#empirically better than 'SeedFromConsecutiveHitsTripletOnlyCreator'
103  seedingHitSets = "tobTecStepHitTripletsTripl",
104  SeedComparitorPSet = _tobTecStepSeedComparitorPSet,
105 )
106 #fastsim
107 import FastSimulation.Tracking.TrajectorySeedProducer_cfi
108 _fastSim_tobTecStepSeedsTripl = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
109  trackingRegions = "tobTecStepTrackingRegionsTripl",
110  hitMasks = cms.InputTag("tobTecStepMasks"),
111 )
112 from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet
113 _fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(tobTecStepHitTripletsTripl)
114 _fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.SeedComparitorPSet=cms.PSet( ComponentName = cms.string( "none" ) )
115 _fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False
116 _fastSim_tobTecStepSeedsTripl.seedFinderSelector.layerList = tobTecStepSeedLayersTripl.layerList.value()
117 fastSim.toReplaceWith(tobTecStepSeedsTripl,_fastSim_tobTecStepSeedsTripl)
118 
119 # PAIR SEEDING LAYERS
120 tobTecStepSeedLayersPair = cms.EDProducer("SeedingLayersEDProducer",
121  layerList = cms.vstring('TOB1+TEC1_pos','TOB1+TEC1_neg',
122  'TEC1_pos+TEC2_pos','TEC1_neg+TEC2_neg',
123  'TEC2_pos+TEC3_pos','TEC2_neg+TEC3_neg',
124  'TEC3_pos+TEC4_pos','TEC3_neg+TEC4_neg',
125  'TEC4_pos+TEC5_pos','TEC4_neg+TEC5_neg',
126  'TEC5_pos+TEC6_pos','TEC5_neg+TEC6_neg',
127  'TEC6_pos+TEC7_pos','TEC6_neg+TEC7_neg'),
128  TOB = cms.PSet(
129  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
130  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
131  skipClusters = cms.InputTag('tobTecStepClusters')
132  ),
133  TEC = cms.PSet(
134  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
135  skipClusters = cms.InputTag('tobTecStepClusters'),
136  useRingSlector = cms.bool(True),
137  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
138  minRing = cms.int32(5),
139  maxRing = cms.int32(5)
140  )
141 )
142 # Pair TrackingRegion
143 tobTecStepTrackingRegionsPair = _globalTrackingRegionFromBeamSpotFixedZ.clone(RegionPSet = dict(
144  ptMin = 0.6,
145  originHalfLength = 30.0,
146  originRadius = 6.0,
147 ))
148 
149 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(tobTecStepTrackingRegionsPair,
150  _mixedTripletStepTrackingRegionsCommon_pp_on_HI.clone(RegionPSet=dict(
151  ptMinScaling4BigEvts= False,
152  fixedError = 7.5,
153  ptMin = 2.0,
154  originRadius = 6.0
155  ) )
156 )
157 
158 
159 # Pair seeds
160 tobTecStepHitDoubletsPair = _hitPairEDProducer.clone(
161  seedingLayers = "tobTecStepSeedLayersPair",
162  trackingRegions = "tobTecStepTrackingRegionsPair",
163  produceSeedingHitSets = True,
164  maxElementTotal = 12000000,
165 )
166 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsEDProducer_cff import seedCreatorFromRegionConsecutiveHitsEDProducer as _seedCreatorFromRegionConsecutiveHitsEDProducer
167 tobTecStepSeedsPair = _seedCreatorFromRegionConsecutiveHitsEDProducer.clone(
168  seedingHitSets = "tobTecStepHitDoubletsPair",
169  SeedComparitorPSet = _tobTecStepSeedComparitorPSet,
170 )
171 #fastsim
172 import FastSimulation.Tracking.TrajectorySeedProducer_cfi
173 fastSim.toReplaceWith(tobTecStepSeedsPair,
174  FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
175  trackingRegions = "tobTecStepTrackingRegionsPair",
176  hitMasks = cms.InputTag("tobTecStepMasks"),
177  seedFinderSelector = dict(layerList = tobTecStepSeedLayersPair.layerList.value())
178  )
179 )
180 
181 
182 # Combined seeds
184 tobTecStepSeeds = RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi.globalCombinedSeeds.clone()
185 tobTecStepSeeds.seedCollections = cms.VInputTag(cms.InputTag('tobTecStepSeedsTripl'),cms.InputTag('tobTecStepSeedsPair'))
186 
187 # LowPU
188 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
189 trackingLowPU.toModify(tobTecStepHitDoubletsPair, seedingLayers = 'tobTecStepSeedLayers')
190 trackingLowPU.toReplaceWith(tobTecStepSeeds, _seedCreatorFromRegionConsecutiveHitsEDProducer.clone(
191  seedingHitSets = "tobTecStepHitDoubletsPair",
192 ))
193 
194 
195 # QUALITY CUTS DURING TRACK BUILDING (for inwardss and outwards track building steps)
197 _tobTecStepTrajectoryFilterBase = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
198  maxLostHits = 0,
199  minimumNumberOfHits = 5,
200  minPt = 0.1,
201  minHitsMinPt = 3
202  )
203 tobTecStepTrajectoryFilter = _tobTecStepTrajectoryFilterBase.clone(
204  seedPairPenalty = 1,
205 )
206 trackingLowPU.toReplaceWith(tobTecStepTrajectoryFilter, _tobTecStepTrajectoryFilterBase.clone(
207  minimumNumberOfHits = 6,
208 ))
209 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
210  e.toModify(tobTecStepTrajectoryFilter, minPt=2.0)
211 
212 tobTecStepInOutTrajectoryFilter = tobTecStepTrajectoryFilter.clone(
213  minimumNumberOfHits = 4,
214 )
215 
216 
217 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
218 tobTecStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
219  ComponentName = cms.string('tobTecStepChi2Est'),
220  nSigma = cms.double(3.0),
221  MaxChi2 = cms.double(16.0),
222  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight'))
223 )
224 trackingLowPU.toModify(tobTecStepChi2Est,
225  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny')
226 )
227 
228 # TRACK BUILDING
230 tobTecStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
231  MeasurementTrackerName = '',
232  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('tobTecStepTrajectoryFilter')),
233  inOutTrajectoryFilter = cms.PSet(refToPSet_ = cms.string('tobTecStepInOutTrajectoryFilter')),
234  useSameTrajFilter = False,
235  minNrOfHitsForRebuild = 4,
236  alwaysUseInvalidHits = False,
237  maxCand = 2,
238  estimator = cms.string('tobTecStepChi2Est'),
239  #startSeedHitsInRebuild = True
240  maxDPhiForLooperReconstruction = cms.double(2.0),
241  maxPtForLooperReconstruction = cms.double(0.7)
242  )
243 # Important note for LowPU: in RunI_TobTecStep the
244 # inOutTrajectoryFilter parameter is spelled as
245 # inOutTrajectoryFilterName, and I suspect it has no effect there. I
246 # chose to "fix" the behaviour here, so the era is not fully
247 # equivalent to the customize. To restore the customize behaviour,
248 # uncomment the following lines
249 #trackingLowPU.toModify(tobTecStepTrajectoryBuilder,
250 # inOutTrajectoryFilter = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.inOutTrajectoryFilter.clone(),
251 # inOutTrajectoryFilterName = cms.PSet(refToPSet_ = cms.string('tobTecStepInOutTrajectoryFilter'))
252 #)
253 
254 # MAKING OF TRACK CANDIDATES
256 tobTecStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
257  src = cms.InputTag('tobTecStepSeeds'),
258  clustersToSkip = cms.InputTag('tobTecStepClusters'),
259  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
260  numHitsForSeedCleaner = cms.int32(50),
261  onlyPixelHitsForSeedCleaner = cms.bool(True),
262 
263  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('tobTecStepTrajectoryBuilder')),
264  doSeedingRegionRebuilding = True,
265  useHitsSplitting = True,
266  cleanTrajectoryAfterInOut = True,
267  TrajectoryCleaner = 'tobTecStepTrajectoryCleanerBySharedHits'
268 )
269 import FastSimulation.Tracking.TrackCandidateProducer_cfi
270 fastSim.toReplaceWith(tobTecStepTrackCandidates,
271  FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
272  MinNumberOfCrossedLayers = 3,
273  src = cms.InputTag("tobTecStepSeeds"),
274  hitMasks = cms.InputTag("tobTecStepMasks")
275  )
276  )
277 
278 
279 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits
280 tobTecStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
281  ComponentName = cms.string('tobTecStepTrajectoryCleanerBySharedHits'),
282  fractionShared = cms.double(0.09),
283  allowSharedFirstHit = cms.bool(True)
284  )
285 trackingLowPU.toModify(tobTecStepTrajectoryCleanerBySharedHits, fractionShared = 0.19)
286 
287 # TRACK FITTING AND SMOOTHING OPTIONS
289 tobTecStepFitterSmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.KFFittingSmootherWithOutliersRejectionAndRK.clone(
290  ComponentName = 'tobTecStepFitterSmoother',
291  EstimateCut = 30,
292  MinNumberOfHits = 7,
293  Fitter = cms.string('tobTecStepRKFitter'),
294  Smoother = cms.string('tobTecStepRKSmoother')
295  )
296 trackingLowPU.toModify(tobTecStepFitterSmoother, MinNumberOfHits = 8)
297 
298 tobTecStepFitterSmootherForLoopers = tobTecStepFitterSmoother.clone(
299  ComponentName = 'tobTecStepFitterSmootherForLoopers',
300  Fitter = cms.string('tobTecStepRKFitterForLoopers'),
301  Smoother = cms.string('tobTecStepRKSmootherForLoopers')
302 )
303 
304 # Also necessary to specify minimum number of hits after final track fit
305 tobTecStepRKTrajectoryFitter = TrackingTools.TrackFitters.RungeKuttaFitters_cff.RKTrajectoryFitter.clone(
306  ComponentName = cms.string('tobTecStepRKFitter'),
307  minHits = 7
308 )
309 trackingLowPU.toModify(tobTecStepRKTrajectoryFitter, minHits = 8)
310 
311 tobTecStepRKTrajectoryFitterForLoopers = tobTecStepRKTrajectoryFitter.clone(
312  ComponentName = cms.string('tobTecStepRKFitterForLoopers'),
313  Propagator = cms.string('PropagatorWithMaterialForLoopers'),
314 )
315 
316 tobTecStepRKTrajectorySmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.RKTrajectorySmoother.clone(
317  ComponentName = cms.string('tobTecStepRKSmoother'),
318  errorRescaling = 10.0,
319  minHits = 7
320 )
321 trackingLowPU.toModify(tobTecStepRKTrajectorySmoother, minHits = 8)
322 
323 tobTecStepRKTrajectorySmootherForLoopers = tobTecStepRKTrajectorySmoother.clone(
324  ComponentName = cms.string('tobTecStepRKSmootherForLoopers'),
325  Propagator = cms.string('PropagatorWithMaterialForLoopers'),
326 )
327 
329 tobTecFlexibleKFFittingSmoother = TrackingTools.TrackFitters.FlexibleKFFittingSmoother_cfi.FlexibleKFFittingSmoother.clone(
330  ComponentName = cms.string('tobTecFlexibleKFFittingSmoother'),
331  standardFitter = cms.string('tobTecStepFitterSmoother'),
332  looperFitter = cms.string('tobTecStepFitterSmootherForLoopers'),
333 )
334 
335 
336 # TRACK FITTING
338 tobTecStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
339  src = 'tobTecStepTrackCandidates',
340  AlgorithmName = cms.string('tobTecStep'),
341  #Fitter = 'tobTecStepFitterSmoother',
342  Fitter = 'tobTecFlexibleKFFittingSmoother',
343  )
344 fastSim.toModify(tobTecStepTracks, TTRHBuilder = 'WithoutRefit')
345 
346 
347 # TRACK SELECTION AND QUALITY FLAG SETTING.
350 tobTecStepClassifier1 = TrackMVAClassifierDetached.clone()
351 tobTecStepClassifier1.src = 'tobTecStepTracks'
352 tobTecStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter6_13TeV'
353 tobTecStepClassifier1.qualityCuts = [-0.6,-0.45,-0.3]
354 fastSim.toModify(tobTecStepClassifier1, vertices = "firstStepPrimaryVerticesBeforeMixing")
355 
356 tobTecStepClassifier2 = TrackMVAClassifierPrompt.clone()
357 tobTecStepClassifier2.src = 'tobTecStepTracks'
358 tobTecStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV'
359 tobTecStepClassifier2.qualityCuts = [0.0,0.0,0.0]
360 fastSim.toModify(tobTecStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing")
361 
363 tobTecStep = ClassifierMerger.clone()
364 tobTecStep.inputClassifiers=['tobTecStepClassifier1','tobTecStepClassifier2']
365 
366 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
367 trackingPhase1.toReplaceWith(tobTecStep, tobTecStepClassifier1.clone(
368  mva = dict(GBRForestLabel = 'MVASelectorTobTecStep_Phase1'),
369  qualityCuts = [-0.6,-0.45,-0.3]
370 ))
371 
374 trackdnn.toReplaceWith(tobTecStep, TrackLwtnnClassifier.clone(
375  src = 'tobTecStepTracks',
376  qualityCuts = [-0.4, -0.25, -0.1]
377 ))
378 (trackdnn & fastSim).toModify(tobTecStep,vertices = "firstStepPrimaryVerticesBeforeMixing")
379 
380 pp_on_AA_2018.toModify(tobTecStep, qualityCuts = [-0.6,-0.3,0.7])
381 
382 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
383 trackingLowPU.toReplaceWith(tobTecStep, RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
384  src = 'tobTecStepTracks',
385  useAnyMVA = cms.bool(False),
386  GBRForestLabel = cms.string('MVASelectorIter6'),
387  trackSelectors = [
388  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
389  name = 'tobTecStepLoose',
390  chi2n_par = 0.4,
391  res_par = ( 0.003, 0.001 ),
392  minNumberLayers = 5,
393  maxNumberLostLayers = 1,
394  minNumber3DLayers = 2,
395  d0_par1 = ( 2.0, 4.0 ),
396  dz_par1 = ( 1.8, 4.0 ),
397  d0_par2 = ( 2.0, 4.0 ),
398  dz_par2 = ( 1.8, 4.0 )
399  ),
400  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
401  name = 'tobTecStepTight',
402  preFilterName = 'tobTecStepLoose',
403  chi2n_par = 0.3,
404  res_par = ( 0.003, 0.001 ),
405  minNumberLayers = 5,
406  maxNumberLostLayers = 0,
407  minNumber3DLayers = 2,
408  d0_par1 = ( 1.5, 4.0 ),
409  dz_par1 = ( 1.4, 4.0 ),
410  d0_par2 = ( 1.5, 4.0 ),
411  dz_par2 = ( 1.4, 4.0 )
412  ),
413  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
414  name = 'QualityMasks',
415  preFilterName = 'tobTecStepTight',
416  chi2n_par = 0.2,
417  res_par = ( 0.003, 0.001 ),
418  minNumberLayers = 5,
419  maxNumberLostLayers = 0,
420  minNumber3DLayers = 2,
421  d0_par1 = ( 1.4, 4.0 ),
422  dz_par1 = ( 1.3, 4.0 ),
423  d0_par2 = ( 1.4, 4.0 ),
424  dz_par2 = ( 1.3, 4.0 )
425  ),
426  ] #end of vpset
427 )) #end of clone
428 
429 
430 
431 TobTecStepTask = cms.Task(tobTecStepClusters,
432  tobTecStepSeedLayersTripl,
433  tobTecStepTrackingRegionsTripl,
434  tobTecStepHitDoubletsTripl,
435  tobTecStepHitTripletsTripl,
436  tobTecStepSeedsTripl,
437  tobTecStepSeedLayersPair,
438  tobTecStepTrackingRegionsPair,
439  tobTecStepHitDoubletsPair,
440  tobTecStepSeedsPair,
441  tobTecStepSeeds,
442  tobTecStepTrackCandidates,
443  tobTecStepTracks,
444  tobTecStepClassifier1,tobTecStepClassifier2,
445  tobTecStep)
446 TobTecStep = cms.Sequence(TobTecStepTask)
447 
448 
449 ### Following are specific for LowPU, they're collected here to
450 ### not to interfere too much with the default configuration
451 # SEEDING LAYERS
452 tobTecStepSeedLayers = cms.EDProducer("SeedingLayersEDProducer",
453  layerList = cms.vstring('TOB1+TOB2',
454  'TOB1+TEC1_pos', 'TOB1+TEC1_neg',
455  'TEC1_pos+TEC2_pos', 'TEC2_pos+TEC3_pos',
456  'TEC3_pos+TEC4_pos', 'TEC4_pos+TEC5_pos',
457  'TEC5_pos+TEC6_pos', 'TEC6_pos+TEC7_pos',
458  'TEC1_neg+TEC2_neg', 'TEC2_neg+TEC3_neg',
459  'TEC3_neg+TEC4_neg', 'TEC4_neg+TEC5_neg',
460  'TEC5_neg+TEC6_neg', 'TEC6_neg+TEC7_neg'),
461  TOB = cms.PSet(
462  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
463  skipClusters = cms.InputTag('tobTecStepClusters'),
464  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTiny'))
465  ),
466  TEC = cms.PSet(
467  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
468  skipClusters = cms.InputTag('tobTecStepClusters'),
469  # untracked bool useSimpleRphiHitsCleaner = false
470  useRingSlector = cms.bool(True),
471  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTiny')),
472  minRing = cms.int32(5),
473  maxRing = cms.int32(5)
474  )
475 )
476 
477 trackingLowPU.toReplaceWith(TobTecStepTask,
478  cms.Task(
479  tobTecStepClusters,
480  tobTecStepSeedLayers,
481  tobTecStepTrackingRegionsPair,
482  tobTecStepHitDoubletsPair,
483  tobTecStepSeeds,
484  tobTecStepTrackCandidates,
485  tobTecStepTracks,
486  tobTecStep
487  )
488 )
489 
490 #fastsim
491 import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
492 tobTecStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(tobTecStepClusters)
493 fastSim.toReplaceWith(TobTecStepTask,
494  cms.Task(tobTecStepMasks
495  ,tobTecStepTrackingRegionsTripl
496  ,tobTecStepSeedsTripl
497  ,tobTecStepTrackingRegionsPair
498  ,tobTecStepSeedsPair
499  ,tobTecStepSeeds
500  ,tobTecStepTrackCandidates
501  ,tobTecStepTracks
502  ,tobTecStepClassifier1,tobTecStepClassifier2
503  ,tobTecStep
504  )
505 )
def _hitSetProducerToFactoryPSet(producer)