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  Common = cms.PSet(
17  maxChi2 = cms.double(9.0)
18  )
19 )
20 
21 # SEEDING LAYERS
22 mixedTripletStepSeedLayersA = cms.EDProducer("SeedingLayersEDProducer",
23  layerList = cms.vstring('BPix1+BPix2+BPix3',
24  'BPix1+BPix2+FPix1_pos', 'BPix1+BPix2+FPix1_neg',
25  'BPix1+FPix1_pos+FPix2_pos', 'BPix1+FPix1_neg+FPix2_neg',
26  'BPix2+FPix1_pos+FPix2_pos', 'BPix2+FPix1_neg+FPix2_neg'),
27  BPix = cms.PSet(
28  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
29  HitProducer = cms.string('siPixelRecHits'),
30  skipClusters = cms.InputTag('mixedTripletStepClusters')
31  ),
32  FPix = cms.PSet(
33  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
34  HitProducer = cms.string('siPixelRecHits'),
35  skipClusters = cms.InputTag('mixedTripletStepClusters')
36  ),
37  TEC = cms.PSet(
38  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
39  useRingSlector = cms.bool(True),
40  TTRHBuilder = cms.string('WithTrackAngle'),
41  minRing = cms.int32(1),
42  maxRing = cms.int32(1),
43  skipClusters = cms.InputTag('mixedTripletStepClusters')
44  )
45 )
46 
47 # SEEDS
49 PixelTripletLargeTipGenerator.extraHitRZtolerance = 0.0
50 PixelTripletLargeTipGenerator.extraHitRPhitolerance = 0.0
52 mixedTripletStepSeedsA = RecoTracker.TkSeedGenerator.GlobalSeedsFromTriplets_cff.globalSeedsFromTriplets.clone()
53 mixedTripletStepSeedsA.OrderedHitsFactoryPSet.SeedingLayers = 'mixedTripletStepSeedLayersA'
54 mixedTripletStepSeedsA.OrderedHitsFactoryPSet.GeneratorPSet = cms.PSet(PixelTripletLargeTipGenerator)
55 mixedTripletStepSeedsA.SeedCreatorPSet.ComponentName = 'SeedFromConsecutiveHitsTripletOnlyCreator'
56 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.ptMin = 0.4
57 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.originHalfLength = 15.0
58 mixedTripletStepSeedsA.RegionFactoryPSet.RegionPSet.originRadius = 1.5
59 
60 mixedTripletStepSeedsA.SeedComparitorPSet = cms.PSet(
61  ComponentName = cms.string('PixelClusterShapeSeedComparitor'),
62  FilterAtHelixStage = cms.bool(False),
63  FilterPixelHits = cms.bool(True),
64  FilterStripHits = cms.bool(True),
65  ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter')
66  )
67 
68 # SEEDING LAYERS
69 mixedTripletStepSeedLayersB = cms.EDProducer("SeedingLayersEDProducer",
70  layerList = cms.vstring('BPix2+BPix3+TIB1'),
71  BPix = cms.PSet(
72  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4MixedTriplets'),
73  HitProducer = cms.string('siPixelRecHits'),
74  skipClusters = cms.InputTag('mixedTripletStepClusters')
75  ),
76  TIB = cms.PSet(
77  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
78  TTRHBuilder = cms.string('WithTrackAngle'),
79  skipClusters = cms.InputTag('mixedTripletStepClusters')
80  )
81 )
82 
83 # SEEDS
85 PixelTripletLargeTipGenerator.extraHitRZtolerance = 0.0
86 PixelTripletLargeTipGenerator.extraHitRPhitolerance = 0.0
88 mixedTripletStepSeedsB = RecoTracker.TkSeedGenerator.GlobalSeedsFromTriplets_cff.globalSeedsFromTriplets.clone()
89 mixedTripletStepSeedsB.OrderedHitsFactoryPSet.SeedingLayers = 'mixedTripletStepSeedLayersB'
90 mixedTripletStepSeedsB.OrderedHitsFactoryPSet.GeneratorPSet = cms.PSet(PixelTripletLargeTipGenerator)
91 mixedTripletStepSeedsB.SeedCreatorPSet.ComponentName = 'SeedFromConsecutiveHitsTripletOnlyCreator'
92 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.ptMin = 0.6
93 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.originHalfLength = 10.0
94 mixedTripletStepSeedsB.RegionFactoryPSet.RegionPSet.originRadius = 1.5
95 
96 mixedTripletStepSeedsB.SeedComparitorPSet = cms.PSet(
97  ComponentName = cms.string('PixelClusterShapeSeedComparitor'),
98  FilterAtHelixStage = cms.bool(False),
99  FilterPixelHits = cms.bool(True),
100  FilterStripHits = cms.bool(True),
101  ClusterShapeHitFilterName = cms.string('ClusterShapeHitFilter')
102  )
103 
105 mixedTripletStepSeeds = RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi.globalCombinedSeeds.clone()
106 mixedTripletStepSeeds.seedCollections = cms.VInputTag(
107  cms.InputTag('mixedTripletStepSeedsA'),
108  cms.InputTag('mixedTripletStepSeedsB'),
109  )
110 
111 # QUALITY CUTS DURING TRACK BUILDING
112 import TrackingTools.TrajectoryFiltering.TrajectoryFilterESProducer_cfi
113 mixedTripletStepTrajectoryFilter = TrackingTools.TrajectoryFiltering.TrajectoryFilterESProducer_cfi.trajectoryFilterESProducer.clone(
114  ComponentName = 'mixedTripletStepTrajectoryFilter',
115  filterPset = TrackingTools.TrajectoryFiltering.TrajectoryFilterESProducer_cfi.trajectoryFilterESProducer.filterPset.clone(
116  maxLostHits = 0,
117  minimumNumberOfHits = 3,
118  minPt = 0.1
119  )
120  )
121 
122 # Propagator taking into account momentum uncertainty in multiple scattering calculation.
125 mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagator_cfi.MaterialPropagator.clone(
126 #mixedTripletStepPropagator = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.MaterialPropagatorParabolicMF.clone(
127  ComponentName = 'mixedTripletStepPropagator',
128  ptMin = 0.1
129  )
130 
132 mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.OppositeMaterialPropagator_cfi.OppositeMaterialPropagator.clone(
133 #mixedTripletStepPropagatorOpposite = TrackingTools.MaterialEffects.MaterialPropagatorParabolicMf_cff.OppositeMaterialPropagatorParabolicMF.clone(
134  ComponentName = 'mixedTripletStepPropagatorOpposite',
135  ptMin = 0.1
136  )
137 
139 mixedTripletStepChi2Est = TrackingTools.KalmanUpdators.Chi2MeasurementEstimatorESProducer_cfi.Chi2MeasurementEstimator.clone(
140  ComponentName = cms.string('mixedTripletStepChi2Est'),
141  nSigma = cms.double(3.0),
142  MaxChi2 = cms.double(16.0)
143 )
144 
145 # TRACK BUILDING
147 mixedTripletStepTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilderESProducer_cfi.GroupedCkfTrajectoryBuilder.clone(
148  ComponentName = 'mixedTripletStepTrajectoryBuilder',
149  MeasurementTrackerName = '',
150  trajectoryFilterName = 'mixedTripletStepTrajectoryFilter',
151  propagatorAlong = cms.string('mixedTripletStepPropagator'),
152  propagatorOpposite = cms.string('mixedTripletStepPropagatorOpposite'),
153  maxCand = 2,
154  estimator = cms.string('mixedTripletStepChi2Est'),
155  maxDPhiForLooperReconstruction = cms.double(2.0),
156  maxPtForLooperReconstruction = cms.double(0.7)
157  )
158 
159 # MAKING OF TRACK CANDIDATES
161 mixedTripletStepTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
162  src = cms.InputTag('mixedTripletStepSeeds'),
163  clustersToSkip = cms.InputTag('mixedTripletStepClusters'),
164  ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput
165  numHitsForSeedCleaner = cms.int32(50),
166  #onlyPixelHitsForSeedCleaner = cms.bool(True),
167 
168  TrajectoryBuilder = 'mixedTripletStepTrajectoryBuilder',
169  doSeedingRegionRebuilding = True,
170  useHitsSplitting = True
171 )
172 
173 
174 from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits
175 mixedTripletStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone(
176  ComponentName = cms.string('mixedTripletStepTrajectoryCleanerBySharedHits'),
177  fractionShared = cms.double(0.11),
178  allowSharedFirstHit = cms.bool(True)
179  )
180 mixedTripletStepTrackCandidates.TrajectoryCleaner = 'mixedTripletStepTrajectoryCleanerBySharedHits'
181 
182 
183 # TRACK FITTING
185 mixedTripletStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
186  AlgorithmName = cms.string('iter4'),
187  src = 'mixedTripletStepTrackCandidates',
188  Fitter = cms.string('FlexibleKFFittingSmoother')
189 )
190 
191 # TRACK SELECTION AND QUALITY FLAG SETTING.
192 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
193 mixedTripletStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
194  src='mixedTripletStepTracks',
195  useAnyMVA = cms.bool(True),
196  GBRForestLabel = cms.string('MVASelectorIter4'),
197  trackSelectors= cms.VPSet(
198  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
199  name = 'mixedTripletStepVtxLoose',
200  chi2n_par = 1.0,
201  res_par = ( 0.003, 0.001 ),
202  minNumberLayers = 3,
203  maxNumberLostLayers = 1,
204  minNumber3DLayers = 2,
205  d0_par1 = ( 1.2, 3.0 ),
206  dz_par1 = ( 1.2, 3.0 ),
207  d0_par2 = ( 1.3, 3.0 ),
208  dz_par2 = ( 1.3, 3.0 )
209  ),
210  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
211  name = 'mixedTripletStepTrkLoose',
212  chi2n_par = 0.6,
213  res_par = ( 0.003, 0.001 ),
214  minNumberLayers = 4,
215  maxNumberLostLayers = 1,
216  minNumber3DLayers = 3,
217  d0_par1 = ( 1.1, 4.0 ),
218  dz_par1 = ( 1.1, 4.0 ),
219  d0_par2 = ( 1.1, 4.0 ),
220  dz_par2 = ( 1.1, 4.0 )
221  ),
222  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
223  name = 'mixedTripletStepVtxTight',
224  preFilterName = 'mixedTripletStepVtxLoose',
225  chi2n_par = 0.6,
226  res_par = ( 0.003, 0.001 ),
227  minNumberLayers = 3,
228  maxNumberLostLayers = 1,
229  minNumber3DLayers = 3,
230  d0_par1 = ( 1.1, 3.0 ),
231  dz_par1 = ( 1.1, 3.0 ),
232  d0_par2 = ( 1.2, 3.0 ),
233  dz_par2 = ( 1.2, 3.0 )
234  ),
235  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
236  name = 'mixedTripletStepTrkTight',
237  preFilterName = 'mixedTripletStepTrkLoose',
238  chi2n_par = 0.4,
239  res_par = ( 0.003, 0.001 ),
240  minNumberLayers = 5,
241  maxNumberLostLayers = 1,
242  minNumber3DLayers = 4,
243  d0_par1 = ( 1.0, 4.0 ),
244  dz_par1 = ( 1.0, 4.0 ),
245  d0_par2 = ( 1.0, 4.0 ),
246  dz_par2 = ( 1.0, 4.0 )
247  ),
248  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
249  name = 'mixedTripletStepVtx',
250  preFilterName = 'mixedTripletStepVtxTight',
251  chi2n_par = 0.4,
252  res_par = ( 0.003, 0.001 ),
253  minNumberLayers = 3,
254  maxNumberLostLayers = 1,
255  minNumber3DLayers = 3,
256  max_minMissHitOutOrIn = 1,
257  max_lostHitFraction = 1.0,
258  d0_par1 = ( 1.0, 3.0 ),
259  dz_par1 = ( 1.0, 3.0 ),
260  d0_par2 = ( 1.1, 3.0 ),
261  dz_par2 = ( 1.1, 3.0 )
262  ),
263  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
264  name = 'mixedTripletStepTrk',
265  preFilterName = 'mixedTripletStepTrkTight',
266  chi2n_par = 0.25,
267  res_par = ( 0.003, 0.001 ),
268  minNumberLayers = 5,
269  maxNumberLostLayers = 0,
270  minNumber3DLayers = 4,
271  max_minMissHitOutOrIn = 1,
272  max_lostHitFraction = 1.0,
273  d0_par1 = ( 0.8, 4.0 ),
274  dz_par1 = ( 0.8, 4.0 ),
275  d0_par2 = ( 0.8, 4.0 ),
276  dz_par2 = ( 0.8, 4.0 )
277  )
278  ) #end of vpset
279  ) #end of clone
280 
281 import RecoTracker.FinalTrackSelectors.trackListMerger_cfi
282 mixedTripletStep = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
283  TrackProducers = cms.VInputTag(cms.InputTag('mixedTripletStepTracks'),
284  cms.InputTag('mixedTripletStepTracks')),
285  hasSelector=cms.vint32(1,1),
286  shareFrac=cms.double(0.11),
287  indivShareFrac=cms.vdouble(0.11,0.11),
288  selectedTrackQuals = cms.VInputTag(cms.InputTag("mixedTripletStepSelector","mixedTripletStepVtx"),
289  cms.InputTag("mixedTripletStepSelector","mixedTripletStepTrk")),
290  setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )),
291  writeOnlyTrkQuals=cms.bool(True)
292 )
293 
294 
295 MixedTripletStep = cms.Sequence(mixedTripletStepClusters*
296  mixedTripletStepSeedLayersA*
297  mixedTripletStepSeedsA*
298  mixedTripletStepSeedLayersB*
299  mixedTripletStepSeedsB*
300  mixedTripletStepSeeds*
301  mixedTripletStepTrackCandidates*
302  mixedTripletStepTracks*
303  mixedTripletStepSelector*
304  mixedTripletStep)