1 import FWCore.ParameterSet.Config
as cms
2 import RecoTracker.IterativeTracking.iterativeTkConfig
as _cfg
9 detachedQuadStepClusters = _cfg.clusterRemoverForIter(
"DetachedQuadStep")
10 for _eraName, _postfix, _era
in _cfg.nonDefaultEras():
11 _era.toReplaceWith(detachedQuadStepClusters, _cfg.clusterRemoverForIter(
"DetachedQuadStep", _eraName, _postfix))
16 detachedQuadStepSeedLayers = RecoTracker.TkSeedingLayers.PixelLayerTriplets_cfi.PixelLayerTriplets.clone(
17 BPix =
dict(skipClusters = cms.InputTag(
'detachedQuadStepClusters')),
18 FPix =
dict(skipClusters = cms.InputTag(
'detachedQuadStepClusters'))
20 from Configuration.Eras.Modifier_trackingPhase1_cff
import trackingPhase1
21 trackingPhase1.toModify(detachedQuadStepSeedLayers,
22 layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
24 from Configuration.Eras.Modifier_trackingPhase1QuadProp_cff
import trackingPhase1QuadProp
25 trackingPhase1QuadProp.toModify(detachedQuadStepSeedLayers,
26 layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
28 from Configuration.Eras.Modifier_trackingPhase2PU140_cff
import trackingPhase2PU140
29 trackingPhase2PU140.toModify(detachedQuadStepSeedLayers,
30 layerList = RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff.PixelSeedMergerQuadruplets.layerList.value()
34 from RecoTracker.TkTrackingRegions.globalTrackingRegionFromBeamSpotFixedZ_cfi
import globalTrackingRegionFromBeamSpotFixedZ
as _globalTrackingRegionFromBeamSpotFixedZ
35 detachedQuadStepTrackingRegions = _globalTrackingRegionFromBeamSpotFixedZ.clone(RegionPSet =
dict(
37 originHalfLength = 15.0,
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(
47 trackingPhase2PU140.toReplaceWith(detachedQuadStepTrackingRegions, _globalTrackingRegionFromBeamSpot.clone(RegionPSet =
dict(
54 from RecoTracker.TkHitPairs.hitPairEDProducer_cfi
import hitPairEDProducer
as _hitPairEDProducer
55 detachedQuadStepHitDoublets = _hitPairEDProducer.clone(
56 seedingLayers =
"detachedQuadStepSeedLayers",
57 trackingRegions =
"detachedQuadStepTrackingRegions",
59 produceIntermediateHitDoublets =
True,
61 from RecoPixelVertexing.PixelTriplets.pixelTripletLargeTipEDProducer_cfi
import pixelTripletLargeTipEDProducer
as _pixelTripletLargeTipEDProducer
63 detachedQuadStepHitTriplets = _pixelTripletLargeTipEDProducer.clone(
64 doublets =
"detachedQuadStepHitDoublets",
65 produceIntermediateHitTriplets =
True,
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,
74 value1 = 500, value2 = 100,
77 extraPhiTolerance =
dict(
79 value1 = 0.2, value2 = 0.05,
82 useBendingCorrection =
True,
84 fitFastCircleChi2Cut =
True,
86 from RecoPixelVertexing.PixelTriplets.caHitQuadrupletEDProducer_cfi
import caHitQuadrupletEDProducer
as _caHitQuadrupletEDProducer
87 trackingPhase1.toModify(detachedQuadStepHitDoublets, layerPairs = [0,1,2])
88 trackingPhase1.toReplaceWith(detachedQuadStepHitQuadruplets, _caHitQuadrupletEDProducer.clone(
89 doublets =
"detachedQuadStepHitDoublets",
90 extraHitRPhitolerance = detachedQuadStepHitTriplets.extraHitRPhitolerance,
93 value1 = 500, value2 = 100,
95 useBendingCorrection =
True,
97 fitFastCircleChi2Cut =
True,
102 from RecoPixelVertexing.PixelTriplets.pixelQuadrupletMergerEDProducer_cfi
import pixelQuadrupletMergerEDProducer
as _pixelQuadrupletMergerEDProducer
104 _detachedQuadStepHitQuadrupletsMerging = _pixelQuadrupletMergerEDProducer.clone(
105 triplets =
"detachedQuadStepHitTriplets",
106 layerList =
dict(refToPSet_ = cms.string(
"PixelSeedMergerQuadruplets")),
108 from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer_cff
import seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer
109 detachedQuadStepSeeds = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone(
110 seedingHitSets =
"detachedQuadStepHitQuadruplets",
111 SeedComparitorPSet =
dict(
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')
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,
131 _detachedQuadStepHitQuadrupletsMerging.SeedComparitorPSet = detachedQuadStepSeeds.SeedComparitorPSet
133 trackingPhase1PU70.toModify(detachedQuadStepHitTriplets, produceIntermediateHitTriplets=
False, produceSeedingHitSets=
True)
134 trackingPhase1PU70.toReplaceWith(detachedQuadStepHitQuadruplets, _detachedQuadStepHitQuadrupletsMerging)
135 trackingPhase1PU70.toModify(detachedQuadStepSeeds, SeedComparitorPSet=cms.PSet(ComponentName=cms.string(
"none")))
140 _detachedQuadStepTrajectoryFilterBase = _TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
141 minimumNumberOfHits = 3,
144 detachedQuadStepTrajectoryFilterBase = _detachedQuadStepTrajectoryFilterBase.clone(
146 minGoodStripCharge =
dict(refToPSet_ =
'SiStripClusterChargeCutLoose')
148 trackingPhase1PU70.toReplaceWith(detachedQuadStepTrajectoryFilterBase,
149 _detachedQuadStepTrajectoryFilterBase.clone(
150 maxLostHitsFraction = 1./10.,
151 constantValueForLostHitsFractionFilter = 0.501,
154 trackingPhase2PU140.toReplaceWith(detachedQuadStepTrajectoryFilterBase,
155 _detachedQuadStepTrajectoryFilterBase.clone(
156 maxLostHitsFraction = 1./10.,
157 constantValueForLostHitsFractionFilter = 0.301,
160 detachedQuadStepTrajectoryFilter = _TrajectoryFilter_cff.CompositeTrajectoryFilter_block.clone(
161 filters = [cms.PSet(refToPSet_ = cms.string(
'detachedQuadStepTrajectoryFilterBase'))]
163 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryFilter,
164 filters = detachedQuadStepTrajectoryFilter.filters.value()+[cms.PSet(refToPSet_ = cms.string(
'ClusterShapeTrajectoryFilter'))]
166 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryFilter,
167 filters = detachedQuadStepTrajectoryFilter.filters.value()+[cms.PSet(refToPSet_ = cms.string(
'ClusterShapeTrajectoryFilter'))]
171 import RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi
172 detachedQuadStepChi2Est = RecoTracker.MeasurementDet.Chi2ChargeMeasurementEstimator_cfi.Chi2ChargeMeasurementEstimator.clone(
173 ComponentName =
'detachedQuadStepChi2Est',
176 clusterChargeCut =
dict(refToPSet_ =
'SiStripClusterChargeCutTight'),
178 trackingPhase1PU70.toModify(detachedQuadStepChi2Est,
179 clusterChargeCut =
dict(refToPSet_ =
"SiStripClusterChargeCutNone")
181 trackingPhase2PU140.toModify(detachedQuadStepChi2Est,
183 clusterChargeCut =
dict(refToPSet_ =
"SiStripClusterChargeCutNone")
189 detachedQuadStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
190 MeasurementTrackerName =
'',
191 trajectoryFilter =
dict(refToPSet_ =
'detachedQuadStepTrajectoryFilter'),
193 alwaysUseInvalidHits =
True,
194 estimator =
'detachedQuadStepChi2Est',
195 maxDPhiForLooperReconstruction = cms.double(2.0),
196 maxPtForLooperReconstruction = cms.double(0.7)
198 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryBuilder,
200 alwaysUseInvalidHits =
False,
202 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryBuilder,
204 alwaysUseInvalidHits =
False,
209 detachedQuadStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
210 ComponentName = cms.string(
'detachedQuadStepTrajectoryCleanerBySharedHits'),
211 fractionShared = cms.double(0.13),
212 allowSharedFirstHit = cms.bool(
True)
214 trackingPhase1PU70.toModify(detachedQuadStepTrajectoryCleanerBySharedHits,
215 fractionShared = 0.095
217 trackingPhase2PU140.toModify(detachedQuadStepTrajectoryCleanerBySharedHits,
218 fractionShared = 0.09
222 detachedQuadStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
223 src =
'detachedQuadStepSeeds',
224 clustersToSkip = cms.InputTag(
'detachedQuadStepClusters'),
226 numHitsForSeedCleaner = cms.int32(50),
227 onlyPixelHitsForSeedCleaner = cms.bool(
True),
228 TrajectoryBuilderPSet =
dict(refToPSet_ =
'detachedQuadStepTrajectoryBuilder'),
229 TrajectoryCleaner =
'detachedQuadStepTrajectoryCleanerBySharedHits',
230 doSeedingRegionRebuilding =
True,
231 useHitsSplitting =
True
233 trackingPhase2PU140.toModify(detachedQuadStepTrackCandidates,
234 clustersToSkip =
None,
235 phase2clustersToSkip = cms.InputTag(
"detachedQuadStepClusters")
241 detachedQuadStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
242 AlgorithmName =
'detachedQuadStep',
243 src =
'detachedQuadStepTrackCandidates',
244 Fitter =
'FlexibleKFFittingSmoother',
250 detachedQuadStepClassifier1 = TrackMVAClassifierDetached.clone(
251 src =
'detachedQuadStepTracks',
252 GBRForestLabel =
'MVASelectorIter3_13TeV',
253 qualityCuts = [-0.5,0.0,0.5]
255 detachedQuadStepClassifier2 = TrackMVAClassifierPrompt.clone(
256 src =
'detachedQuadStepTracks',
257 GBRForestLabel =
'MVASelectorIter0_13TeV',
258 qualityCuts = [-0.2,0.0,0.4]
262 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
263 detachedQuadStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
264 src =
'detachedQuadStepTracks',
266 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
267 name =
'detachedQuadStepVtxLoose',
269 res_par = ( 0.003, 0.001 ),
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 )
276 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
277 name =
'detachedQuadStepTrkLoose',
279 res_par = ( 0.003, 0.001 ),
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 )
286 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
287 name =
'detachedQuadStepVtxTight',
288 preFilterName =
'detachedQuadStepVtxLoose',
290 res_par = ( 0.003, 0.001 ),
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 )
299 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
300 name =
'detachedQuadStepTrkTight',
301 preFilterName =
'detachedQuadStepTrkLoose',
303 res_par = ( 0.003, 0.001 ),
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 )
312 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
313 name =
'detachedQuadStepVtx',
314 preFilterName =
'detachedQuadStepVtxTight',
316 res_par = ( 0.003, 0.001 ),
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 )
325 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
326 name =
'detachedQuadStepTrk',
327 preFilterName =
'detachedQuadStepTrkTight',
329 res_par = ( 0.003, 0.001 ),
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 )
341 trackingPhase2PU140.toModify(detachedQuadStepSelector,
342 trackSelectors= cms.VPSet(
343 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
344 name =
'detachedQuadStepVtxLoose',
346 res_par = ( 0.003, 0.001 ),
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 )
353 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
354 name =
'detachedQuadStepTrkLoose',
356 res_par = ( 0.003, 0.001 ),
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 )
363 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
364 name =
'detachedQuadStepVtxTight',
365 preFilterName =
'detachedQuadStepVtxLoose',
367 res_par = ( 0.003, 0.001 ),
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 )
376 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
377 name =
'detachedQuadStepTrkTight',
378 preFilterName =
'detachedQuadStepTrkLoose',
380 res_par = ( 0.003, 0.001 ),
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 )
389 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
390 name =
'detachedQuadStepVtx',
391 preFilterName =
'detachedQuadStepVtxTight',
393 res_par = ( 0.003, 0.001 ),
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 )
402 RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
403 name =
'detachedQuadStepTrk',
404 preFilterName =
'detachedQuadStepTrkTight',
406 res_par = ( 0.003, 0.001 ),
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 )
416 vertices =
"pixelVertices"
420 detachedQuadStep = ClassifierMerger.clone()
421 detachedQuadStep.inputClassifiers=[
'detachedQuadStepClassifier1',
'detachedQuadStepClassifier2']
424 trackingPhase1PU70.toReplaceWith(detachedQuadStep, RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
426 'detachedQuadStepTracks',
427 'detachedQuadStepTracks',
430 shareFrac = cms.double(0.095),
431 indivShareFrac = [0.095, 0.095],
432 selectedTrackQuals = [
433 cms.InputTag(
"detachedQuadStepSelector",
"detachedQuadStepVtx"),
434 cms.InputTag(
"detachedQuadStepSelector",
"detachedQuadStepTrk")
436 setsToMerge = [cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(
True) )],
437 writeOnlyTrkQuals =
True
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)
453 DetachedQuadStep = cms.Sequence(detachedQuadStepClusters*
454 detachedQuadStepSeedLayers*
455 detachedQuadStepTrackingRegions*
456 detachedQuadStepHitDoublets*
457 detachedQuadStepHitTriplets*
458 detachedQuadStepHitQuadruplets*
459 detachedQuadStepSeeds*
460 detachedQuadStepTrackCandidates*
461 detachedQuadStepTracks*
462 detachedQuadStepClassifier1*detachedQuadStepClassifier2*
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)