CMS 3D CMS Logo

MixedTripletStep_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 from Configuration.Eras.Modifier_fastSim_cff import fastSim
5 ###############################################################
6 # Large impact parameter Tracking using mixed-triplet seeding #
7 ###############################################################
8 
9 #here just for backward compatibility
10 chargeCut2069Clusters = cms.EDProducer("ClusterChargeMasker",
11  oldClusterRemovalInfo = cms.InputTag(""), # to be set below
12  pixelClusters = cms.InputTag("siPixelClusters"),
13  stripClusters = cms.InputTag("siStripClusters"),
14  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight'))
15 )
16 
17 mixedTripletStepClusters = _cfg.clusterRemoverForIter("MixedTripletStep")
18 chargeCut2069Clusters.oldClusterRemovalInfo = mixedTripletStepClusters.oldClusterRemovalInfo.value()
19 mixedTripletStepClusters.oldClusterRemovalInfo = "chargeCut2069Clusters"
20 for _eraName, _postfix, _era in _cfg.nonDefaultEras():
21  _era.toReplaceWith(mixedTripletStepClusters, _cfg.clusterRemoverForIter("MixedTripletStep", _eraName, _postfix))
22 from Configuration.Eras.Modifier_trackingPhase1_cff import trackingPhase1
23 trackingPhase1.toModify(chargeCut2069Clusters, oldClusterRemovalInfo = mixedTripletStepClusters.oldClusterRemovalInfo.value())
24 trackingPhase1.toModify(mixedTripletStepClusters, oldClusterRemovalInfo="chargeCut2069Clusters")
25 
26 # SEEDING LAYERS
28 from RecoTracker.IterativeTracking.DetachedTripletStep_cff import detachedTripletStepSeedLayers
29 mixedTripletStepSeedLayersA = cms.EDProducer("SeedingLayersEDProducer",
30  layerList = cms.vstring('BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg'),
31 # layerList = cms.vstring('BPix1+BPix2+BPix3',
32 # 'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg',
33 # 'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg',
34 # 'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg'),
35  BPix = cms.PSet(
36  TTRHBuilder = cms.string('WithTrackAngle'),
37  HitProducer = cms.string('siPixelRecHits'),
38  skipClusters = cms.InputTag('mixedTripletStepClusters')
39  ),
40  FPix = cms.PSet(
41  TTRHBuilder = cms.string('WithTrackAngle'),
42  HitProducer = cms.string('siPixelRecHits'),
43  skipClusters = cms.InputTag('mixedTripletStepClusters')
44  ),
45  TEC = cms.PSet(
46  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
47  useRingSlector = cms.bool(True),
48  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
49  minRing = cms.int32(1),
50  maxRing = cms.int32(1),
51  skipClusters = cms.InputTag('mixedTripletStepClusters')
52  )
53 )
54 from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU
55 trackingLowPU.toModify(mixedTripletStepSeedLayersA,
56  layerList = [
57  'BPix1+BPix2+BPix3',
58  'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg',
59  'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg',
60  'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg',
61  'FPix1_pos+FPix2_pos+TEC1_pos', 'FPix1_neg+FPix2_neg+TEC1_neg',
62  'FPix2_pos+TEC2_pos+TEC3_pos', 'FPix2_neg+TEC2_neg+TEC3_neg'
63  ],
64  TEC = dict(clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny')),
65 )
66 from Configuration.Eras.Modifier_highBetaStar_2018_cff import highBetaStar_2018
67 highBetaStar_2018.toModify(mixedTripletStepSeedLayersA,
68  layerList = [
69  'BPix1+BPix2+BPix3',
70  'BPix1+FPix1_pos+FPix2_pos','BPix1+FPix1_neg+FPix2_neg',
71  'BPix2+FPix1_pos+FPix2_pos','BPix2+FPix1_neg+FPix2_neg',
72  'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg',
73  'BPix1+BPix2+FPix2_pos', 'BPix1+BPix2+FPix2_neg'
74  ]
75 )
76 
77 
78 # TrackingRegion
79 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpotFixedZ_cfi import globalTrackingRegionFromBeamSpotFixedZ as _globalTrackingRegionFromBeamSpotFixedZ
80 _mixedTripletStepTrackingRegionsCommon = _globalTrackingRegionFromBeamSpotFixedZ.clone(RegionPSet = dict(
81  ptMin = 0.4,
82  originHalfLength = 15.0,
83  originRadius = 1.5
84 ))
85 trackingLowPU.toModify(_mixedTripletStepTrackingRegionsCommon, RegionPSet = dict(originHalfLength = 10.0))
86 highBetaStar_2018.toModify(_mixedTripletStepTrackingRegionsCommon,RegionPSet = dict(
87  ptMin = 0.05,
88  originRadius = 0.2
89 ))
90 
91 mixedTripletStepTrackingRegionsA = _mixedTripletStepTrackingRegionsCommon.clone()
92 
93 from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017
94 from Configuration.Eras.Modifier_pp_on_AA_2018_cff import pp_on_AA_2018
95 from RecoTracker.TkTrackingRegions.globalTrackingRegionWithVertices_cff import globalTrackingRegionWithVertices as _globalTrackingRegionWithVertices
96 _mixedTripletStepTrackingRegionsCommon_pp_on_HI = _globalTrackingRegionWithVertices.clone(
97  RegionPSet=dict(
98  fixedError = 3.75,
99  ptMin = 0.4,
100  originRadius = 1.5,
101  originRScaling4BigEvts = True,
102  ptMinScaling4BigEvts= True,
103  minOriginR = 0.,
104  maxPtMin = 0.7,
105  scalingStartNPix = 20000,
106  scalingEndNPix = 35000
107  )
108 )
109 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(mixedTripletStepTrackingRegionsA,_mixedTripletStepTrackingRegionsCommon_pp_on_HI)
110 
111 
112 # seeding
113 from RecoPixelVertexing.PixelLowPtUtilities.ClusterShapeHitFilterESProducer_cfi import ClusterShapeHitFilterESProducer as _ClusterShapeHitFilterESProducer
114 mixedTripletStepClusterShapeHitFilter = _ClusterShapeHitFilterESProducer.clone(
115  ComponentName = 'mixedTripletStepClusterShapeHitFilter',
116  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTight')
117 )
118 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer
119 mixedTripletStepHitDoubletsA = _hitPairEDProducer.clone(
120  seedingLayers = "mixedTripletStepSeedLayersA",
121  trackingRegions = "mixedTripletStepTrackingRegionsA",
122  maxElement = 50000000,
123  produceIntermediateHitDoublets = True,
124 )
125 from RecoPixelVertexing.PixelTriplets.pixelTripletLargeTipEDProducer_cfi import pixelTripletLargeTipEDProducer as _pixelTripletLargeTipEDProducer
127 mixedTripletStepHitTripletsA = _pixelTripletLargeTipEDProducer.clone(
128  doublets = "mixedTripletStepHitDoubletsA",
129  produceSeedingHitSets = True,
130 )
131 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer_cff import seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
132 _mixedTripletStepSeedsACommon = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone(
133  seedingHitSets = "mixedTripletStepHitTripletsA",
134  SeedComparitorPSet = dict(# FIXME: is this defined in any cfi that could be imported instead of copy-paste?
135  ComponentName = 'PixelClusterShapeSeedComparitor',
136  FilterAtHelixStage = cms.bool(False),
137  FilterPixelHits = cms.bool(True),
138  FilterStripHits = cms.bool(True),
139  ClusterShapeHitFilterName = cms.string('mixedTripletStepClusterShapeHitFilter'),
140  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache')
141  ),
142 )
143 trackingLowPU.toModify(_mixedTripletStepSeedsACommon,
144  SeedComparitorPSet = dict(ClusterShapeHitFilterName = 'ClusterShapeHitFilter')
145 )
146 mixedTripletStepSeedsA = _mixedTripletStepSeedsACommon.clone()
147 
148 import FastSimulation.Tracking.TrajectorySeedProducer_cfi
149 from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet
150 _fastSim_mixedTripletStepSeedsA = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
151  trackingRegions = "mixedTripletStepTrackingRegionsA",
152  hitMasks = cms.InputTag("mixedTripletStepMasks"),
153  seedFinderSelector = dict(pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(mixedTripletStepHitTripletsA),
154  layerList = mixedTripletStepSeedLayersA.layerList.value())
155 )
156 fastSim.toReplaceWith(mixedTripletStepSeedsA,_fastSim_mixedTripletStepSeedsA)
157 
158 
159 # SEEDING LAYERS
160 mixedTripletStepSeedLayersB = cms.EDProducer("SeedingLayersEDProducer",
161  layerList = cms.vstring('BPix2+BPix3+TIB1'),
162  BPix = cms.PSet(
163  TTRHBuilder = cms.string('WithTrackAngle'),
164  HitProducer = cms.string('siPixelRecHits'),
165  skipClusters = cms.InputTag('mixedTripletStepClusters')
166  ),
167  TIB = cms.PSet(
168  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
169  TTRHBuilder = cms.string('WithTrackAngle'), clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight')),
170  skipClusters = cms.InputTag('mixedTripletStepClusters')
171  )
172 )
173 trackingLowPU.toModify(mixedTripletStepSeedLayersB,
174  layerList = ['BPix2+BPix3+TIB1', 'BPix2+BPix3+TIB2'],
175  TIB = dict(clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny')),
176 )
177 trackingPhase1.toModify(mixedTripletStepSeedLayersB, layerList = ['BPix3+BPix4+TIB1'])
178 
179 # TrackingRegion
180 mixedTripletStepTrackingRegionsB = _mixedTripletStepTrackingRegionsCommon.clone(RegionPSet = dict(ptMin=0.6, originHalfLength=10.0))
181 (pp_on_XeXe_2017 | pp_on_AA_2018).toReplaceWith(mixedTripletStepTrackingRegionsB,
182  _mixedTripletStepTrackingRegionsCommon_pp_on_HI.clone(RegionPSet=dict(
183  fixedError = 2.5,
184  ptMin = 0.6,
185  )
186  )
187 )
188 highBetaStar_2018.toReplaceWith(mixedTripletStepTrackingRegionsB, _mixedTripletStepTrackingRegionsCommon.clone())
189 
190 # seeding
191 mixedTripletStepHitDoubletsB = mixedTripletStepHitDoubletsA.clone(
192  seedingLayers = "mixedTripletStepSeedLayersB",
193  trackingRegions = "mixedTripletStepTrackingRegionsB",
194 )
195 mixedTripletStepHitTripletsB = mixedTripletStepHitTripletsA.clone(doublets = "mixedTripletStepHitDoubletsB")
196 mixedTripletStepSeedsB = _mixedTripletStepSeedsACommon.clone(seedingHitSets = "mixedTripletStepHitTripletsB")
197 #fastsim
198 _fastSim_mixedTripletStepSeedsB = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone(
199  trackingRegions = "mixedTripletStepTrackingRegionsB",
200  hitMasks = cms.InputTag("mixedTripletStepMasks"),
201  seedFinderSelector = dict(pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(mixedTripletStepHitTripletsB),
202  layerList = mixedTripletStepSeedLayersB.layerList.value())
203 )
204 fastSim.toReplaceWith(mixedTripletStepSeedsB,_fastSim_mixedTripletStepSeedsB)
205 
206 
208 mixedTripletStepSeeds = RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi.globalCombinedSeeds.clone()
209 mixedTripletStepSeeds.seedCollections = cms.VInputTag(
210  cms.InputTag('mixedTripletStepSeedsA'),
211  cms.InputTag('mixedTripletStepSeedsB'),
212  )
213 
214 # QUALITY CUTS DURING TRACK BUILDING
216 _mixedTripletStepTrajectoryFilterBase = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
217 # maxLostHits = 0,
218  minimumNumberOfHits = 3,
219  minPt = 0.1
220 )
221 highBetaStar_2018.toModify(_mixedTripletStepTrajectoryFilterBase,minPt = 0.05)
222 
223 mixedTripletStepTrajectoryFilter = _mixedTripletStepTrajectoryFilterBase.clone(
224  constantValueForLostHitsFractionFilter = 1.4,
225 )
226 trackingLowPU.toReplaceWith(mixedTripletStepTrajectoryFilter, _mixedTripletStepTrajectoryFilterBase.clone(
227  maxLostHits = 0,
228 ))
229 
230 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
231  e.toModify(mixedTripletStepTrajectoryFilter, minPt=0.4)
232 
233 # Propagator taking into account momentum uncertainty in multiple scattering calculation.
236 mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagator_cfi.MaterialPropagator.clone(
237 #mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.MaterialPropagatorParabolicMF.clone(
238  ComponentName = 'mixedTripletStepPropagator',
239  ptMin = 0.1
240  )
241 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
242  e.toModify(mixedTripletStepPropagator, ptMin=0.4)
243 highBetaStar_2018.toModify(mixedTripletStepPropagator,ptMin = 0.05)
244 
246 mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.OppositeMaterialPropagator_cfi.OppositeMaterialPropagator.clone(
247 #mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.OppositeMaterialPropagatorParabolicMF.clone(
248  ComponentName = 'mixedTripletStepPropagatorOpposite',
249  ptMin = 0.1
250  )
251 for e in [pp_on_XeXe_2017, pp_on_AA_2018]:
252  e.toModify(mixedTripletStepPropagatorOpposite, ptMin=0.4)
253 highBetaStar_2018.toModify(mixedTripletStepPropagatorOpposite,ptMin = 0.05)
254 
255 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
256 mixedTripletStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
257  ComponentName = cms.string('mixedTripletStepChi2Est'),
258  nSigma = cms.double(3.0),
259  MaxChi2 = cms.double(16.0),
260  clusterChargeCut = cms.PSet(refToPSet_ = cms.string('SiStripClusterChargeCutTight'))
261 )
262 trackingLowPU.toModify(mixedTripletStepChi2Est,
263  clusterChargeCut = dict(refToPSet_ = 'SiStripClusterChargeCutTiny')
264 )
265 
266 # TRACK BUILDING
268 mixedTripletStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
269  MeasurementTrackerName = '',
270  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('mixedTripletStepTrajectoryFilter')),
271  propagatorAlong = cms.string('mixedTripletStepPropagator'),
272  propagatorOpposite = cms.string('mixedTripletStepPropagatorOpposite'),
273  maxCand = 2,
274  estimator = cms.string('mixedTripletStepChi2Est'),
275  maxDPhiForLooperReconstruction = cms.double(2.0),
276  maxPtForLooperReconstruction = cms.double(0.7)
277  )
278 
279 # MAKING OF TRACK CANDIDATES
281 mixedTripletStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
282  src = cms.InputTag('mixedTripletStepSeeds'),
283  clustersToSkip = cms.InputTag('mixedTripletStepClusters'),
284  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
285  numHitsForSeedCleaner = cms.int32(50),
286  #onlyPixelHitsForSeedCleaner = cms.bool(True),
287 
288  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('mixedTripletStepTrajectoryBuilder')),
289  doSeedingRegionRebuilding = True,
290  useHitsSplitting = True,
291  TrajectoryCleaner = 'mixedTripletStepTrajectoryCleanerBySharedHits'
292 )
293 import FastSimulation.Tracking.TrackCandidateProducer_cfi
294 fastSim.toReplaceWith(mixedTripletStepTrackCandidates,
295  FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone(
296  src = cms.InputTag("mixedTripletStepSeeds"),
297  MinNumberOfCrossedLayers = 3,
298  hitMasks = cms.InputTag("mixedTripletStepMasks"),
299  )
300 )
301 
302 
303 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits
304 mixedTripletStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
305  ComponentName = cms.string('mixedTripletStepTrajectoryCleanerBySharedHits'),
306  fractionShared = cms.double(0.11),
307  allowSharedFirstHit = cms.bool(True)
308  )
309 trackingLowPU.toModify(mixedTripletStepTrajectoryCleanerBySharedHits, fractionShared = 0.19)
310 
311 
312 # TRACK FITTING
314 mixedTripletStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
315  AlgorithmName = cms.string('mixedTripletStep'),
316  src = 'mixedTripletStepTrackCandidates',
317  Fitter = cms.string('FlexibleKFFittingSmoother')
318 )
319 fastSim.toModify(mixedTripletStepTracks, TTRHBuilder = 'WithoutRefit')
320 
321 # TRACK SELECTION AND QUALITY FLAG SETTING.
324 mixedTripletStepClassifier1 = TrackMVAClassifierDetached.clone()
325 mixedTripletStepClassifier1.src = 'mixedTripletStepTracks'
326 mixedTripletStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter4_13TeV'
327 mixedTripletStepClassifier1.qualityCuts = [-0.5,0.0,0.5]
328 fastSim.toModify(mixedTripletStepClassifier1, vertices = "firstStepPrimaryVerticesBeforeMixing")
329 
330 mixedTripletStepClassifier2 = TrackMVAClassifierPrompt.clone()
331 mixedTripletStepClassifier2.src = 'mixedTripletStepTracks'
332 mixedTripletStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV'
333 mixedTripletStepClassifier2.qualityCuts = [-0.2,-0.2,-0.2]
334 fastSim.toModify(mixedTripletStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing")
335 
337 mixedTripletStep = ClassifierMerger.clone()
338 mixedTripletStep.inputClassifiers=['mixedTripletStepClassifier1','mixedTripletStepClassifier2']
339 
340 trackingPhase1.toReplaceWith(mixedTripletStep, mixedTripletStepClassifier1.clone(
341  mva = dict(GBRForestLabel = 'MVASelectorMixedTripletStep_Phase1'),
342  qualityCuts = [-0.5,0.0,0.5],
343 ))
344 highBetaStar_2018.toModify(mixedTripletStep,qualityCuts = [-0.7,0.0,0.5])
345 pp_on_AA_2018.toModify(mixedTripletStep, qualityCuts = [-0.5,0.0,0.9])
346 
347 # For LowPU
348 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
349 mixedTripletStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
350  src = 'mixedTripletStepTracks',
351  useAnyMVA = cms.bool(False),
352  GBRForestLabel = cms.string('MVASelectorIter4'),
353  trackSelectors = [
354  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
355  name = 'mixedTripletStepVtxLoose',
356  chi2n_par = 1.2,
357  res_par = ( 0.003, 0.001 ),
358  minNumberLayers = 3,
359  maxNumberLostLayers = 1,
360  minNumber3DLayers = 2,
361  d0_par1 = ( 1.2, 3.0 ),
362  dz_par1 = ( 1.2, 3.0 ),
363  d0_par2 = ( 1.3, 3.0 ),
364  dz_par2 = ( 1.3, 3.0 )
365  ),
366  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
367  name = 'mixedTripletStepTrkLoose',
368  chi2n_par = 0.6,
369  res_par = ( 0.003, 0.001 ),
370  minNumberLayers = 4,
371  maxNumberLostLayers = 1,
372  minNumber3DLayers = 3,
373  d0_par1 = ( 1.2, 4.0 ),
374  dz_par1 = ( 1.2, 4.0 ),
375  d0_par2 = ( 1.2, 4.0 ),
376  dz_par2 = ( 1.2, 4.0 )
377  ),
378  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
379  name = 'mixedTripletStepVtxTight',
380  preFilterName = 'mixedTripletStepVtxLoose',
381  chi2n_par = 0.6,
382  res_par = ( 0.003, 0.001 ),
383  minNumberLayers = 3,
384  maxNumberLostLayers = 1,
385  minNumber3DLayers = 3,
386  d0_par1 = ( 1.1, 3.0 ),
387  dz_par1 = ( 1.1, 3.0 ),
388  d0_par2 = ( 1.2, 3.0 ),
389  dz_par2 = ( 1.2, 3.0 )
390  ),
391  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
392  name = 'mixedTripletStepTrkTight',
393  preFilterName = 'mixedTripletStepTrkLoose',
394  chi2n_par = 0.4,
395  res_par = ( 0.003, 0.001 ),
396  minNumberLayers = 5,
397  maxNumberLostLayers = 1,
398  minNumber3DLayers = 4,
399  d0_par1 = ( 1.1, 4.0 ),
400  dz_par1 = ( 1.1, 4.0 ),
401  d0_par2 = ( 1.1, 4.0 ),
402  dz_par2 = ( 1.1, 4.0 )
403  ),
404  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
405  name = 'mixedTripletStepVtx',
406  preFilterName = 'mixedTripletStepVtxTight',
407  chi2n_par = 0.4,
408  res_par = ( 0.003, 0.001 ),
409  minNumberLayers = 3,
410  maxNumberLostLayers = 1,
411  minNumber3DLayers = 3,
412  d0_par1 = ( 1.1, 3.0 ),
413  dz_par1 = ( 1.1, 3.0 ),
414  d0_par2 = ( 1.2, 3.0 ),
415  dz_par2 = ( 1.2, 3.0 )
416  ),
417  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
418  name = 'mixedTripletStepTrk',
419  preFilterName = 'mixedTripletStepTrkTight',
420  chi2n_par = 0.3,
421  res_par = ( 0.003, 0.001 ),
422  minNumberLayers = 5,
423  maxNumberLostLayers = 0,
424  minNumber3DLayers = 4,
425  d0_par1 = ( 0.9, 4.0 ),
426  dz_par1 = ( 0.9, 4.0 ),
427  d0_par2 = ( 0.9, 4.0 ),
428  dz_par2 = ( 0.9, 4.0 )
429  )
430  ] #end of vpset
431 ) #end of clone
432 
433 
434 from RecoTracker.FinalTrackSelectors.trackAlgoPriorityOrder_cfi import trackAlgoPriorityOrder
436 _trackListMergerBase = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
437  TrackProducers = ['mixedTripletStepTracks',
438  'mixedTripletStepTracks'],
439  hasSelector = [1,1],
440  selectedTrackQuals = [cms.InputTag("mixedTripletStepSelector","mixedTripletStepVtx"),
441  cms.InputTag("mixedTripletStepSelector","mixedTripletStepTrk")],
442  setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )],
443  writeOnlyTrkQuals = True
444 )
445 trackingLowPU.toReplaceWith(mixedTripletStep, _trackListMergerBase)
446 
447 
448 
449 MixedTripletStepTask = cms.Task(chargeCut2069Clusters,mixedTripletStepClusters,
450  mixedTripletStepSeedLayersA,
451  mixedTripletStepTrackingRegionsA,
452  mixedTripletStepHitDoubletsA,
453  mixedTripletStepHitTripletsA,
454  mixedTripletStepSeedsA,
455  mixedTripletStepSeedLayersB,
456  mixedTripletStepTrackingRegionsB,
457  mixedTripletStepHitDoubletsB,
458  mixedTripletStepHitTripletsB,
459  mixedTripletStepSeedsB,
460  mixedTripletStepSeeds,
461  mixedTripletStepTrackCandidates,
462  mixedTripletStepTracks,
463  mixedTripletStepClassifier1,mixedTripletStepClassifier2,
464  mixedTripletStep)
465 MixedTripletStep = cms.Sequence(MixedTripletStepTask)
466 _MixedTripletStepTask_LowPU = MixedTripletStepTask.copyAndExclude([chargeCut2069Clusters, mixedTripletStepClassifier1])
467 _MixedTripletStepTask_LowPU.replace(mixedTripletStepClassifier2, mixedTripletStepSelector)
468 trackingLowPU.toReplaceWith(MixedTripletStepTask, _MixedTripletStepTask_LowPU)
469 
470 #fastsim
471 import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi
472 mixedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(mixedTripletStepClusters)
473 mixedTripletStepMasks.oldHitRemovalInfo = cms.InputTag("pixelPairStepMasks")
474 
475 fastSim.toReplaceWith(MixedTripletStepTask,
476  cms.Task(mixedTripletStepMasks
477  ,mixedTripletStepTrackingRegionsA
478  ,mixedTripletStepSeedsA
479  ,mixedTripletStepTrackingRegionsB
480  ,mixedTripletStepSeedsB
481  ,mixedTripletStepSeeds
482  ,mixedTripletStepTrackCandidates
483  ,mixedTripletStepTracks
484  ,mixedTripletStepClassifier1,mixedTripletStepClassifier2
485  ,mixedTripletStep
486  )
487 )
def _hitSetProducerToFactoryPSet(producer)