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