CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
MixedTripletStep_cff.py
Go to the documentation of this file.
2 
3 ###############################################################
4 # Large impact parameter Tracking using mixed-triplet seeding #
5 ###############################################################
6 
7 mixedTripletStepClusters = cms.EDProducer("TrackClusterRemover",
8  clusterLessSolution = cms.bool(True),
9  oldClusterRemovalInfo = cms.InputTag("pixelPairStepClusters"),
10  trajectories = cms.InputTag("pixelPairStepTracks"),
11  overrideTrkQuals = cms.InputTag('pixelPairStepSelector','pixelPairStep'),
12  TrackQuality = cms.string('highPurity'),
13  minNumberOfLayersWithMeasBeforeFiltering = cms.int32(0),
14  pixelClusters = cms.InputTag("siPixelClusters"),
15  stripClusters = cms.InputTag("siStripClusters"),
16  doStripChargeCheck = cms.bool(True),
17  stripRecHits = cms.string('siStripMatchedRecHits'),
18  Common = cms.PSet(
19  maxChi2 = cms.double(9.0),
20  minGoodStripCharge = cms.double(2069)
21  )
22 )
23 
24 # SEEDING LAYERS
25 mixedTripletStepSeedLayersA = cms.EDProducer("SeedingLayersEDProducer",
26  layerList = cms.vstring('BPix1+BPix2+BPix3',
27  'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg',
28  'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg',
29  'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg'),
30  BPix = cms.PSet(
31  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
32  HitProducer = cms.string('siPixelRecHits'),
33  skipClusters = cms.InputTag('mixedTripletStepClusters')
34  ),
35  FPix = cms.PSet(
36  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
37  HitProducer = cms.string('siPixelRecHits'),
38  skipClusters = cms.InputTag('mixedTripletStepClusters')
39  ),
40  TEC = cms.PSet(
41  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
42  useRingSlector = cms.bool(True),
43  TTRHBuilder = cms.string('WithTrackAngle'),
44  minRing = cms.int32(1),
45  maxRing = cms.int32(1),
46  skipClusters = cms.InputTag('mixedTripletStepClusters')
47  )
48 )
49 
50 # SEEDS
52 PixelTripletLargeTipGenerator.extraHitRZtolerance = 0.0
53 PixelTripletLargeTipGenerator.extraHitRPhitolerance = 0.0
55 mixedTripletStepSeedsA = RecoTracker.TkSeedGenerator.GlobalSeedsFromTriplets_cff.globalSeedsFromTriplets.clone()
56 mixedTripletStepSeedsA.OrderedHitsFactoryPSet.SeedingLayers = 'mixedTripletStepSeedLayersA'
57 mixedTripletStepSeedsA.OrderedHitsFactoryPSet.GeneratorPSet = cms.PSet(PixelTripletLargeTipGenerator)
58 mixedTripletStepSeedsA.SeedCreatorPSet.ComponentName = 'SeedFromConsecutiveHitsTripletOnlyCreator'
59 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.ptMin = 0.4
60 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.originHalfLength = 15.0
61 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.originRadius = 1.5
62 
64 mixedTripletStepClusterShapeHitFilter = RecoPixelVertexing.PixelLowPtUtilities.ClusterShapeHitFilterESProducer_cfi.ClusterShapeHitFilterESProducer.clone(
65  ComponentName = cms.string('mixedTripletStepClusterShapeHitFilter'),
66  PixelShapeFile= cms.string('RecoPixelVertexing/PixelLowPtUtilities/data/pixelShape.par'),
67  minGoodStripCharge = cms.double(2069)
68  )
69 
70 mixedTripletStepSeedsA.SeedComparitorPSet = cms.PSet(
71  ComponentName = cms.string('PixelClusterShapeSeedComparitor'),
72  FilterAtHelixStage = cms.bool(False),
73  FilterPixelHits = cms.bool(True),
74  FilterStripHits = cms.bool(True),
75  ClusterShapeHitFilterName = cms.string('mixedTripletStepClusterShapeHitFilter'),
76  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache')
77  )
78 
79 # SEEDING LAYERS
80 mixedTripletStepSeedLayersB = cms.EDProducer("SeedingLayersEDProducer",
81  layerList = cms.vstring('BPix2+BPix3+TIB1'),
82  BPix = cms.PSet(
83  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
84  HitProducer = cms.string('siPixelRecHits'),
85  skipClusters = cms.InputTag('mixedTripletStepClusters')
86  ),
87  TIB = cms.PSet(
88  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
89  TTRHBuilder = cms.string('WithTrackAngle'),
90  skipClusters = cms.InputTag('mixedTripletStepClusters')
91  )
92 )
93 
94 # SEEDS
96 PixelTripletLargeTipGenerator.extraHitRZtolerance = 0.0
97 PixelTripletLargeTipGenerator.extraHitRPhitolerance = 0.0
99 mixedTripletStepSeedsB = RecoTracker.TkSeedGenerator.GlobalSeedsFromTriplets_cff.globalSeedsFromTriplets.clone()
100 mixedTripletStepSeedsB.OrderedHitsFactoryPSet.SeedingLayers = 'mixedTripletStepSeedLayersB'
101 mixedTripletStepSeedsB.OrderedHitsFactoryPSet.GeneratorPSet = cms.PSet(PixelTripletLargeTipGenerator)
102 mixedTripletStepSeedsB.SeedCreatorPSet.ComponentName = 'SeedFromConsecutiveHitsTripletOnlyCreator'
103 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.ptMin = 0.6
104 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.originHalfLength = 10.0
105 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.originRadius = 1.5
106 
107 mixedTripletStepSeedsB.SeedComparitorPSet = cms.PSet(
108  ComponentName = cms.string('PixelClusterShapeSeedComparitor'),
109  FilterAtHelixStage = cms.bool(False),
110  FilterPixelHits = cms.bool(True),
111  FilterStripHits = cms.bool(True),
112  ClusterShapeHitFilterName = cms.string('mixedTripletStepClusterShapeHitFilter'),
113  ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache')
114  )
115 
117 mixedTripletStepSeeds = RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi.globalCombinedSeeds.clone()
118 mixedTripletStepSeeds.seedCollections = cms.VInputTag(
119  cms.InputTag('mixedTripletStepSeedsA'),
120  cms.InputTag('mixedTripletStepSeedsB'),
121  )
122 
123 # QUALITY CUTS DURING TRACK BUILDING
125 mixedTripletStepTrajectoryFilter = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
126  maxLostHits = 0,
127  minimumNumberOfHits = 3,
128  minPt = 0.1
129  )
130 
131 # Propagator taking into account momentum uncertainty in multiple scattering calculation.
134 mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagator_cfi.MaterialPropagator.clone(
135 #mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.MaterialPropagatorParabolicMF.clone(
136  ComponentName = 'mixedTripletStepPropagator',
137  ptMin = 0.1
138  )
139 
141 mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.OppositeMaterialPropagator_cfi.OppositeMaterialPropagator.clone(
142 #mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.OppositeMaterialPropagatorParabolicMF.clone(
143  ComponentName = 'mixedTripletStepPropagatorOpposite',
144  ptMin = 0.1
145  )
146 
147 import TrackingTools.KalmanUpdators.Chi2ChargeMeasurementEstimatorESProducer_cfi
148 mixedTripletStepChi2Est = TrackingTools.KalmanUpdators.Chi2ChargeMeasurementEstimatorESProducer_cfi.Chi2ChargeMeasurementEstimator.clone(
149  ComponentName = cms.string('mixedTripletStepChi2Est'),
150  nSigma = cms.double(3.0),
151  MaxChi2 = cms.double(16.0),
152  minGoodStripCharge = cms.double(2069)
153 )
154 
155 # TRACK BUILDING
157 mixedTripletStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
158  MeasurementTrackerName = '',
159  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('mixedTripletStepTrajectoryFilter')),
160  propagatorAlong = cms.string('mixedTripletStepPropagator'),
161  propagatorOpposite = cms.string('mixedTripletStepPropagatorOpposite'),
162  maxCand = 2,
163  estimator = cms.string('mixedTripletStepChi2Est'),
164  maxDPhiForLooperReconstruction = cms.double(2.0),
165  maxPtForLooperReconstruction = cms.double(0.7)
166  )
167 
168 # MAKING OF TRACK CANDIDATES
170 mixedTripletStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
171  src = cms.InputTag('mixedTripletStepSeeds'),
172  clustersToSkip = cms.InputTag('mixedTripletStepClusters'),
173  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
174  numHitsForSeedCleaner = cms.int32(50),
175  #onlyPixelHitsForSeedCleaner = cms.bool(True),
176 
177  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('mixedTripletStepTrajectoryBuilder')),
178  doSeedingRegionRebuilding = True,
179  useHitsSplitting = True
180 )
181 
182 
183 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits
184 mixedTripletStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
185  ComponentName = cms.string('mixedTripletStepTrajectoryCleanerBySharedHits'),
186  fractionShared = cms.double(0.11),
187  allowSharedFirstHit = cms.bool(True)
188  )
189 mixedTripletStepTrackCandidates.TrajectoryCleaner = 'mixedTripletStepTrajectoryCleanerBySharedHits'
190 
191 
192 # TRACK FITTING
194 mixedTripletStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
195  AlgorithmName = cms.string('iter4'),
196  src = 'mixedTripletStepTrackCandidates',
197  Fitter = cms.string('FlexibleKFFittingSmoother')
198 )
199 
200 # TRACK SELECTION AND QUALITY FLAG SETTING.
201 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
202 mixedTripletStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
203  src='mixedTripletStepTracks',
204  useAnyMVA = cms.bool(True),
205  GBRForestLabel = cms.string('MVASelectorIter4_13TeV_v0'),
206  trackSelectors= cms.VPSet(
207  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
208  name = 'mixedTripletStepVtxLoose',
209  useMVA = cms.bool(True),
210  minMVA = cms.double(-0.5),
211  chi2n_par = 9999,
212  #chi2n_par = 1.0,
213  #res_par = ( 0.003, 0.001 ),
214  #minNumberLayers = 3,
215  #maxNumberLostLayers = 1,
216  #minNumber3DLayers = 2,
217  d0_par1 = ( 1.2, 3.0 ),
218  dz_par1 = ( 1.2, 3.0 ),
219  d0_par2 = ( 1.3, 3.0 ),
220  dz_par2 = ( 1.3, 3.0 )
221  ),
222  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
223  name = 'mixedTripletStepTrkLoose',
224  useMVA = cms.bool(True),
225  minMVA = cms.double(-0.5),
226  chi2n_par = 9999,
227  #chi2n_par = 0.6,
228  #res_par = ( 0.003, 0.001 ),
229  #minNumberLayers = 4,
230  #maxNumberLostLayers = 1,
231  #minNumber3DLayers = 3,
232  d0_par1 = ( 1.1, 4.0 ),
233  dz_par1 = ( 1.1, 4.0 ),
234  d0_par2 = ( 1.1, 4.0 ),
235  dz_par2 = ( 1.1, 4.0 )
236  ),
237  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
238  name = 'mixedTripletStepVtxTight',
239  preFilterName = 'mixedTripletStepVtxLoose',
240  chi2n_par = 0.6,
241  res_par = ( 0.003, 0.001 ),
242  minNumberLayers = 3,
243  maxNumberLostLayers = 1,
244  minNumber3DLayers = 3,
245  d0_par1 = ( 1.1, 3.0 ),
246  dz_par1 = ( 1.1, 3.0 ),
247  d0_par2 = ( 1.2, 3.0 ),
248  dz_par2 = ( 1.2, 3.0 )
249  ),
250  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
251  name = 'mixedTripletStepTrkTight',
252  preFilterName = 'mixedTripletStepTrkLoose',
253  chi2n_par = 0.4,
254  res_par = ( 0.003, 0.001 ),
255  minNumberLayers = 5,
256  maxNumberLostLayers = 1,
257  minNumber3DLayers = 4,
258  d0_par1 = ( 1.0, 4.0 ),
259  dz_par1 = ( 1.0, 4.0 ),
260  d0_par2 = ( 1.0, 4.0 ),
261  dz_par2 = ( 1.0, 4.0 )
262  ),
263  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
264  name = 'mixedTripletStepVtx',
265  preFilterName = 'mixedTripletStepVtxLoose',
266  chi2n_par = 9999,
267  useMVA = cms.bool(True),
268  minMVA = cms.double(0.5),
269  qualityBit = cms.string('highPurity'),
270  keepAllTracks = cms.bool(True),
271  #chi2n_par = 0.4,
272  #res_par = ( 0.003, 0.001 ),
273  #minNumberLayers = 3,
274  #maxNumberLostLayers = 1,
275  #minNumber3DLayers = 3,
276  #max_minMissHitOutOrIn = 1,
277  #max_lostHitFraction = 1.0,
278  d0_par1 = ( 1.0, 3.0 ),
279  dz_par1 = ( 1.0, 3.0 ),
280  d0_par2 = ( 1.1, 3.0 ),
281  dz_par2 = ( 1.1, 3.0 )
282  ),
283  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
284  name = 'mixedTripletStepTrk',
285  preFilterName = 'mixedTripletStepTrkLoose',
286  chi2n_par = 9999,
287  useMVA = cms.bool(True),
288  minMVA = cms.double(0.5),
289  qualityBit = cms.string('highPurity'),
290  keepAllTracks = cms.bool(True),
291  #chi2n_par = 0.25,
292  #res_par = ( 0.003, 0.001 ),
293  #minNumberLayers = 5,
294  #maxNumberLostLayers = 0,
295  #minNumber3DLayers = 4,
296  #max_minMissHitOutOrIn = 1,
297  #max_lostHitFraction = 1.0,
298  d0_par1 = ( 0.8, 4.0 ),
299  dz_par1 = ( 0.8, 4.0 ),
300  d0_par2 = ( 0.8, 4.0 ),
301  dz_par2 = ( 0.8, 4.0 )
302  )
303  ) #end of vpset
304  ) #end of clone
305 
306 import RecoTracker.FinalTrackSelectors.trackListMerger_cfi
307 mixedTripletStep = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
308  TrackProducers = cms.VInputTag(cms.InputTag('mixedTripletStepTracks'),
309  cms.InputTag('mixedTripletStepTracks')),
310  hasSelector=cms.vint32(1,1),
311  shareFrac=cms.double(0.11),
312  indivShareFrac=cms.vdouble(0.11,0.11),
313  selectedTrackQuals = cms.VInputTag(cms.InputTag("mixedTripletStepSelector","mixedTripletStepVtx"),
314  cms.InputTag("mixedTripletStepSelector","mixedTripletStepTrk")),
315  setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )),
316  writeOnlyTrkQuals=cms.bool(True)
317 )
318 
319 
320 MixedTripletStep = cms.Sequence(mixedTripletStepClusters*
321  mixedTripletStepSeedLayersA*
322  mixedTripletStepSeedsA*
323  mixedTripletStepSeedLayersB*
324  mixedTripletStepSeedsB*
325  mixedTripletStepSeeds*
326  mixedTripletStepTrackCandidates*
327  mixedTripletStepTracks*
328  mixedTripletStepSelector*
329  mixedTripletStep)