CMS 3D CMS Logo

 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Pages
FamosSequences_cff.py
Go to the documentation of this file.
2 
4 
5 # Conversion to GenParticleCandidates
7 
8 # Pile-up options: FAMOS-style or with the Mixing Module
9 #the sequence is defined as a p[lace holder, to be defined separatedly
10 #from FastSimulation.Configuration.MixingFamos_cff import *
11 #from FastSimulation.Configuration.MixingFull_cff import *
12 
13 # Famos SimHits producer
15 
16 # Gaussian Smearing RecHit producer
18 
19 # Rec Hit Tranlator to the Full map with DeTId'
21 
22 # CTF and Iterative tracking (contains pixelTracks and pixelVertices)
23 
24 # 1) Common algorithms and configuration taken from full reconstruction
25 # Note: The runge-kutta propagator is not used here
26 # (because no magnetic field inhomogeneities are simulated between layers)
28 
29 # 2) Specific cuts - not needed anymore, as a specific KFFittingSmoother deals with that.
30 # Add a chi**2 cut to retain/reject hits
31 # KFFittingSmoother.EstimateCut = 15.0
32 # Request three hits to make a track
33 # KFFittingSmoother.MinNumberOfHits = 3
34 
35 # 3) Fast Simulation tracking sequences
36 # this one is added before 340pre3 to cope with adding SiPixelTemplateDBObjectESProducer and corresponding objects to the ConfDB (MC_3XY_V11, STARTUP3X_V10)
40 
41 # Calo RecHits producer (with no HCAL miscalibration by default)
44 
45 # ECAL clusters
47 reducedEcalRecHitsSequence.remove(seldigis)
48 # HCAL clusters
50 reducedHcalRecHitsSequence = cms.Sequence( reducedHcalRecHits )
51 
52 reducedRecHits = cms.Sequence ( reducedEcalRecHitsSequence * reducedHcalRecHitsSequence )
53 
54 
55 # Calo Towers
57 
58 # Particle Flow (all interactions with ParticleFlow are dealt with in the following configuration)
59 #from FastSimulation.ParticleFlow.ParticleFlowFastSim_cff import *
60 from FastSimulation.ParticleFlow.ParticleFlowFastSimNeutralHadron_cff import * # this is the famous "PF patch", see https://twiki.cern.ch/twiki/bin/view/CMSPublic/SWGuideFastSimFAQ#I_observe_a_discrepancy_in_energ
61 
62 
63 # Reco Jets and MET
66 metreco.remove(BeamHaloId)
67 
68 caloJets = cms.Sequence(
69  recoJets+
70  recoJetIds+
71  recoTrackJets
72 )
73 
74 jetTrackAssoc = cms.Sequence (
75  recoJetAssociations
76  )
77 
78 jetPlusTracks = cms.Sequence(
79  recoJPTJets
80  )
81 
82 metReco = cms.Sequence(
83  metreco
84  )
85 
86 
87 
88 # Gen Jets
94 caloJetMetGen = cms.Sequence(
95  genParticles+
96  genJetParticles+
97  recoGenJets+
98  genMETParticles+
99  recoGenMET
100 )
101 
102 
103 # Muon simHit sequence
105 
106 # Muon Digi sequence
108 simMuonCSCDigis.strips.doCorrelatedNoise = False ## Saves a little bit of time
109 
110 
111 if (MixingMode==2):
112  simMuonCSCDigis.mixLabel = 'mixSimCaloHits'
113  simMuonDTDigis.mixLabel = 'mixSimCaloHits'
114  simMuonRPCDigis.mixLabel = 'mixSimCaloHits'
115 else:
116  simMuonCSCDigis.InputCollection = 'MuonSimHitsMuonCSCHits'
117  simMuonDTDigis.InputCollection = 'MuonSimHitsMuonDTHits'
118  simMuonRPCDigis.InputCollection = 'MuonSimHitsMuonRPCHits'
119 
120 # Muon RecHit sequence
122 csc2DRecHits.stripDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCStripDigi")
123 csc2DRecHits.wireDigiTag = cms.InputTag("simMuonCSCDigis","MuonCSCWireDigi")
124 rpcRecHits.rpcDigiLabel = 'simMuonRPCDigis'
125 dt1DRecHits.dtDigiLabel = 'simMuonDTDigis'
126 dt1DCosmicRecHits.dtDigiLabel = 'simMuonDTDigis'
127 
128 # Muon reconstruction sequence
131 KFSmootherForMuonTrackLoader.Propagator = 'SmartPropagatorAny'
134 from RecoMuon.Configuration.RecoMuonPPonly_cff import refittedStandAloneMuons
136 globalMuons.GLBTrajBuilderParameters.TrackTransformer.TrackerRecHitBuilder = 'WithoutRefit'
137 globalMuons.GLBTrajBuilderParameters.TrackerRecHitBuilder = 'WithoutRefit'
138 globalMuons.GLBTrajBuilderParameters.TransformerOutPropagator = cms.string('SmartPropagatorAny')
139 globalMuons.GLBTrajBuilderParameters.MatcherOutPropagator = cms.string('SmartPropagator')
140 
142 GlobalMuonRefitter.TrackerRecHitBuilder = 'WithoutRefit'
143 GlobalMuonRefitter.Propagator = 'SmartPropagatorAny'
144 GlobalTrajectoryBuilderCommon.TrackerRecHitBuilder = 'WithoutRefit'
145 tevMuons.RefitterParameters.TrackerRecHitBuilder = 'WithoutRefit'
146 tevMuons.RefitterParameters.Propagator = 'SmartPropagatorAny'
147 KFSmootherForRefitInsideOut.Propagator = 'SmartPropagatorAny'
148 KFSmootherForRefitOutsideIn.Propagator = 'SmartPropagator'
149 KFFitterForRefitInsideOut.Propagator = 'SmartPropagatorAny'
150 KFFitterForRefitOutsideIn.Propagator = 'SmartPropagatorAny'
151 
152 if (CaloMode==3):
153  famosMuonSequence = cms.Sequence(
154  muonlocalreco+
155  ancientMuonSeed+
156  standAloneMuons+
157  refittedStandAloneMuons+
158  globalMuons+
159  tevMuons
160  )
161 else:
162  famosMuonSequence = cms.Sequence(
163  muonDigi+
164  muonlocalreco+
165  ancientMuonSeed+
166  standAloneMuons+
167  refittedStandAloneMuons+
168  globalMuons+
169  tevMuons
170  )
171 
172 #Muon identification sequence
174 
175 # Muon isolation
177 
178 famosMuonIdAndIsolationSequence = cms.Sequence(
179  ak5CaloJets+
180  muonIdProducerSequence+
181  muIsolation
182 )
183 
185 muons.FillSelectorMaps = False
186 muons.FillCosmicsIdMap = False
188 
189 muonshighlevelreco = cms.Sequence(muonPFIsolationSequence*muons)
190 
191 
192 # Electron reconstruction
203 from RecoEgamma.Configuration.RecoEgamma_cff import egammaHighLevelRecoPostPF
204 allConversions.src = 'gsfGeneralConversionTrackMerger'
205 famosConversionSequence = cms.Sequence(conversionTrackSequenceNoEcalSeeded*allConversionSequence)
206 
210 
211 egammaEcalDrivenReco = cms.Sequence(gsfEcalDrivenElectronSequence)
212 electronGsfTracks = TrackingTools.GsfTracking.GsfElectronFit_cfi.GsfGlobalElectronTest.clone()
213 electronGsfTracks.src = 'electronGSGsfTrackCandidates'
214 electronGsfTracks.TTRHBuilder = 'WithoutRefit'
215 electronGsfTracks.TrajectoryInEvent = True
216 
217 
218 # PF related electron sequences defined in FastSimulation.ParticleFlow.ParticleFlowFastSim_cff
220 
221 iterativeTrackingBeginning = cms.Sequence(
222  iterativeInitialSeeds+
223  iterativePixelPairSeeds+
224  iterativeMixedTripletStepSeeds+
225  iterativePixelLessSeeds
226  )
227 
228 famosGsfTrackSequence = cms.Sequence(
229  iterativeTrackingBeginning+
230  newCombinedSeeds+
231  particleFlowCluster+
232  ecalDrivenElectronSeeds+
233  trackerDrivenElectronSeeds+
234  electronMergedSeeds+
235  electronGSGsfTrackCandidates+
236  electronGsfTracks
237 )
238 
239 # Photon reconstruction
241 photons.hbheInstance = ''
243 
244 famosPhotonSequence = cms.Sequence(
245  photonSequence+
246  photonIDSequence
247 )
248 
249 # Add pre-calculated isolation sums for electrons (NB for photons they are stored in the Photon. All is done in the
250 # sequence above
252 
253 #Add egamma ecal interesting rec hits
256 
258 
259 
260 
261 # B tagging
266 
267 famosBTaggingSequence = cms.Sequence(
268  btagging
269 )
270 
271 
272 ############### FastSim sequences
273 
274 # Calo simulation mode is defined in FastSimulation/CaloRecHitsProducer/python/CaloRecHits_cff.py
275 if(CaloMode==0):
276  simulationSequence = cms.Sequence(
277  offlineBeamSpot+
278  cms.SequencePlaceholder("famosMixing")+
279  famosSimHits+
280  MuonSimHits+
281  cms.SequencePlaceholder("mix")
282  )
283  lowLevelRecoSequence = cms.Sequence(
284  siTrackerGaussianSmearingRecHits+
285  caloRecHits
286  )
287  famosSimulationSequence = cms.Sequence(
288  simulationSequence+
289  lowLevelRecoSequence
290  )
291  trackVertexReco = cms.Sequence(
292  cms.SequencePlaceholder("mix")+
293  iterativeTracking+
294  vertexreco
295  )
296  caloTowersSequence = cms.Sequence(
297  caloTowersRec
298  )
299 elif(CaloMode==1):
300  simulationSequence = cms.Sequence(
301  offlineBeamSpot+
302  cms.SequencePlaceholder("famosMixing")+
303  famosSimHits+
304  MuonSimHits+
305  cms.SequencePlaceholder("mix")
306  )
307  lowLevelRecoSequence = cms.Sequence(
308  siTrackerGaussianSmearingRecHits+
309  caloDigis+
310  caloRecHits
311  )
312  famosSimulationSequence = cms.Sequence(
313  simulationSequence+
314  lowLevelRecoSequence
315  )
316  trackVertexReco = cms.Sequence(
317  cms.SequencePlaceholder("mix")+
318  iterativeTracking+
319  vertexreco
320  )
321  caloTowersSequence = cms.Sequence(
322  caloTowersRec
323  )
324 elif(CaloMode==2):
325  simulationSequence = cms.Sequence(
326  offlineBeamSpot+
327  cms.SequencePlaceholder("famosMixing")+
328  famosSimHits+
329  MuonSimHits+
330  cms.SequencePlaceholder("mix")
331  )
332  lowLevelRecoSequence = cms.Sequence(
333  siTrackerGaussianSmearingRecHits+
334  iterativeTracking+ # because tracks are used for noise cleaning in HCAL low-level reco
335  caloDigis+
336  caloRecHits
337  )
338  famosSimulationSequence = cms.Sequence(
339  simulationSequence+
340  lowLevelRecoSequence
341  )
342  trackVertexReco = cms.Sequence(
343  cms.SequencePlaceholder("mix")+
344  iterativeTracking+ # this repetition is normally harmless, but it is annoying if you want to run SIM and RECO in two steps
345  vertexreco
346  )
347  caloTowersSequence = cms.Sequence(
348  caloTowersRec
349  )
350 elif(CaloMode==3):
351  if(MixingMode==1):
352  simulationSequence = cms.Sequence(
353  offlineBeamSpot+
354  cms.SequencePlaceholder("famosMixing")+
355  famosSimHits+
356  MuonSimHits
357  )
358  digitizationSequence = cms.Sequence(
359  cms.SequencePlaceholder("mix")+
360  muonDigi+
361  caloDigis
362  )
363  trackVertexReco = cms.Sequence(
364  siTrackerGaussianSmearingRecHits+
365  iterativeTracking+
366  vertexreco
367  )
368  else:
369  simulationSequence = cms.Sequence(
370  offlineBeamSpot+
371  famosSimHits+
372  MuonSimHits
373  )
374  digitizationSequence = cms.Sequence(
375  cms.SequencePlaceholder("mixHits")+
376  muonDigi+
377  caloDigis
378  )
379  trackVertexReco = cms.Sequence(
380  siTrackerGaussianSmearingRecHits+
381  iterativeTracking+
382  cms.SequencePlaceholder("mixTracks")+
383  vertexreco
384  )
385 # out of the 'if':
386  caloTowersSequence = cms.Sequence(
387  caloRecHits+
388  caloTowersRec
389  )
390  famosSimulationSequence = cms.Sequence( # valid for both MixingMode values
391  simulationSequence+
392  digitizationSequence#+ # temporary; eventually it will be a block of its own, but it requires intervention on ConfigBuilder
393  # Note: of course it is a bit odd that the next two sequences are made part of the SIM step, but this is a temporary solution needed because currently HLT is run before reconstructionWithFamos, and HLT needs to access the caloRecHits, which in turn depend on tracks because HCAL hits use the TrackExtrapolator
394 # trackVertexReco+
395 # caloTowersSequence
396  )
397 
398 
399 famosEcalDrivenElectronSequence = cms.Sequence(
400  famosGsfTrackSequence+
401  egammaEcalDrivenReco
402 )
403 
404 # The reconstruction sequence
405 if(CaloMode==3):
406  reconstructionWithFamos = cms.Sequence(
407  digitizationSequence+ # temporary; repetition!
408  trackVertexReco+
409  caloTowersSequence+
410  particleFlowCluster+
411  ecalClusters+
412  famosGsfTrackSequence+
413  famosMuonSequence+
414  famosMuonIdAndIsolationSequence+
415  famosConversionSequence+
416  particleFlowTrackWithDisplacedVertex+
417  famosEcalDrivenElectronSequence+
418  famosPhotonSequence+
419  famosParticleFlowSequence+
420  egammaHighLevelRecoPostPF+
421  muonshighlevelreco+
422  particleFlowLinks+
423  caloJetMetGen+
424  caloJets+
425  PFJetMet+
426  jetTrackAssoc+
427  recoJPTJets+
428  metreco+
429  reducedRecHits+
430  famosBTaggingSequence+
431  famosPFTauTaggingSequence
432  )
433 else:
434  reconstructionWithFamos = cms.Sequence(
435  trackVertexReco+
436  caloTowersSequence+
437  particleFlowCluster+
438  ecalClusters+
439  famosGsfTrackSequence+
440  famosMuonSequence+
441  famosMuonIdAndIsolationSequence+
442  famosConversionSequence+
443  particleFlowTrackWithDisplacedVertex+
444  famosEcalDrivenElectronSequence+
445  famosPhotonSequence+
446  famosParticleFlowSequence+
447  egammaHighLevelRecoPostPF+
448  muonshighlevelreco+
449  particleFlowLinks+
450  caloJetMetGen+
451  caloJets+
452  PFJetMet+
453  jetTrackAssoc+
454  recoJPTJets+
455  metreco+
456  reducedRecHits+
457  famosBTaggingSequence+
458  famosPFTauTaggingSequence
459  )
460 
461 
462 
463 
464 # Special sequences for two-step operation
465 simulationWithSomeReconstruction = cms.Sequence(
466  famosSimulationSequence+
467  siTrackerGaussianSmearingRecHits+
468  iterativeTracking+
469  vertexreco+
470  caloTowersSequence+
471  particleFlowCluster+
472  ecalClusters+
473  famosGsfTrackSequence+
474  famosMuonSequence+
475  famosMuonIdAndIsolationSequence+
476  famosConversionSequence+
477  particleFlowTrackWithDisplacedVertex+
478  famosEcalDrivenElectronSequence+
479  famosPhotonSequence+
480  famosParticleFlowSequence+
481  egammaHighLevelRecoPostPF
482  )
483 
484 reconstructionHighLevel = cms.Sequence(
485  cms.SequencePlaceholder("mix")+
486  muonshighlevelreco+
487  particleFlowLinks+
488  caloJetMetGen+
489  caloJets+
490  PFJetMet+
491  jetTrackAssoc+
492  recoJPTJets+
493  metreco+
494  reducedRecHits+
495  famosBTaggingSequence+
496  famosPFTauTaggingSequence
497 )
498 
499 # Famos pre-defined sequences (and self-explanatory names)
500 
501 famosWithTrackerHits = cms.Sequence(
502  famosSimulationSequence+
503  siTrackerGaussianSmearingRecHits
504 )
505 
506 famosWithTracks = cms.Sequence(
507  famosWithTrackerHits+
508  iterativeTracking
509  )
510 
511 famosWithTracksAndMuonHits = cms.Sequence(
512  famosSimulationSequence+
513  siTrackerGaussianSmearingRecHits+
514  iterativeTracking+
515  vertexreco+
516  famosMuonSequence
517 )
518 
519 famosWithTracksAndMuons = cms.Sequence(
520  famosSimulationSequence+
521  siTrackerGaussianSmearingRecHits+
522  iterativeTracking+
523  vertexreco+
524  famosMuonSequence+
525  caloTowersSequence+
526  famosMuonIdAndIsolationSequence
527 )
528 
529 famosWithCaloHits = cms.Sequence(
530  famosSimulationSequence+
531  caloTowersSequence
532 )
533 
534 famosWithEcalClusters = cms.Sequence(
535  famosWithCaloHits+
536  particleFlowCluster+
537  ecalClusters
538 )
539 
540 famosWithTracksAndCaloHits = cms.Sequence(
541  famosWithTracks+
542  caloTowersSequence
543 )
544 
545 famosWithTracksAndEcalClusters = cms.Sequence(
546  famosWithTracksAndCaloHits+
547  particleFlowCluster+
548  ecalClusters
549 )
550 
551 
552 famosWithParticleFlow = cms.Sequence(
553  famosWithTracksAndEcalClusters+
554  vertexreco+
555  famosGsfTrackSequence+
556  famosConversionSequence+
557  caloTowersSequence+
558  famosParticleFlowSequence+
559  PFJetMet
560 )
561 
562 famosWithCaloTowers = cms.Sequence(
563  famosWithCaloHits+
564  caloTowersSequence
565 )
566 
567 famosElectronSequence = cms.Sequence(
568  famosGsfTrackSequence+
569  famosEcalDrivenElectronSequence+
570  famosWithParticleFlow+
571  egammaHighLevelRecoPostPF+
572  gsfElectronSequence+
573  eIdSequence
574 )
575 
576 famosWithTracksAndCaloTowers = cms.Sequence(
577  famosWithTracksAndCaloHits+
578  caloTowersSequence
579 )
580 
581 famosWithTracksAndJets = cms.Sequence(
582  famosWithTracksAndCaloTowers+
583  vertexreco+
584  caloJetMetGen+
585  caloJets+
586  metreco
587 )
588 
589 ### Standard Jets _cannot_ be done without many other things...
590 #######################################################################
591 famosWithJets = cms.Sequence(
592  famosWithTracksAndCaloTowers+
593  vertexreco+
594  particleFlowCluster+
595  ecalClusters+
596  famosGsfTrackSequence+
597  famosMuonSequence+
598  famosMuonIdAndIsolationSequence+
599  famosParticleFlowSequence+
600  gsfElectronSequence+
601  caloJetMetGen+
602  caloJets+
603  metreco
604 )
605 
606 famosWithCaloTowersAndParticleFlow = cms.Sequence(
607  famosWithParticleFlow+
608  caloTowersSequence
609 )
610 
611 
612 famosWithElectrons = cms.Sequence(
613  famosWithTracksAndEcalClusters+
614  caloTowersSequence+
615  famosGsfTrackSequence+
616  famosParticleFlowSequence+
617  famosElectronSequence+
618  interestingEleIsoDetIdEB+
619  interestingEleIsoDetIdEE+
620  egammaIsolationSequence
621 )
622 
623 famosWithPhotons = cms.Sequence(
624  famosWithTracks+
625  vertexreco+
626  caloRecHits+
627  ecalClustersNoPFBox+
628  famosPhotonSequence+
629  interestingGamIsoDetIdEB+
630  interestingGamIsoDetIdEE
631 )
632 
633 famosWithElectronsAndPhotons = cms.Sequence(
634  famosWithTracks+
635  vertexreco+
636  caloTowersSequence+
637  ecalClustersNoPFBox+
638  famosElectronSequence+
639  famosPhotonSequence+
640  interestingEgammaIsoDetIds+
641  egammaIsolationSequence
642 )
643 
644 famosWithBTagging = cms.Sequence(
645  famosWithTracksAndCaloTowers+
646  vertexreco+
647  ak5PFJetsCHS+
648  PFJetMet+
649  jetTrackAssoc+
650  metreco+
651  ecalClustersNoPFBox+
652  famosMuonSequence+
653  reducedRecHits+
654  famosBTaggingSequence
655  )
656 
657 
658 famosWithPFTauTagging = cms.Sequence(
659  famosWithCaloTowersAndParticleFlow+
660  famosPFTauTaggingSequence
661 )
662 
663 # The simulation sequence without muon digitization
664 simulationNoMuonDigiWithFamos = cms.Sequence(
665  famosSimulationSequence+
666  siTrackerGaussianSmearingRecHits
667 )
668 
669 # The simulation and digitization sequence
670 simulationWithFamos = cms.Sequence(
671  famosSimulationSequence#+
672 # muonDigi+
673 # siTrackerGaussianSmearingRecHits
674 )
675 
676 
677 
678 reconstructionWithFamosNoTk = cms.Sequence(
679  vertexreco+
680  caloTowersSequence+
681  particleFlowCluster+
682  ecalClusters+
683  famosGsfTrackSequence+
684  famosMuonSequence+
685  famosMuonIdAndIsolationSequence+
686  famosConversionSequence+
687  particleFlowTrackWithDisplacedVertex+
688  famosEcalDrivenElectronSequence+
689  famosPhotonSequence+
690  famosParticleFlowSequence+
691  egammaHighLevelRecoPostPF+
692  muonshighlevelreco+
693  caloJetMetGen+
694  caloJets+
695  metreco+
696  PFJetMet+
697  jetTrackAssoc+
698  recoJPTJets+
699  metreco+
700  reducedRecHits+
701  famosBTaggingSequence+
702  famosPFTauTaggingSequence
703 )
704 
705 # Simulation plus reconstruction
706 famosWithEverything = cms.Sequence(
707  simulationWithFamos+
708  reconstructionWithFamos
709 )
710 
if(dp >Float(M_PI)) dp-