CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
ConversionStep_cff.py
Go to the documentation of this file.
2 
5 
6 convClusters = cms.EDProducer("TrackClusterRemover",
7  clusterLessSolution = cms.bool(True),
8  oldClusterRemovalInfo = cms.InputTag("tobTecStepClusters"),
9  trajectories = cms.InputTag("tobTecStepTracks"),
10  overrideTrkQuals = cms.InputTag('tobTecStepSelector','tobTecStep'),
11  TrackQuality = cms.string('highPurity'),
12  pixelClusters = cms.InputTag("siPixelClusters"),
13  stripClusters = cms.InputTag("siStripClusters"),
14  Common = cms.PSet(maxChi2 = cms.double(30.0))
15  )
16 
17 convLayerPairs = cms.EDProducer("SeedingLayersEDProducer",
18  layerList = cms.vstring('BPix1+BPix2',
19 
20  'BPix2+BPix3',
21  'BPix2+FPix1_pos',
22  'BPix2+FPix1_neg',
23  'BPix2+FPix2_pos',
24  'BPix2+FPix2_neg',
25 
26  'FPix1_pos+FPix2_pos',
27  'FPix1_neg+FPix2_neg',
28 
29  'BPix3+TIB1',
30  'BPix3+TIB2',
31 
32  'TIB1+TID1_pos',
33  'TIB1+TID1_neg',
34  'TIB1+TID2_pos',
35  'TIB1+TID2_neg',
36  'TIB1+TIB2',
37  'TIB1+TIB3',
38 
39  'TIB2+TID1_pos',
40  'TIB2+TID1_neg',
41  'TIB2+TID2_pos',
42  'TIB2+TID2_neg',
43  'TIB2+TIB3',
44  'TIB2+TIB4',
45 
46  'TIB3+TIB4',
47  'TIB3+TOB1',
48  'TIB3+TID1_pos',
49  'TIB3+TID1_neg',
50 
51  'TIB4+TOB1',
52  'TIB4+TOB2',
53 
54  'TOB1+TOB2',
55  'TOB1+TOB3',
56  'TOB1+TEC1_pos',
57  'TOB1+TEC1_neg',
58 
59  'TOB2+TOB3',
60  'TOB2+TOB4',
61  'TOB2+TEC1_pos',
62  'TOB2+TEC1_neg',
63 
64  #NB: re-introduce these combinations when large displaced
65  # tracks, reconstructed only in TOB will be available
66  # For instance think at the OutIn Ecal Seeded tracks
67  #'TOB3+TOB4',
68  #'TOB3+TOB5',
69  #'TOB3+TEC1_pos',
70  #'TOB3+TEC1_neg',
71  #
72  #'TOB4+TOB5',
73  #'TOB4+TOB6',
74  #
75  #'TOB5+TOB6',
76 
77  'TID1_pos+TID2_pos',
78  'TID2_pos+TID3_pos',
79  'TID3_pos+TEC1_pos',
80 
81  'TID1_neg+TID2_neg',
82  'TID2_neg+TID3_neg',
83  'TID3_neg+TEC1_neg',
84 
85  'TEC1_pos+TEC2_pos',
86  'TEC2_pos+TEC3_pos',
87  'TEC3_pos+TEC4_pos',
88  'TEC4_pos+TEC5_pos',
89  'TEC5_pos+TEC6_pos',
90  'TEC6_pos+TEC7_pos',
91  'TEC7_pos+TEC8_pos',
92 
93  'TEC1_neg+TEC2_neg',
94  'TEC2_neg+TEC3_neg',
95  'TEC3_neg+TEC4_neg',
96  'TEC4_neg+TEC5_neg',
97  'TEC5_neg+TEC6_neg',
98  'TEC6_neg+TEC7_neg',
99  'TEC7_neg+TEC8_neg'
100  #other combinations could be added
101  ),
102 
103  BPix = cms.PSet(
104  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
105  HitProducer = cms.string('siPixelRecHits'),
106  skipClusters = cms.InputTag('convClusters'),
107  ),
108  FPix = cms.PSet(
109  TTRHBuilder = cms.string('TTRHBuilderWithoutAngle4PixelPairs'),
110  HitProducer = cms.string('siPixelRecHits'),
111  skipClusters = cms.InputTag('convClusters'),
112  ),
113  TIB1 = cms.PSet(
114  TTRHBuilder = cms.string('WithTrackAngle'),
115  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
116  skipClusters = cms.InputTag('convClusters'),
117  ),
118  TIB2 = cms.PSet(
119  TTRHBuilder = cms.string('WithTrackAngle'),
120  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
121  skipClusters = cms.InputTag('convClusters'),
122  ),
123  TIB3 = cms.PSet(
124  TTRHBuilder = cms.string('WithTrackAngle'),
125  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
126  skipClusters = cms.InputTag('convClusters'),
127  ),
128  TIB4 = cms.PSet(
129  TTRHBuilder = cms.string('WithTrackAngle'),
130  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
131  skipClusters = cms.InputTag('convClusters'),
132  ),
133  TID1 = cms.PSet(
134  useSimpleRphiHitsCleaner = cms.bool(False),
135  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
136  useRingSlector = cms.bool(True),
137  TTRHBuilder = cms.string('WithTrackAngle'),
138  maxRing = cms.int32(2),
139  minRing = cms.int32(1),
140  skipClusters = cms.InputTag('convClusters'),
141  ),
142  TID2 = cms.PSet(
143  useSimpleRphiHitsCleaner = cms.bool(False),
144  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
145  useRingSlector = cms.bool(True),
146  TTRHBuilder = cms.string('WithTrackAngle'),
147  maxRing = cms.int32(2),
148  minRing = cms.int32(1),
149  skipClusters = cms.InputTag('convClusters'),
150  ),
151  TID3 = cms.PSet(
152  useSimpleRphiHitsCleaner = cms.bool(False),
153  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
154  useRingSlector = cms.bool(True),
155  TTRHBuilder = cms.string('WithTrackAngle'),
156  maxRing = cms.int32(2),
157  minRing = cms.int32(1),
158  skipClusters = cms.InputTag('convClusters'),
159  ),
160  TEC = cms.PSet(
161  useSimpleRphiHitsCleaner = cms.bool(False),
162  minRing = cms.int32(1),
163  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
164  useRingSlector = cms.bool(True),
165  TTRHBuilder = cms.string('WithTrackAngle'),
166  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHitUnmatched"),
167  maxRing = cms.int32(7),
168  stereoRecHits = cms.InputTag("siStripMatchedRecHits","stereoRecHitUnmatched"),
169  skipClusters = cms.InputTag('convClusters'),
170  ),
171  TOB1 = cms.PSet(
172  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
173  TTRHBuilder = cms.string('WithTrackAngle'),
174  skipClusters = cms.InputTag('convClusters'),
175  ),
176  TOB2 = cms.PSet(
177  matchedRecHits = cms.InputTag("siStripMatchedRecHits","matchedRecHit"),
178  TTRHBuilder = cms.string('WithTrackAngle'),
179  skipClusters = cms.InputTag('convClusters'),
180  ),
181  TOB3 = cms.PSet(
182  TTRHBuilder = cms.string('WithTrackAngle'),
183  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
184  skipClusters = cms.InputTag('convClusters'),
185  ),
186  TOB4 = cms.PSet(
187  TTRHBuilder = cms.string('WithTrackAngle'),
188  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
189  skipClusters = cms.InputTag('convClusters'),
190  ),
191  TOB5 = cms.PSet(
192  TTRHBuilder = cms.string('WithTrackAngle'),
193  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
194  skipClusters = cms.InputTag('convClusters'),
195  ),
196  TOB6 = cms.PSet(
197  TTRHBuilder = cms.string('WithTrackAngle'),
198  rphiRecHits = cms.InputTag("siStripMatchedRecHits","rphiRecHit"),
199  skipClusters = cms.InputTag('convClusters'),
200  )
201  )
202 
203 
204 photonConvTrajSeedFromSingleLeg.TrackRefitter = cms.InputTag('generalTracks')
205 photonConvTrajSeedFromSingleLeg.primaryVerticesTag = cms.InputTag('pixelVertices')
206 #photonConvTrajSeedFromQuadruplets.TrackRefitter = cms.InputTag('generalTracks')
207 #photonConvTrajSeedFromQuadruplets.primaryVerticesTag = cms.InputTag('pixelVertices')
208 
209 
210 # TRACKER DATA CONTROL
211 
212 # QUALITY CUTS DURING TRACK BUILDING
214 convCkfTrajectoryFilter = TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff.CkfBaseTrajectoryFilter_block.clone(
215  maxLostHits = 1,
216  minimumNumberOfHits = 3,
217  minPt = 0.1
218  )
219 
220 # TRACK BUILDING
222 convCkfTrajectoryBuilder = RecoTracker.CkfPattern.GroupedCkfTrajectoryBuilder_cfi.GroupedCkfTrajectoryBuilder.clone(
223  trajectoryFilter = cms.PSet(refToPSet_ = cms.string('convCkfTrajectoryFilter')),
224  minNrOfHitsForRebuild = 3,
225  maxCand = 1
226  )
227 
228 # MAKING OF TRACK CANDIDATES
230 convTrackCandidates = RecoTracker.CkfPattern.CkfTrackCandidates_cfi.ckfTrackCandidates.clone(
231  src = cms.InputTag('photonConvTrajSeedFromSingleLeg:convSeedCandidates'),
232  clustersToSkip = cms.InputTag('convClusters'),
233  TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('convCkfTrajectoryBuilder'))
234 )
235 
237 convStepFitterSmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.KFFittingSmootherWithOutliersRejectionAndRK.clone(
238  ComponentName = 'convStepFitterSmoother',
239  EstimateCut = 30,
240  Smoother = cms.string('convStepRKSmoother')
241  )
242 
243 convStepRKTrajectorySmoother = TrackingTools.TrackFitters.RungeKuttaFitters_cff.RKTrajectorySmoother.clone(
244  ComponentName = cms.string('convStepRKSmoother'),
245  errorRescaling = 10.0
246  )
247 
248 
249 # TRACK FITTING
251 convStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone(
252  src = 'convTrackCandidates',
253  AlgorithmName = cms.string('iter8'),
254  Fitter = 'convStepFitterSmoother',
255  )
256 
257 
258 import RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi
259 convStepSelector = RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.multiTrackSelector.clone(
260  src='convStepTracks',
261  trackSelectors= cms.VPSet(
262  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.looseMTS.clone(
263  name = 'convStepLoose',
264  applyAdaptedPVCuts = False,
265  chi2n_par = 3.0,
266  res_par = ( 0.003, 0.001 ),
267  minNumberLayers = 3,
268  maxNumberLostLayers = 1,
269  minNumber3DLayers = 1,
270  d0_par1 = ( 5., 8.0 ),
271  dz_par1 = ( 5., 8.0 ),
272  d0_par2 = ( 5., 8.0 ),
273  dz_par2 = ( 5., 8.0 )
274  ),
275  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.tightMTS.clone(
276  name = 'convStepTight',
277  preFilterName = 'convStepLoose',
278  chi2n_par = 2.5,
279  res_par = ( 0.003, 0.001 ),
280  minNumberLayers = 3,
281  maxNumberLostLayers = 1,
282  minNumber3DLayers = 1,
283  d0_par1 = ( 5., 8.0 ),
284  dz_par1 = ( 5., 8.0 ),
285  d0_par2 = ( 5., 8.0 ),
286  dz_par2 = ( 5., 8.0 )
287  ),
288  RecoTracker.FinalTrackSelectors.multiTrackSelector_cfi.highpurityMTS.clone(
289  name = 'convStep',
290  preFilterName = 'convStepTight',
291  chi2n_par = 2.0,
292  res_par = ( 0.003, 0.001 ),
293  minNumberLayers = 3,
294  maxNumberLostLayers = 1,
295  minNumber3DLayers = 1,
296  d0_par1 = ( 5., 8.0 ),
297  dz_par1 = ( 5., 8.0 ),
298  d0_par2 = ( 5., 8.0 ),
299  dz_par2 = ( 5., 8.0 )
300  ),
301  ) #end of vpset
302  ) #end of clone
303 
304 ConvStep = cms.Sequence( convClusters
305  + convLayerPairs
306  + photonConvTrajSeedFromSingleLeg
307  + convTrackCandidates
308  + convStepTracks
309  + convStepSelector
310  #+ Conv2Step #full quad-seeding sequence
311  )
312 
313 
314 ### Quad-seeding sequence disabled (#+ Conv2Step)
315 # if enabled, the quad-seeded tracks have to be merged with the single-leg seeded tracks
316 # in RecoTracker.FinalTrackSelectors.MergeTrackCollections_cff change:
317 ###
318 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
319 # TrackProducers = cms.VInputTag(cms.InputTag('convStepTracks')),
320 # hasSelector=cms.vint32(1),
321 # selectedTrackQuals = cms.VInputTag(cms.InputTag("convStepSelector","convStep")
322 # ),
323 # setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(1), pQual=cms.bool(True) )
324 # ),
325 # copyExtras = True,
326 # makeReKeyedSeeds = cms.untracked.bool(False)
327 # )
328 ###
329 # TO this:
330 ###
331 #conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone(
332 # TrackProducers = cms.VInputTag(
333 # cms.InputTag('convStepTracks'),
334 # cms.InputTag('conv2StepTracks')
335 # ),
336 # hasSelector=cms.vint32(1,1),
337 # selectedTrackQuals = cms.VInputTag(
338 # cms.InputTag("convStepSelector","convStep"),
339 # cms.InputTag("conv2StepSelector","conv2Step")
340 # ),
341 # setsToMerge = cms.VPSet( cms.PSet( tLists=cms.vint32(0,1), pQual=cms.bool(True) )
342 # ),
343 # copyExtras = True,
344 # makeReKeyedSeeds = cms.untracked.bool(False)
345 # )
346 ###