CMS 3D CMS Logo

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