CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
phase1TkCustoms.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
5 from SLHCUpgradeSimulations.Configuration.customise_mixing import customise_pixelMixing_PU
6 
7 from Configuration.StandardSequences.Eras import eras
8 
9 def customise(process):
10  if hasattr(process,'DigiToRaw'):
11  process=customise_DigiToRaw(process)
12  if hasattr(process,'RawToDigi'):
13  process=customise_RawToDigi(process)
14  n=0
15  if hasattr(process,'reconstruction') or hasattr(process,'dqmoffline_step'):
16  if hasattr(process,'mix'):
17  if hasattr(process.mix,'input'):
18  n=process.mix.input.nbPileupEvents.averageNumber.value()
19  else:
20  print 'phase1TkCustoms requires a --pileup option to cmsDriver to run the reconstruction/dqm'
21  print 'Please provide one!'
22  sys.exit(1)
23  if hasattr(process,'reconstruction'):
24  process=customise_Reco(process,float(n))
25 
26  if hasattr(process,'digitisation_step'):
27  process=customise_Digi(process)
28  if hasattr(process,'dqmoffline_step'):
29  process=customise_DQM(process,n)
30  if hasattr(process,'dqmHarvesting'):
31  process=customise_harvesting(process)
32  if hasattr(process,'validation_step'):
33  process=customise_Validation(process)
34  process=customise_condOverRides(process)
35 
36  return process
37 
38 def customise_DigiToRaw(process):
39  # These were migrated in #12361
40  if eras.phase1Pixel.isChosen():
41  return process
42 
43  process.digi2raw_step.remove(process.siPixelRawData)
44  process.digi2raw_step.remove(process.castorRawData)
45  return process
46 
47 def customise_RawToDigi(process):
48  # These were migrated in #12361
49  if eras.phase1Pixel.isChosen():
50  return process
51 
52  process.raw2digi_step.remove(process.siPixelDigis)
53  process.raw2digi_step.remove(process.castorDigis)
54  return process
55 
56 def customise_Digi(process):
57  # these were migrated in #12275
58  if eras.phase1Pixel.isChosen():
59  return process
60 
61  process.mix.digitizers.pixel.MissCalibrate = False
62  process.mix.digitizers.pixel.LorentzAngle_DB = False
63  process.mix.digitizers.pixel.killModules = False
64  process.mix.digitizers.pixel.useDB = False
65  process.mix.digitizers.pixel.DeadModules_DB = False
66  process.mix.digitizers.pixel.NumPixelBarrel = cms.int32(4)
67  process.mix.digitizers.pixel.NumPixelEndcap = cms.int32(3)
68  process.mix.digitizers.pixel.ThresholdInElectrons_FPix = cms.double(2000.0)
69  process.mix.digitizers.pixel.ThresholdInElectrons_BPix = cms.double(2000.0)
70  process.mix.digitizers.pixel.ThresholdInElectrons_BPix_L1 = cms.double(2000.0)
71  process.mix.digitizers.pixel.thePixelColEfficiency_BPix1 = cms.double(0.999)
72  process.mix.digitizers.pixel.thePixelColEfficiency_BPix2 = cms.double(0.999)
73  process.mix.digitizers.pixel.thePixelColEfficiency_BPix3 = cms.double(0.999)
74  process.mix.digitizers.pixel.thePixelColEfficiency_BPix4 = cms.double(0.999)
75  process.mix.digitizers.pixel.thePixelEfficiency_BPix1 = cms.double(0.999)
76  process.mix.digitizers.pixel.thePixelEfficiency_BPix2 = cms.double(0.999)
77  process.mix.digitizers.pixel.thePixelEfficiency_BPix3 = cms.double(0.999)
78  process.mix.digitizers.pixel.thePixelEfficiency_BPix4 = cms.double(0.999)
79  process.mix.digitizers.pixel.thePixelChipEfficiency_BPix1 = cms.double(0.999)
80  process.mix.digitizers.pixel.thePixelChipEfficiency_BPix2 = cms.double(0.999)
81  process.mix.digitizers.pixel.thePixelChipEfficiency_BPix3 = cms.double(0.999)
82  process.mix.digitizers.pixel.thePixelChipEfficiency_BPix4 = cms.double(0.999)
83  process.mix.digitizers.pixel.thePixelColEfficiency_FPix1 = cms.double(0.999)
84  process.mix.digitizers.pixel.thePixelColEfficiency_FPix2 = cms.double(0.999)
85  process.mix.digitizers.pixel.thePixelColEfficiency_FPix3 = cms.double(0.999)
86  process.mix.digitizers.pixel.thePixelEfficiency_FPix1 = cms.double(0.999)
87  process.mix.digitizers.pixel.thePixelEfficiency_FPix2 = cms.double(0.999)
88  process.mix.digitizers.pixel.thePixelEfficiency_FPix3 = cms.double(0.999)
89  process.mix.digitizers.pixel.thePixelChipEfficiency_FPix1 = cms.double(0.999)
90  process.mix.digitizers.pixel.thePixelChipEfficiency_FPix2 = cms.double(0.999)
91  process.mix.digitizers.pixel.thePixelChipEfficiency_FPix3 = cms.double(0.999)
92 # something broken in the configs above - turn off for now
93  process.mix.digitizers.pixel.AddPixelInefficiency = cms.bool(False)
94 
95  process=customise_pixelMixing_PU(process)
96  return process
97 
98 
99 # DQM steps change
100 def customise_DQM(process,pileup):
101  # FIXME
102  #
103  # These should be added back once somebody checks that they work,
104  # and those that do not, get fixed
105  #
106  # The customizations are done here instead of in the central files
107  # with era because they are temporary
108  process.DQMOfflinePrePOG.remove(process.TrackingDQMSourceTier0)
109  process.DQMOfflinePrePOG.remove(process.muonMonitors)
110  process.DQMOfflinePrePOG.remove(process.jetMETDQMOfflineSource)
111  process.DQMOfflinePrePOG.remove(process.egammaDQMOffline)
112  process.DQMOfflinePrePOG.remove(process.triggerOfflineDQMSource)
113  process.DQMOfflinePrePOG.remove(process.bTagPlotsDATA)
114  process.DQMOfflinePrePOG.remove(process.alcaBeamMonitor)
115  process.DQMOfflinePrePOG.remove(process.dqmPhysics)
116  process.DQMOfflinePrePOG.remove(process.produceDenoms)
117  process.DQMOfflinePrePOG.remove(process.pfTauRunDQMValidation)
118 
119  process.DQMOffline.remove(process.DQMOfflinePreDPG)
120  process.DQMOffline.remove(process.HLTMonitoring)
121 
122  process.DQMOfflineTracking.remove(process.TrackingDQMSourceTier0Common)
123 
124  # Ok, this customization does not work currently at all
125  # Need to be fixed before the tracking DQM can be enabled
126  return process
127 
128  # We cut down the number of iterative tracking steps
129  if not eras.phase1Pixel.isChosen(): # these were migrated in #12459
130  process.dqmoffline_step.remove(process.muonAnalyzer)
131  #process.dqmoffline_step.remove(process.jetMETAnalyzer)
132 
133  #put isUpgrade flag==true
134  if not eras.phase1Pixel.isChosen(): # these were migrated in #12459
135  process.SiPixelRawDataErrorSource.isUpgrade = cms.untracked.bool(True)
136  process.SiPixelDigiSource.isUpgrade = cms.untracked.bool(True)
137  process.SiPixelClusterSource.isUpgrade = cms.untracked.bool(True)
138  process.SiPixelRecHitSource.isUpgrade = cms.untracked.bool(True)
139  process.SiPixelTrackResidualSource.isUpgrade = cms.untracked.bool(True)
140  process.SiPixelHitEfficiencySource.isUpgrade = cms.untracked.bool(True)
141 
142  from DQM.TrackingMonitor.customizeTrackingMonitorSeedNumber import customise_trackMon_IterativeTracking_PHASE1PU140
143  from DQM.TrackingMonitor.customizeTrackingMonitorSeedNumber import customise_trackMon_IterativeTracking_PHASE1PU70
144 
145  if pileup>100:
147  else:
149  return process
150 
151 def customise_Validation(process):
152  # FIXME
153  #
154  # For starters, include only tracking validation
155  # The rest should be added back once somebody checks that they
156  # work, and those that do not, get fixed
157  #
158  # The customizations are done here instead of in the central files
159  # with era because they are temporary
160  process.globalPrevalidation.remove(process.photonPrevalidationSequence)
161  process.globalPrevalidation.remove(process.produceDenoms)
162  process.globalPrevalidation.remove(process.prebTagSequenceMC)
163  # With era, would modify process.globalValidation
164  process.validation.remove(process.trackerHitsValidation)
165  process.validation.remove(process.trackerDigisValidation)
166  process.validation.remove(process.trackerRecHitsValidation)
167  process.validation.remove(process.trackingTruthValid)
168  process.validation.remove(process.trackingRecHitsValid)
169  process.validation.remove(process.ecalSimHitsValidationSequence)
170  process.validation.remove(process.ecalDigisValidationSequence)
171  process.validation.remove(process.ecalRecHitsValidationSequence)
172  process.validation.remove(process.ecalClustersValidationSequence)
173  process.validation.remove(process.hcalSimHitsValidationSequence)
174  process.validation.remove(process.hcaldigisValidationSequence)
175  process.validation.remove(process.hcalSimHitStudy)
176  process.validation.remove(process.hcalRecHitsValidationSequence)
177  process.validation.remove(process.calotowersValidationSequence)
178  process.validation.remove(process.validSimHit)
179  process.validation.remove(process.muondtdigianalyzer)
180  process.validation.remove(process.cscDigiValidation)
181  process.validation.remove(process.validationMuonRPCDigis)
182  process.validation.remove(process.recoMuonValidation)
183  process.validation.remove(process.muIsoVal_seq)
184  process.validation.remove(process.muonIdValDQMSeq)
185  process.validation.remove(process.mixCollectionValidation)
186  process.validation.remove(process.JetValidation)
187  process.validation.remove(process.METValidation)
188  process.validation.remove(process.egammaValidation)
189  process.validation.remove(process.pfJetValidationSequence)
190  process.validation.remove(process.pfMETValidationSequence)
191  process.validation.remove(process.pfElectronValidationSequence)
192  process.validation.remove(process.pfJetResValidationSequence)
193  process.validation.remove(process.pfMuonValidationSequence)
194  process.validation.remove(process.rpcRecHitValidation_step)
195  process.validation.remove(process.dtLocalRecoValidation_no2D)
196  process.validation.remove(process.pfTauRunDQMValidation)
197  process.validation.remove(process.bTagPlotsMCbcl)
198  process.validation.remove(process.L1Validator)
199 
200  process.hltassociation = cms.Sequence()
201  process.hltvalidation = cms.Sequence()
202 
203  # these were migrated in #12359
204  if eras.phase1Pixel.isChosen():
205  return process
206 
207  process.validation_step.remove(process.PixelTrackingRecHitsValid)
208  # We don't run the HLT
209  process.validation_step.remove(process.HLTSusyExoVal)
210  process.validation_step.remove(process.hltHiggsValidator)
211  process.validation_step.remove(process.relvalMuonBits)
212  return process
213 
215 
216  #To allow Tracking to perform special tracking only validation
217  process.trackValidator.label=cms.VInputTag(cms.InputTag("cutsRecoTracksHp"))
218  process.tracksValidationSelectors = cms.Sequence(process.cutsRecoTracksHp)
219  process.globalValidation.remove(process.recoMuonValidation)
220  process.validation.remove(process.recoMuonValidation)
221  process.validation_preprod.remove(process.recoMuonValidation)
222  process.validation_step.remove(process.recoMuonValidation)
223  process.validation.remove(process.globalrechitsanalyze)
224  process.validation_prod.remove(process.globalrechitsanalyze)
225  process.validation_step.remove(process.globalrechitsanalyze)
226  process.validation.remove(process.stripRecHitsValid)
227  process.validation_step.remove(process.stripRecHitsValid)
228  process.validation_step.remove(process.StripTrackingRecHitsValid)
229  process.globalValidation.remove(process.vertexValidation)
230  process.validation.remove(process.vertexValidation)
231  process.validation_step.remove(process.vertexValidation)
232  process.mix.input.nbPileupEvents.averageNumber = cms.double(0.0)
233  process.mix.minBunch = cms.int32(0)
234  process.mix.maxBunch = cms.int32(0)
235  return process
236 
237 def customise_harvesting(process):
238  # FIXME
239  #
240  # These should be added back once somebody checks that they work,
241  # and those that do not, get fixed
242  #
243  # The customizations are done here instead of in the central files
244  # with era because they are temporary
245  process.DQMOffline_SecondStep.remove(process.DQMOffline_SecondStep_PreDPG)
246  process.DQMOffline_SecondStep.remove(process.DQMOffline_SecondStep_PrePOG)
247  process.DQMOffline_SecondStep.remove(process.HLTMonitoringClient)
248 
249  process.DQMHarvestTracking.remove(process.TrackingOfflineDQMClient)
250 
251  process.postValidation.remove(process.recoMuonPostProcessors)
252  process.postValidation.remove(process.MuIsoValPostProcessor)
253  process.postValidation.remove(process.calotowersPostProcessor)
254  process.postValidation.remove(process.hcalSimHitsPostProcessor)
255  process.postValidation.remove(process.hcaldigisPostProcessor)
256  process.postValidation.remove(process.hcalrechitsPostProcessor)
257  process.postValidation.remove(process.electronPostValidationSequence)
258  process.postValidation.remove(process.photonPostProcessor)
259  process.postValidation.remove(process.pfJetClient)
260  process.postValidation.remove(process.pfMETClient)
261  process.postValidation.remove(process.pfJetResClient)
262  process.postValidation.remove(process.pfElectronClient)
263  process.postValidation.remove(process.rpcRecHitPostValidation_step)
264  process.postValidation.remove(process.runTauEff)
265  process.postValidation.remove(process.makeBetterPlots)
266  process.postValidation.remove(process.bTagCollectorSequenceMCbcl)
267  process.postValidation.remove(process.METPostProcessor)
268  process.postValidation_preprod.remove(process.recoMuonPostProcessors)
269  process.postValidation_preprod.remove(process.MuIsoValPostProcessor)
270 
271  process.hltpostvalidation = cms.Sequence()
272 
273  # these were migrated in #12440
274  if eras.phase1Pixel.isChosen():
275  return process
276 
277  process.dqmHarvesting.remove(process.dataCertificationJetMET)
278  #######process.dqmHarvesting.remove(process.sipixelEDAClient)
279  process.sipixelEDAClient.isUpgrade = cms.untracked.bool(True)
280  process.dqmHarvesting.remove(process.sipixelCertification)
281  return (process)
282 
284 # process.trackerTopologyConstants.pxb_layerStartBit = cms.uint32(20)
285 # process.trackerTopologyConstants.pxb_ladderStartBit = cms.uint32(12)
286 # process.trackerTopologyConstants.pxb_moduleStartBit = cms.uint32(2)
287 # process.trackerTopologyConstants.pxb_layerMask = cms.uint32(15)
288 # process.trackerTopologyConstants.pxb_ladderMask = cms.uint32(255)
289 # process.trackerTopologyConstants.pxb_moduleMask = cms.uint32(1023)
290 # process.trackerTopologyConstants.pxf_diskStartBit = cms.uint32(18)
291 # process.trackerTopologyConstants.pxf_bladeStartBit = cms.uint32(12)
292 # process.trackerTopologyConstants.pxf_panelStartBit = cms.uint32(10)
293 # process.trackerTopologyConstants.pxf_moduleMask = cms.uint32(255)
294  process.load('SLHCUpgradeSimulations.Geometry.fakeConditions_Phase1_cff')
295  return process
296 
298  #enable modOn
299  process.SiPixelRawDataErrorSource.modOn = cms.untracked.bool(True)
300  process.SiPixelDigiSource.modOn = cms.untracked.bool(True)
301  process.SiPixelClusterSource.modOn = cms.untracked.bool(True)
302  process.SiPixelRecHitSource.modOn = cms.untracked.bool(True)
303  process.SiPixelTrackResidualSource.modOn = cms.untracked.bool(True)
304  process.SiPixelHitEfficiencySource.modOn = cms.untracked.bool(True)
305 
306  return process
307 
308 
309 def remove_pixel_ineff(process):
310  if hasattr(process,'mix'):
311  process.mix.digitizers.pixel.AddPixelInefficiency = cms.bool(False)
312 
313  return process
314 
315 
316 def customise_Reco(process,pileup):
317 
318  #this code supports either 70 or 140 pileup configurations - should fix as to support 0
319  nPU=70
320  if pileup>100: nPU=140
321 
322  #use with latest pixel geometry
323  process.ClusterShapeHitFilterESProducer.PixelShapeFile = cms.string('RecoPixelVertexing/PixelLowPtUtilities/data/pixelShape_Phase1Tk.par')
324  # Need this line to stop error about missing siPixelDigis.
325  process.MeasurementTrackerEvent.inactivePixelDetectorLabels = cms.VInputTag()
326 
327  # new layer list (3/4 pixel seeding) in InitialStep and pixelTracks
328  process.PixelLayerTriplets.layerList = cms.vstring( 'BPix1+BPix2+BPix3',
329  'BPix2+BPix3+BPix4',
330  'BPix1+BPix3+BPix4',
331  'BPix1+BPix2+BPix4',
332  'BPix2+BPix3+FPix1_pos',
333  'BPix2+BPix3+FPix1_neg',
334  'BPix1+BPix2+FPix1_pos',
335  'BPix1+BPix2+FPix1_neg',
336  'BPix2+FPix1_pos+FPix2_pos',
337  'BPix2+FPix1_neg+FPix2_neg',
338  'BPix1+FPix1_pos+FPix2_pos',
339  'BPix1+FPix1_neg+FPix2_neg',
340  'FPix1_pos+FPix2_pos+FPix3_pos',
341  'FPix1_neg+FPix2_neg+FPix3_neg' )
342 
343  # New tracking. This is really ugly because it redefines globalreco and reconstruction.
344  # It can be removed if change one line in Configuration/StandardSequences/python/Reconstruction_cff.py
345  # from RecoTracker_cff.py to RecoTrackerPhase1PU140_cff.py
346 
347  # remove all the tracking first
348  itIndex=process.globalreco_tracking.index(process.trackingGlobalReco)
349  grIndex=process.globalreco.index(process.globalreco_tracking)
350 
351  process.globalreco.remove(process.globalreco_tracking)
352  process.globalreco_tracking.remove(process.iterTracking)
353  process.globalreco_tracking.remove(process.electronSeedsSeq)
354  process.reconstruction_fromRECO.remove(process.trackingGlobalReco)
355  process.reconstruction_fromRECO.remove(process.electronSeedsSeq)
356  process.reconstruction_fromRECO.remove(process.initialStepSeedLayers)
357  process.reconstruction_fromRECO.remove(process.initialStepSeeds)
358  process.reconstruction_fromRECO.remove(process.initialStepClassifier1)
359  process.reconstruction_fromRECO.remove(process.initialStepClassifier2)
360  process.reconstruction_fromRECO.remove(process.initialStepClassifier3)
361  process.reconstruction_fromRECO.remove(initialStepTrackCandidates)
362  process.reconstruction_fromRECO.remove(initialStepTracks)
363  process.reconstruction_fromRECO.remove(lowPtTripletStepClusters)
364  process.reconstruction_fromRECO.remove(lowPtTripletStepSeedLayers)
365  process.reconstruction_fromRECO.remove(lowPtTripletStepSeeds)
366  process.reconstruction_fromRECO.remove(lowPtTripletStep)
367  process.reconstruction_fromRECO.remove(lowPtTripletStepTrackCandidates)
368  process.reconstruction_fromRECO.remove(lowPtTripletStepTracks)
369 
370  process.reconstruction_fromRECO.remove(mixedTripletStep)
371  process.reconstruction_fromRECO.remove(mixedTripletStepClusters)
372  process.reconstruction_fromRECO.remove(mixedTripletStepSeedLayersA)
373  process.reconstruction_fromRECO.remove(mixedTripletStepSeedLayersB)
374  process.reconstruction_fromRECO.remove(mixedTripletStepSeeds)
375  process.reconstruction_fromRECO.remove(mixedTripletStepSeedsA)
376  process.reconstruction_fromRECO.remove(mixedTripletStepSeedsB)
377  process.reconstruction_fromRECO.remove(mixedTripletStepClassifier1)
378  process.reconstruction_fromRECO.remove(mixedTripletStepClassifier2)
379  process.reconstruction_fromRECO.remove(mixedTripletStepTrackCandidates)
380  process.reconstruction_fromRECO.remove(mixedTripletStepTracks)
381 
382  process.reconstruction_fromRECO.remove(pixelPairStepClusters)
383  process.reconstruction_fromRECO.remove(pixelPairStepSeeds)
384  process.reconstruction_fromRECO.remove(pixelPairStepSeedLayers)
385  process.reconstruction_fromRECO.remove(pixelPairStep)
386  process.reconstruction_fromRECO.remove(pixelPairStepTrackCandidates)
387  process.reconstruction_fromRECO.remove(pixelPairStepTracks)
388 
389  process.reconstruction_fromRECO.remove(tobTecStepClusters)
390  process.reconstruction_fromRECO.remove(tobTecStepSeeds)
391  #process.reconstruction_fromRECO.remove(tobTecStepSeedLayers)
392  process.reconstruction_fromRECO.remove(tobTecStepClassifier1)
393  process.reconstruction_fromRECO.remove(tobTecStepClassifier2)
394  process.reconstruction_fromRECO.remove(tobTecStep)
395  process.reconstruction_fromRECO.remove(tobTecStepTrackCandidates)
396  process.reconstruction_fromRECO.remove(tobTecStepTracks)
397 
398  # Yes, needs to be done twice for InOut...
399  process.reconstruction_fromRECO.remove(process.muonSeededSeedsInOut)
400  process.reconstruction_fromRECO.remove(process.muonSeededSeedsInOut)
401  process.reconstruction_fromRECO.remove(process.muonSeededTrackCandidatesInOut)
402  process.reconstruction_fromRECO.remove(process.muonSeededTrackCandidatesInOut)
403  process.reconstruction_fromRECO.remove(process.muonSeededTracksInOut)
404  process.reconstruction_fromRECO.remove(process.muonSeededTracksInOut)
405  process.reconstruction_fromRECO.remove(process.muonSeededSeedsOutIn)
406  process.reconstruction_fromRECO.remove(process.muonSeededTrackCandidatesOutIn)
407  process.reconstruction_fromRECO.remove(process.muonSeededTracksOutIn)
408  # Why are these modules in this sequence (isn't iterTracking enough)?
409  process.muonSeededStepCoreDisplaced.remove(process.muonSeededSeedsInOut)
410  process.muonSeededStepCoreDisplaced.remove(process.muonSeededTrackCandidatesInOut)
411  process.muonSeededStepCoreDisplaced.remove(process.muonSeededTracksInOut)
412  process.muonSeededStepCoreDisplaced.remove(process.muonSeededSeedsOutIn)
413  process.muonSeededStepExtraDisplaced.remove(process.muonSeededTracksInOutClassifier)
414 
415  process.reconstruction_fromRECO.remove(process.convClusters)
416  process.reconstruction_fromRECO.remove(process.convLayerPairs)
417  process.reconstruction_fromRECO.remove(process.convStepSelector)
418  process.reconstruction_fromRECO.remove(process.convTrackCandidates)
419  process.reconstruction_fromRECO.remove(process.convStepTracks)
420  process.reconstruction_fromRECO.remove(process.photonConvTrajSeedFromSingleLeg)
421 
422  process.reconstruction_fromRECO.remove(process.preDuplicateMergingGeneralTracks)
423 
424  # Needed to make the loading of recoFromSimDigis_cff below to work
425  process.InitialStepPreSplitting.remove(siPixelClusters)
426 
427  del process.iterTracking
428  del process.ckftracks
429  del process.ckftracks_woBH
430  del process.ckftracks_wodEdX
431  del process.ckftracks_plus_pixelless
432  del process.trackingGlobalReco
433  del process.electronSeedsSeq
434  del process.InitialStep
435  del process.LowPtTripletStep
436  del process.PixelPairStep
437  del process.DetachedTripletStep
438  del process.MixedTripletStep
439  del process.PixelLessStep
440  del process.TobTecStep
441  del process.earlyGeneralTracks
442  del process.muonSeededStep
443  del process.muonSeededStepCore
444  del process.muonSeededStepDebug
445  del process.muonSeededStepDebugDisplaced
446  del process.ConvStep
447  # add the correct tracking back in
448  process.load("RecoTracker.Configuration.RecoTrackerPhase1PU"+str(nPU)+"_cff")
449 
450  process.globalreco_tracking.insert(itIndex,process.trackingGlobalReco)
451  process.globalreco.insert(grIndex,process.globalreco_tracking)
452  #Note process.reconstruction_fromRECO is broken
453 
454  # End of new tracking configuration which can be removed if new Reconstruction is used.
455 
456 
457  process.reconstruction.remove(process.castorreco)
458  process.reconstruction.remove(process.CastorTowerReco)
459  process.reconstruction.remove(process.ak5CastorJets)
460  process.reconstruction.remove(process.ak5CastorJetID)
461  process.reconstruction.remove(process.ak7CastorJets)
462  #process.reconstruction.remove(process.ak7BasicJets)
463  process.reconstruction.remove(process.ak7CastorJetID)
464 
465  #the quadruplet merger configuration
466  process.load("RecoPixelVertexing.PixelTriplets.quadrupletseedmerging_cff")
467  process.PixelSeedMergerQuadruplets.BPix.TTRHBuilder = cms.string("PixelTTRHBuilderWithoutAngle" )
468  process.PixelSeedMergerQuadruplets.BPix.HitProducer = cms.string("siPixelRecHits" )
469  process.PixelSeedMergerQuadruplets.FPix.TTRHBuilder = cms.string("PixelTTRHBuilderWithoutAngle" )
470  process.PixelSeedMergerQuadruplets.FPix.HitProducer = cms.string("siPixelRecHits" )
471 
472  # Need these until pixel templates are used
473  process.load("SLHCUpgradeSimulations.Geometry.recoFromSimDigis_cff")
474  # PixelCPEGeneric #
475  process.PixelCPEGenericESProducer.Upgrade = cms.bool(True)
476  process.PixelCPEGenericESProducer.UseErrorsFromTemplates = cms.bool(False)
477  process.PixelCPEGenericESProducer.LoadTemplatesFromDB = cms.bool(False)
478  process.PixelCPEGenericESProducer.TruncatePixelCharge = cms.bool(False)
479  process.PixelCPEGenericESProducer.IrradiationBiasCorrection = False
480  process.PixelCPEGenericESProducer.DoCosmics = False
481  # CPE for other steps
482  process.siPixelRecHits.CPE = cms.string('PixelCPEGeneric')
483  # Turn of template use in tracking (iterative steps handled inside their configs)
484  process.duplicateTrackCandidates.ttrhBuilderName = 'WithTrackAngle'
485  process.mergedDuplicateTracks.TTRHBuilder = 'WithTrackAngle'
486  process.ctfWithMaterialTracks.TTRHBuilder = 'WithTrackAngle'
487  process.muonSeededSeedsInOut.TrackerRecHitBuilder=cms.string('WithTrackAngle')
488  process.muonSeededTracksInOut.TTRHBuilder=cms.string('WithTrackAngle')
489  process.muonSeededTracksOutIn.TTRHBuilder=cms.string('WithTrackAngle')
490  process.muons1stStep.TrackerKinkFinderParameters.TrackerRecHitBuilder=cms.string('WithTrackAngle')
491  process.regionalCosmicTracks.TTRHBuilder=cms.string('WithTrackAngle')
492  process.cosmicsVetoTracksRaw.TTRHBuilder=cms.string('WithTrackAngle')
493  process.trackerDrivenElectronSeeds.TTRHBuilder = 'WithTrackAngle'
494  process.globalMuons.GLBTrajBuilderParameters.GlbRefitterParameters.TrackerRecHitBuilder = 'WithTrackAngle'
495  process.globalMuons.GLBTrajBuilderParameters.TrackTransformer.TrackerRecHitBuilder = 'WithTrackAngle'
496  process.globalMuons.GLBTrajBuilderParameters.TrackerRecHitBuilder = 'WithTrackAngle'
497  process.globalMuons.TrackLoaderParameters.TTRHBuilder = 'WithTrackAngle'
498  process.tevMuons.RefitterParameters.TrackerRecHitBuilder = 'WithTrackAngle'
499  process.tevMuons.TrackLoaderParameters.TTRHBuilder = 'WithTrackAngle'
500  process.muonSeededTracksOutInDisplaced.TTRHBuilder = 'WithTrackAngle'
501  process.duplicateDisplacedTrackCandidates.ttrhBuilderName = 'WithTrackAngle'
502  process.mergedDuplicateDisplacedTracks.TTRHBuilder = 'WithTrackAngle'
503  process.displacedGlobalMuons.GLBTrajBuilderParameters.GlbRefitterParameters.TrackerRecHitBuilder = 'WithTrackAngle'
504  process.displacedGlobalMuons.GLBTrajBuilderParameters.TrackTransformer.TrackerRecHitBuilder = 'WithTrackAngle'
505  process.displacedGlobalMuons.GLBTrajBuilderParameters.TrackerRecHitBuilder = 'WithTrackAngle'
506  process.displacedGlobalMuons.TrackLoaderParameters.TTRHBuilder = 'WithTrackAngle'
507  process.glbTrackQual.RefitterParameters.TrackerRecHitBuilder = 'WithTrackAngle'
508  process.globalSETMuons.GLBTrajBuilderParameters.GlbRefitterParameters.TrackerRecHitBuilder = 'WithTrackAngle'
509  process.globalSETMuons.GLBTrajBuilderParameters.TrackTransformer.TrackerRecHitBuilder = 'WithTrackAngle'
510  process.globalSETMuons.GLBTrajBuilderParameters.TrackerRecHitBuilder = 'WithTrackAngle'
511  process.globalSETMuons.TrackLoaderParameters.TTRHBuilder = 'WithTrackAngle'
512  # End of pixel template needed section
513 
514  # Remove, for now, the pre-cluster-splitting clustering step
515  # To be enabled later together with or after the jet core step is enabled
516  # This snippet must be after the loading of recoFromSimDigis_cff
517  process.pixeltrackerlocalreco = cms.Sequence(
518  process.siPixelClusters +
519  process.siPixelRecHits
520  )
521  process.clusterSummaryProducer.pixelClusters = "siPixelClusters"
522  process.globalreco_tracking.replace(process.MeasurementTrackerEventPreSplitting, process.MeasurementTrackerEvent)
523  process.globalreco_tracking.replace(process.siPixelClusterShapeCachePreSplitting, process.siPixelClusterShapeCache)
524 
525  # Enable, for now, pixel tracks and vertices
526  # To be removed later together with the cluster splitting
527  process.globalreco_tracking.replace(process.standalonemuontracking,
528  process.standalonemuontracking+process.recopixelvertexing)
529  process.initialStepSelector.vertices = "pixelVertices"
530  process.highPtTripletStepSelector.vertices = "pixelVertices"
531  process.lowPtQuadStepSelector.vertices = "pixelVertices"
532  process.lowPtTripletStepSelector.vertices = "pixelVertices"
533  process.detachedQuadStepSelector.vertices = "pixelVertices"
534  process.mixedTripletStepSelector.vertices = "pixelVertices"
535  process.pixelPairStepSeeds.RegionFactoryPSet.RegionPSet.VertexCollection = "pixelVertices"
536  process.pixelPairStepSelector.vertices = "pixelVertices"
537  process.tobTecStepSelector.vertices = "pixelVertices"
538  process.muonSeededTracksInOutSelector.vertices = "pixelVertices"
539  process.muonSeededTracksOutInSelector.vertices = "pixelVertices"
540  process.duplicateTrackClassifier.vertices = "pixelVertices"
541  process.convStepSelector.vertices = "pixelVertices"
542  process.ak4CaloJetsForTrk.srcPVs = "pixelVertices"
543  process.muonSeededTracksOutInDisplacedClassifier.vertices = "pixelVertices"
544  process.duplicateDisplacedTrackClassifier.vertices = "pixelVertices"
545 
546  # Make pixelTracks use quadruplets
547  process.pixelTracks.SeedMergerPSet = cms.PSet(
548  layerList = cms.PSet(refToPSet_ = cms.string('PixelSeedMergerQuadruplets')),
549  addRemainingTriplets = cms.bool(False),
550  mergeTriplets = cms.bool(True),
551  ttrhBuilderLabel = cms.string('PixelTTRHBuilderWithoutAngle')
552  )
553  process.pixelTracks.FilterPSet.chi2 = cms.double(50.0)
554  process.pixelTracks.FilterPSet.tipMax = cms.double(0.05)
555  process.pixelTracks.RegionFactoryPSet.RegionPSet.originRadius = cms.double(0.02)
556  process.templates.DoLorentz=False
557  process.templates.LoadTemplatesFromDB = cms.bool(False)
558  process.PixelCPEGenericESProducer.useLAWidthFromDB = cms.bool(False)
559 
560  # This probably breaks badly the "displaced muon" reconstruction,
561  # but let's do it for now, until the upgrade tracking sequences
562  # are modernized
563  process.preDuplicateMergingDisplacedTracks.inputClassifiers.remove("muonSeededTracksInOutClassifier")
564  process.preDuplicateMergingDisplacedTracks.trackProducers.remove("muonSeededTracksInOut")
565 
566  return process
def customise_Validation_Trackingonly