diff --git a/Configuration/StandardSequences/python/Reconstruction_cff.py b/Configuration/StandardSequences/python/Reconstruction_cff.py index 9d5832ddf6f6f..5b2b82ed8738a 100644 --- a/Configuration/StandardSequences/python/Reconstruction_cff.py +++ b/Configuration/StandardSequences/python/Reconstruction_cff.py @@ -10,6 +10,9 @@ from TrackingTools.Configuration.TrackingTools_cff import * from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import * from RecoPixelVertexing.PixelLowPtUtilities.siPixelClusterShapeCache_cfi import * + +from Configuration.Eras.Modifier_fastSim_cff import fastSim + siPixelClusterShapeCachePreSplitting = siPixelClusterShapeCache.clone( src = 'siPixelClustersPreSplitting' ) @@ -73,6 +76,12 @@ _ctpps_2016_localreco_HcalNZS += recoCTPPS ctpps_2016.toReplaceWith(localreco_HcalNZS, _ctpps_2016_localreco_HcalNZS) +########################################### +# no castor, zdc, Totem/CTPPS RP in FastSim +########################################### +_fastSim_localreco = localreco.copyAndExclude([castorreco,totemRPLocalReconstruction,ctppsDiamondLocalReconstruction,ctppsLocalTrackLiteProducer,ctppsPixelLocalReconstruction,trackerlocalreco]) +fastSim.toReplaceWith(localreco, _fastSim_localreco) + # # temporarily switching off recoGenJets; since this are MC and wil be moved to a proper sequence # @@ -91,6 +100,11 @@ _globalreco_tracking_LowPU.replace(trackingGlobalReco, recopixelvertexing+trackingGlobalReco) from Configuration.Eras.Modifier_trackingLowPU_cff import trackingLowPU trackingLowPU.toReplaceWith(globalreco_tracking, _globalreco_tracking_LowPU) +########################################## +# offlineBeamSpot is reconstructed before mixing in fastSim +########################################## +_fastSim_globalreco_tracking = globalreco_tracking.copyAndExclude([offlineBeamSpot,MeasurementTrackerEventPreSplitting,siPixelClusterShapeCachePreSplitting]) +fastSim.toReplaceWith(globalreco_tracking,_fastSim_globalreco_tracking) globalreco = cms.Sequence(globalreco_tracking* particleFlowCluster* @@ -106,6 +120,12 @@ _run3_globalreco = globalreco.copyAndExclude([CastorFullReco]) run3_common.toReplaceWith(globalreco, _run3_globalreco) +_fastSim_globalreco = globalreco.copyAndExclude([CastorFullReco,muoncosmicreco]) +# insert the few tracking modules to be run after mixing back in the globalreco sequence +_fastSim_globalreco.insert(0,newCombinedSeeds+trackExtrapolator+caloTowerForTrk+firstStepPrimaryVerticesUnsorted+ak4CaloJetsForTrk+initialStepTrackRefsForJets+firstStepPrimaryVertices) +fastSim.toReplaceWith(globalreco,_fastSim_globalreco) + + globalreco_plusPL= cms.Sequence(globalreco*ctfTracksPixelLess) reducedRecHits = cms.Sequence ( reducedEcalRecHitsSequence * reducedHcalRecHitsSequence ) @@ -133,6 +153,9 @@ _highlevelreco_HI += hiCentrality _highlevelreco_HI += hiClusterCompatibility pp_on_XeXe_2017.toReplaceWith(highlevelreco, _highlevelreco_HI) +# not commisoned and not relevant in FastSim (?): +_fastSim_highlevelreco = highlevelreco.copyAndExclude([cosmicDCTracksSeq,muoncosmichighlevelreco]) +fastSim.toReplaceWith(highlevelreco,_fastSim_highlevelreco) from FWCore.Modules.logErrorHarvester_cfi import * diff --git a/FastSimulation/Configuration/python/DigiAliases_cff.py b/FastSimulation/Configuration/python/DigiAliases_cff.py index 435d7a5af8873..035f376f8060e 100644 --- a/FastSimulation/Configuration/python/DigiAliases_cff.py +++ b/FastSimulation/Configuration/python/DigiAliases_cff.py @@ -13,12 +13,14 @@ gtDigis = None gmtDigis = None -def loadDigiAliases(premix=False): +loadDigiAliasesWasCalled = False +def loadDigiAliases(premix=False): nopremix = not premix - global generalTracks,ecalPreshowerDigis,ecalDigis,hcalDigis,muonDTDigis,muonCSCDigis,muonRPCDigis + global generalTracks,ecalPreshowerDigis,ecalDigis,hcalDigis,muonDTDigis,muonCSCDigis,muonRPCDigis,loadDigiAliasesWasCalled + loadDigiAliasesWasCalled=True generalTracks = cms.EDAlias( **{"mix" if nopremix else "mixData" : cms.VPSet( diff --git a/FastSimulation/Configuration/python/Reconstruction_AftMix_cff.py b/FastSimulation/Configuration/python/Reconstruction_AftMix_cff.py index 75a0969a8cd3f..d9e8269333e63 100644 --- a/FastSimulation/Configuration/python/Reconstruction_AftMix_cff.py +++ b/FastSimulation/Configuration/python/Reconstruction_AftMix_cff.py @@ -6,209 +6,6 @@ # At present, only the generalTrack collection, produced with iterative tracking is mixed. ############################# -import FWCore.ParameterSet.Config as cms -from FWCore.ParameterSet.SequenceTypes import _SequenceCollection - -# import standard reconstruction -# apply modifications before doing the actual import at the end -import Configuration.StandardSequences.Reconstruction_cff as _reco - -# list of modules to be deleted -_mod2del = [] - -########################################## -# offlineBeamSpot is reconstructed before mixing -########################################## -_mod2del.append(_reco.offlineBeamSpot) -_reco.globalreco.remove(_reco.offlineBeamSpot) # temporary removing this by hand, cause the usual removal (see end of this file) doesn't seem work - -########################################### -# no castor, zdc, Totem/CTPPS RP in FastSim -########################################### -_reco.localreco.remove(_reco.castorreco) -_reco.globalreco.remove(_reco.CastorFullReco) -_reco.hcalLocalRecoSequence.remove(_reco.zdcreco) -_reco.localreco.remove(_reco.totemRPLocalReconstruction) -_reco.localreco.remove(_reco.ctppsDiamondLocalReconstruction) -_reco.localreco.remove(_reco.ctppsLocalTrackLiteProducer) -_reco.localreco.remove(_reco.ctppsPixelLocalReconstruction) - -########################################## -# Calo rechits -########################################## -# not commisoned and not relevant in FastSim (?): -_reco.reducedEcalRecHitsSequence.remove(_reco.seldigis) -_reco.ecalRecHitSequence.remove(_reco.ecalCompactTrigPrim) -_reco.ecalRecHitSequence.remove(_reco.ecalTPSkim) - -# no flags for bad channels in FastSim -_reco.ecalRecHit.killDeadChannels = False -_reco.ecalRecHit.recoverEBFE = False -_reco.ecalRecHit.recoverEEFE = False -_reco.ecalUncalibRecHitSequence.remove(_reco.ecalDetIdToBeRecovered) - -########################################## -# Changes to tracking sequences -########################################## -# modules to be removed -_mod2del = _reco.trackingGlobalReco.expandAndClone()._seq._collection -_mod2del.append(_reco.trackingGlobalReco) -_mod2del.extend(_reco.recopixelvertexing.expandAndClone()._seq._collection) -_mod2del.append(_reco.MeasurementTrackerEventPreSplitting) -# actually we want to keep a few modules that we need to run (again) after mixing) -for _entry in [_reco.firstStepPrimaryVerticesUnsorted,_reco.firstStepPrimaryVertices,_reco.ak4CaloJetsForTrk,_reco.caloTowerForTrk,_reco.initialStepTrackRefsForJets,_reco.trackExtrapolator]: - while _entry in _mod2del: - _mod2del.remove(_entry) - -# remove tracking sequences from main reco sequences -_reco.localreco.remove(_reco.trackerlocalreco) -_reco.globalreco.remove(_reco.siPixelClusterShapeCachePreSplitting) -_reco.globalreco.remove(_reco.trackingGlobalReco) - -# we need a replacment for the firstStepPrimaryVerticesUnsorted -# that includes tracker information of signal and pile up -# after mixing there is no such thing as initialStepTracks, -# so we replace the input collection for firstStepPrimaryVerticesUnsorted with generalTracks -_reco.firstStepPrimaryVerticesUnsorted.TrackLabel = "generalTracks" -_reco.initialStepTrackRefsForJets.src = "generalTracks" - -# insert the few tracking modules to be run after mixing back in the globalreco sequence -#for _entry in reversed([trackExtrapolator,caloTowerForTrk,firstStepPrimaryVertices,ak4CaloJetsForTrk]) -_reco.globalreco.insert(0,_reco.trackExtrapolator+_reco.caloTowerForTrk+_reco.firstStepPrimaryVerticesUnsorted+_reco.ak4CaloJetsForTrk+_reco.initialStepTrackRefsForJets+_reco.firstStepPrimaryVertices) - -# FastSim doesn't use Runge Kute for propagation -# the following propagators are not used in FastSim, but just to be sure... -_reco.KFFitterForRefitOutsideIn.Propagator = 'SmartPropagatorAny' -_reco.KFSmootherForRefitOutsideIn.Propagator = 'SmartPropagator' - -# replace the standard ecal-driven seeds with the FastSim emulated ones -import FastSimulation.Tracking.ElectronSeeds_cff -_reco.newCombinedSeeds = FastSimulation.Tracking.ElectronSeeds_cff.newCombinedSeeds -_reco.globalreco.insert(0,_reco.newCombinedSeeds) - -########################################## -# FastSim changes to electron reconstruction -########################################## -# tracker driven electron seeds depend on the generalTracks trajectory collection -# However, in FastSim jobs, trajectories are only available for the 'before mixing' track collections -# Therefore we let the seeds depend on the 'before mixing' generalTracks collection -# TODO: investigate whether the dependence on trajectories can be avoided -import FastSimulation.Tracking.ElectronSeedTrackRefFix_cfi -_trackerDrivenElectronSeeds = FastSimulation.Tracking.ElectronSeedTrackRefFix_cfi.fixedTrackerDrivenElectronSeeds.clone() -_reco.electronSeeds.replace(_reco.trackerDrivenElectronSeeds,_reco.trackerDrivenElectronSeeds+_trackerDrivenElectronSeeds) -_reco.trackerDrivenElectronSeedsTmp = _reco.trackerDrivenElectronSeeds -_reco.trackerDrivenElectronSeedsTmp.TkColList = cms.VInputTag(cms.InputTag("generalTracksBeforeMixing")) -_reco.trackerDrivenElectronSeeds = _trackerDrivenElectronSeeds -_reco.trackerDrivenElectronSeeds.seedCollection.setModuleLabel("trackerDrivenElectronSeedsTmp") -_reco.trackerDrivenElectronSeeds.idCollection.setModuleLabel("trackerDrivenElectronSeedsTmp") - -# replace the ECAL driven electron track candidates with the FastSim emulated ones -import FastSimulation.Tracking.electronCkfTrackCandidates_cff -_reco.fastElectronCkfTrackCandidates = FastSimulation.Tracking.electronCkfTrackCandidates_cff.electronCkfTrackCandidates.clone() -_reco.electronGsfTracking.replace(_reco.electronCkfTrackCandidates,_reco.fastElectronCkfTrackCandidates) -_reco.electronGsfTracks.src = "fastElectronCkfTrackCandidates" - -# FastSim has no template fit on tracker hits -_reco.electronGsfTracks.TTRHBuilder = "WithoutRefit" - -# the conversion producer depends on trajectories -# so we feed it with the 'before mixing' track colletion -_reco.generalConversionTrackProducer.TrackProducer = 'generalTracksBeforeMixing' - -# then we need to fix the track references, so that they point to the final track collection, after mixing -import FastSimulation.Tracking.ConversionTrackRefFix_cfi -_conversionTrackRefFix = FastSimulation.Tracking.ConversionTrackRefFix_cfi.fixedConversionTracks.clone( - src = cms.InputTag("generalConversionTrackProducerTmp")) -_reco.conversionTrackSequenceNoEcalSeeded.replace(_reco.generalConversionTrackProducer,_reco.generalConversionTrackProducer+_conversionTrackRefFix) -_reco.generalConversionTrackProducerTmp = _reco.generalConversionTrackProducer -_reco.generalConversionTrackProducer = _conversionTrackRefFix - -# this might be historical: not sure why we do this -_reco.egammaGlobalReco.replace(_reco.conversionTrackSequence,_reco.conversionTrackSequenceNoEcalSeeded) -_reco.allConversions.src = 'gsfGeneralConversionTrackMerger' -# TODO: revisit converions in FastSim - -# not commisoned and not relevant in FastSim (?): -_reco.egammaHighLevelRecoPrePF.remove(_reco.uncleanedOnlyElectronSequence) - -# not commisoned and not relevant in FastSim (?): -_reco.egammareco.remove(_reco.conversionSequence) -_reco.egammaHighLevelRecoPrePF.remove(_reco.conversionSequence) - -########################################## -# FastSim changes to muon reconstruction -########################################## -# not commisoned and not relevant in FastSim (?): -_reco.globalreco.remove(_reco.muoncosmicreco) -_reco.highlevelreco.remove(_reco.cosmicDCTracksSeq) -_reco.highlevelreco.remove(_reco.muoncosmichighlevelreco) -_reco.muons.FillCosmicsIdMap = False - -# not commisoned and not relevant in FastSim (?): -_reco.globalmuontracking.remove(_reco.displacedGlobalMuonTracking) -_reco.standalonemuontracking.remove(_reco.displacedMuonSeeds) -_reco.standalonemuontracking.remove(_reco.displacedStandAloneMuons) - -# not commisoned and not relevant in FastSim (?): -_reco.muonGlobalReco.remove(_reco.muonreco_with_SET) - -# not commisoned and not relevant in FastSim (?): -_reco.muonGlobalReco.remove(_reco.muonSelectionTypeSequence) -_reco.muons.FillSelectorMaps = False - -# FastSim has no template fit on tracker hits -_reco.globalMuons.GLBTrajBuilderParameters.GlbRefitterParameters.TrackerRecHitBuilder = 'WithoutRefit' -_reco.globalMuons.GLBTrajBuilderParameters.TrackerRecHitBuilder = 'WithoutRefit' -_reco.globalMuons.GLBTrajBuilderParameters.TrackTransformer.TrackerRecHitBuilder = 'WithoutRefit' -_reco.tevMuons.RefitterParameters.TrackerRecHitBuilder = 'WithoutRefit' - -# FastSim doesn't use Runge Kute for propagation -_reco.globalMuons.GLBTrajBuilderParameters.GlbRefitterParameters.Propagator = 'SmartPropagatorAny' -_reco.globalMuons.GLBTrajBuilderParameters.GlobalMuonTrackMatcher.Propagator = 'SmartPropagator' -_reco.globalMuons.GLBTrajBuilderParameters.TrackTransformer.Propagator = 'SmartPropagatorAny' -_reco.GlbMuKFFitter.Propagator = "SmartPropagatorAny" -_reco.GlobalMuonRefitter.Propagator = "SmartPropagatorAny" -_reco.KFSmootherForMuonTrackLoader.Propagator = "SmartPropagatorAny" -_reco.KFSmootherForRefitInsideOut.Propagator = "SmartPropagatorAny" -_reco.KFFitterForRefitInsideOut.Propagator = "SmartPropagatorAny" -_reco.tevMuons.RefitterParameters.Propagator = "SmartPropagatorAny" - -########################################## -# FastSim changes to jet/met reconstruction -########################################## -# CSCHaloData depends on cosmic muons, not available in fastsim -_reco.BeamHaloId.remove(_reco.CSCHaloData) -# GlobalHaloData and BeamHaloSummary depend on CSCHaloData -_reco.BeamHaloId.remove(_reco.GlobalHaloData) -_reco.BeamHaloId.remove(_reco.BeamHaloSummary) - -############################################ -# deleting modules to avoid clashes with part of reconstruction run before mixing -############################################ -for _entry in _mod2del: - for _key,_value in _reco.__dict__.items(): - _index = -1 - if isinstance(_value,cms.Sequence): - try: - _index = _value.index(_entry) - except: - pass - if _index >= 0: - _value.remove(_entry) - # removing the last item does not work, and changes the properties of the sequence - # so, we detect this changed behaviour and add the sequence to the list of items to be deleted - # this is buggy - if not isinstance(_value._seq,_SequenceCollection): - _mod2del.append(_value) - -# and delete -for _entry in _mod2del: - for _key,_value in _reco.__dict__.items(): - if _entry == _value: - delattr(_reco,_key) - -############################################ -# the actual import -############################################ +#All work is now done with the fastSim era from Configuration.StandardSequences.Reconstruction_cff import * diff --git a/FastSimulation/Tracking/python/DetachedTripletStep_cff.py b/FastSimulation/Tracking/python/DetachedTripletStep_cff.py index 0c39cd0bb2d37..6ed50dfe15af5 100644 --- a/FastSimulation/Tracking/python/DetachedTripletStep_cff.py +++ b/FastSimulation/Tracking/python/DetachedTripletStep_cff.py @@ -1,49 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.DetachedTripletStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -detachedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.detachedTripletStepClusters) - -# tracking regions -detachedTripletStepTrackingRegions = _standard.detachedTripletStepTrackingRegions.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -detachedTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.detachedTripletStepSeedLayers.layerList.value(), - trackingRegions = "detachedTripletStepTrackingRegions", - hitMasks = cms.InputTag("detachedTripletStepMasks") -) -detachedTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.detachedTripletStepHitTriplets) - -# track candidates -import FastSimulation.Tracking.TrackCandidateProducer_cfi -detachedTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("detachedTripletStepSeeds"), - MinNumberOfCrossedLayers = 3, - hitMasks = cms.InputTag("detachedTripletStepMasks") - ) - -# tracks -detachedTripletStepTracks = _standard.detachedTripletStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -detachedTripletStepClassifier1 = _standard.detachedTripletStepClassifier1.clone() -detachedTripletStepClassifier1.vertices = "firstStepPrimaryVerticesBeforeMixing" -detachedTripletStepClassifier2 = _standard.detachedTripletStepClassifier2.clone() -detachedTripletStepClassifier2.vertices = "firstStepPrimaryVerticesBeforeMixing" - -detachedTripletStep = _standard.detachedTripletStep.clone() - -# Final sequence -DetachedTripletStep = cms.Sequence(detachedTripletStepMasks - +detachedTripletStepTrackingRegions - +detachedTripletStepSeeds - +detachedTripletStepTrackCandidates - +detachedTripletStepTracks - +detachedTripletStepClassifier1*detachedTripletStepClassifier2 - +detachedTripletStep - ) +# all work is now done using fastSim era +from RecoTracker.IterativeTracking.DetachedTripletStep_cff import * diff --git a/FastSimulation/Tracking/python/ElectronSeeds_cff.py b/FastSimulation/Tracking/python/ElectronSeeds_cff.py index fb774145e7bb4..fe3606dfa1010 100644 --- a/FastSimulation/Tracking/python/ElectronSeeds_cff.py +++ b/FastSimulation/Tracking/python/ElectronSeeds_cff.py @@ -2,7 +2,7 @@ # TODO: sync with RecoTracker/IterativeTracking/python/ElectronSeeds_cff.py -newCombinedSeeds = cms.EDProducer( +_newCombinedSeeds = cms.EDProducer( "SeedCombiner", seedCollections = cms.VInputTag( cms.InputTag('initialStepSeeds'), diff --git a/FastSimulation/Tracking/python/InitialStep_cff.py b/FastSimulation/Tracking/python/InitialStep_cff.py index 82b76110c2429..c177d293a534d 100644 --- a/FastSimulation/Tracking/python/InitialStep_cff.py +++ b/FastSimulation/Tracking/python/InitialStep_cff.py @@ -1,51 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.InitialStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# tracking regions -initialStepTrackingRegions = _standard.initialStepTrackingRegions.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -initialStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.initialStepSeedLayers.layerList.value(), - trackingRegions = "initialStepTrackingRegions" -) -initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.initialStepHitTriplets) -initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none" - -# track candidates -import FastSimulation.Tracking.TrackCandidateProducer_cfi -initialStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("initialStepSeeds"), - MinNumberOfCrossedLayers = 3 - ) - -# tracks -initialStepTracks = _standard.initialStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -firstStepPrimaryVerticesBeforeMixing = _standard.firstStepPrimaryVerticesUnsorted.clone() - -# final selection -initialStepClassifier1 = _standard.initialStepClassifier1.clone() -initialStepClassifier1.vertices = "firstStepPrimaryVerticesBeforeMixing" -initialStepClassifier2 = _standard.initialStepClassifier2.clone() -initialStepClassifier2.vertices = "firstStepPrimaryVerticesBeforeMixing" -initialStepClassifier3 = _standard.initialStepClassifier3.clone() -initialStepClassifier3.vertices = "firstStepPrimaryVerticesBeforeMixing" - - -initialStep = _standard.initialStep.clone() - -# Final sequence -InitialStep = cms.Sequence(initialStepTrackingRegions - +initialStepSeeds - +initialStepTrackCandidates - +initialStepTracks - +firstStepPrimaryVerticesBeforeMixing - +initialStepClassifier1*initialStepClassifier2*initialStepClassifier3 - +initialStep - ) - +# all work is now done via fastSim era +from RecoTracker.IterativeTracking.InitialStep_cff import * diff --git a/FastSimulation/Tracking/python/JetCoreRegionalStep_cff.py b/FastSimulation/Tracking/python/JetCoreRegionalStep_cff.py index e9b8dc7c15c33..67f90c437d7d7 100644 --- a/FastSimulation/Tracking/python/JetCoreRegionalStep_cff.py +++ b/FastSimulation/Tracking/python/JetCoreRegionalStep_cff.py @@ -1,20 +1,4 @@ -import FWCore.ParameterSet.Config as cms - -# a dummy track collection +# the work is now done via the fastSim era from RecoTracker.FinalTrackSelectors.trackAlgoPriorityOrder_cfi import trackAlgoPriorityOrder -import RecoTracker.FinalTrackSelectors.trackListMerger_cfi -jetCoreRegionalStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone( - TrackProducers = (), - hasSelector=cms.vint32(), - selectedTrackQuals = cms.VInputTag(), - copyExtras = True - ) - -# a dummy track selector -import RecoTracker.IterativeTracking.JetCoreRegionalStep_cff -jetCoreRegionalStep = RecoTracker.IterativeTracking.JetCoreRegionalStep_cff.jetCoreRegionalStep.clone() -jetCoreRegionalStep.vertices = "firstStepPrimaryVerticesBeforeMixing" -# a dummy sequence -JetCoreRegionalStep = cms.Sequence(jetCoreRegionalStepTracks* - jetCoreRegionalStep) +from RecoTracker.IterativeTracking.JetCoreRegionalStep_cff import * diff --git a/FastSimulation/Tracking/python/LowPtTripletStep_cff.py b/FastSimulation/Tracking/python/LowPtTripletStep_cff.py index 6ac6636ce089f..23a1bfb3c89e5 100644 --- a/FastSimulation/Tracking/python/LowPtTripletStep_cff.py +++ b/FastSimulation/Tracking/python/LowPtTripletStep_cff.py @@ -1,46 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.LowPtTripletStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -lowPtTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.lowPtTripletStepClusters) - -# tracking regions -lowPtTripletStepTrackingRegions = _standard.lowPtTripletStepTrackingRegions.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -lowPtTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.lowPtTripletStepSeedLayers.layerList.value(), - trackingRegions = "lowPtTripletStepTrackingRegions", - hitMasks = cms.InputTag("lowPtTripletStepMasks"), -) -lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.lowPtTripletStepHitTriplets) -lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none" - -# track candidates -import FastSimulation.Tracking.TrackCandidateProducer_cfi -lowPtTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("lowPtTripletStepSeeds"), - MinNumberOfCrossedLayers = 3, - hitMasks = cms.InputTag("lowPtTripletStepMasks"), -) - -# tracks -lowPtTripletStepTracks = _standard.lowPtTripletStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -# final selection -lowPtTripletStep = _standard.lowPtTripletStep.clone() -lowPtTripletStep.vertices = "firstStepPrimaryVerticesBeforeMixing" - -# Final swquence -LowPtTripletStep = cms.Sequence(lowPtTripletStepMasks - +lowPtTripletStepTrackingRegions - +lowPtTripletStepSeeds - +lowPtTripletStepTrackCandidates - +lowPtTripletStepTracks - +lowPtTripletStep - ) +# the work is now done via the fastSim era +from RecoTracker.IterativeTracking.LowPtTripletStep_cff import * diff --git a/FastSimulation/Tracking/python/MeasurementTrackerEventProducer_cfi.py b/FastSimulation/Tracking/python/MeasurementTrackerEventProducer_cfi.py index 5ae4c5ca08438..1bcb67af98ce5 100644 --- a/FastSimulation/Tracking/python/MeasurementTrackerEventProducer_cfi.py +++ b/FastSimulation/Tracking/python/MeasurementTrackerEventProducer_cfi.py @@ -1,10 +1,3 @@ import FWCore.ParameterSet.Config as cms -import RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi -MeasurementTrackerEvent = RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi.MeasurementTrackerEvent.clone( - pixelClusterProducer = '', - stripClusterProducer = '', - inactivePixelDetectorLabels = cms.VInputTag(), - inactiveStripDetectorLabels = cms.VInputTag(), - switchOffPixelsIfEmpty = False -) +from RecoTracker.MeasurementDet.MeasurementTrackerEventProducer_cfi import MeasurementTrackerEvent diff --git a/FastSimulation/Tracking/python/MixedTripletStep_cff.py b/FastSimulation/Tracking/python/MixedTripletStep_cff.py index bc2b213e09f77..150315c72a9b5 100644 --- a/FastSimulation/Tracking/python/MixedTripletStep_cff.py +++ b/FastSimulation/Tracking/python/MixedTripletStep_cff.py @@ -1,68 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.MixedTripletStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -mixedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.mixedTripletStepClusters) -mixedTripletStepMasks.oldHitRemovalInfo = cms.InputTag("pixelPairStepMasks") - -# tracking regions -mixedTripletStepTrackingRegionsA = _standard.mixedTripletStepTrackingRegionsA.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -mixedTripletStepSeedsA = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.mixedTripletStepSeedLayersA.layerList.value(), - trackingRegions = "mixedTripletStepTrackingRegionsA", - hitMasks = cms.InputTag("mixedTripletStepMasks") -) -mixedTripletStepSeedsA.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.mixedTripletStepHitTripletsA) - - -### -mixedTripletStepTrackingRegionsB = _standard.mixedTripletStepTrackingRegionsB.clone() - -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -mixedTripletStepSeedsB = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.mixedTripletStepSeedLayersB.layerList.value(), - trackingRegions = "mixedTripletStepTrackingRegionsB", - hitMasks = cms.InputTag("mixedTripletStepMasks") -) -mixedTripletStepSeedsB.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.mixedTripletStepHitTripletsB) - -mixedTripletStepSeeds = _standard.mixedTripletStepSeeds.clone() - -#track candidates -import FastSimulation.Tracking.TrackCandidateProducer_cfi -mixedTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("mixedTripletStepSeeds"), - MinNumberOfCrossedLayers = 3, - hitMasks = cms.InputTag("mixedTripletStepMasks"), -) - -# tracks -mixedTripletStepTracks = _standard.mixedTripletStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -# final selection -mixedTripletStepClassifier1 = _standard.mixedTripletStepClassifier1.clone() -mixedTripletStepClassifier1.vertices = "firstStepPrimaryVerticesBeforeMixing" -mixedTripletStepClassifier2 = _standard.mixedTripletStepClassifier2.clone() -mixedTripletStepClassifier2.vertices = "firstStepPrimaryVerticesBeforeMixing" - -mixedTripletStep = _standard.mixedTripletStep.clone() - -# Final sequence -MixedTripletStep = cms.Sequence(mixedTripletStepMasks - +mixedTripletStepTrackingRegionsA - +mixedTripletStepSeedsA - +mixedTripletStepTrackingRegionsB - +mixedTripletStepSeedsB - +mixedTripletStepSeeds - +mixedTripletStepTrackCandidates - +mixedTripletStepTracks - +mixedTripletStepClassifier1*mixedTripletStepClassifier2 - +mixedTripletStep - ) +# the work is now done via the fastSim era +from RecoTracker.IterativeTracking.MixedTripletStep_cff import * diff --git a/FastSimulation/Tracking/python/PixelLessStep_cff.py b/FastSimulation/Tracking/python/PixelLessStep_cff.py index 1543d9c286edd..9bb01222ca5ec 100644 --- a/FastSimulation/Tracking/python/PixelLessStep_cff.py +++ b/FastSimulation/Tracking/python/PixelLessStep_cff.py @@ -1,51 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.PixelLessStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -pixelLessStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.pixelLessStepClusters) - -# tracking regions -pixelLessStepTrackingRegions = _standard.pixelLessStepTrackingRegions.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -pixelLessStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.pixelLessStepSeedLayers.layerList.value(), - trackingRegions = "pixelLessStepTrackingRegions", - hitMasks = cms.InputTag("pixelLessStepMasks"), -) -pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.pixelLessStepHitTriplets) -pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False - -# track candidates -import FastSimulation.Tracking.TrackCandidateProducer_cfi -pixelLessStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("pixelLessStepSeeds"), - MinNumberOfCrossedLayers = 6, # ? - hitMasks = cms.InputTag("pixelLessStepMasks"), -) - -# tracks -pixelLessStepTracks = _standard.pixelLessStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -# final selection -pixelLessStepClassifier1 = _standard.pixelLessStepClassifier1.clone() -pixelLessStepClassifier1.vertices = "firstStepPrimaryVerticesBeforeMixing" -pixelLessStepClassifier2 = _standard.pixelLessStepClassifier2.clone() -pixelLessStepClassifier2.vertices = "firstStepPrimaryVerticesBeforeMixing" -pixelLessStep = _standard.pixelLessStep.clone() - -# Final sequence -PixelLessStep = cms.Sequence(pixelLessStepMasks - +pixelLessStepTrackingRegions - +pixelLessStepSeeds - +pixelLessStepTrackCandidates - +pixelLessStepTracks - +pixelLessStepClassifier1*pixelLessStepClassifier2 - +pixelLessStep - ) - +# the work is now done via the fastSim era +from RecoTracker.IterativeTracking.PixelLessStep_cff import * diff --git a/FastSimulation/Tracking/python/PixelPairStep_cff.py b/FastSimulation/Tracking/python/PixelPairStep_cff.py index e5f2a860f45da..38c1483c28ece 100644 --- a/FastSimulation/Tracking/python/PixelPairStep_cff.py +++ b/FastSimulation/Tracking/python/PixelPairStep_cff.py @@ -1,45 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.PixelPairStep_cff as _standard - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -pixelPairStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.pixelPairStepClusters) - -# tracking regions -pixelPairStepTrackingRegions = _standard.pixelPairStepTrackingRegions.clone( - RegionPSet=dict(VertexCollection = "firstStepPrimaryVerticesBeforeMixing") -) - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -pixelPairStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.pixelPairStepSeedLayers.layerList.value(), - trackingRegions = "pixelPairStepTrackingRegions", - hitMasks = cms.InputTag("pixelPairStepMasks"), -) - -# track candidate -import FastSimulation.Tracking.TrackCandidateProducer_cfi -pixelPairStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - src = cms.InputTag("pixelPairStepSeeds"), - MinNumberOfCrossedLayers = 2, # ? - hitMasks = cms.InputTag("pixelPairStepMasks"), -) - -# tracks -pixelPairStepTracks = _standard.pixelPairStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -# final Selection -pixelPairStep = _standard.pixelPairStep.clone() -pixelPairStep.vertices = "firstStepPrimaryVerticesBeforeMixing" - -# Final sequence -PixelPairStep = cms.Sequence(pixelPairStepMasks - +pixelPairStepTrackingRegions - +pixelPairStepSeeds - +pixelPairStepTrackCandidates - +pixelPairStepTracks - +pixelPairStep - ) +# the work is now done via the fastSim era +from RecoTracker.IterativeTracking.PixelPairStep_cff import * diff --git a/FastSimulation/Tracking/python/SeedingMigration.py b/FastSimulation/Tracking/python/SeedingMigration.py index be2bfe77bf35f..d12016c559ad5 100644 --- a/FastSimulation/Tracking/python/SeedingMigration.py +++ b/FastSimulation/Tracking/python/SeedingMigration.py @@ -1,10 +1,11 @@ import FWCore.ParameterSet.Config as cms +import copy def _copy(old, new, skip=[]): skipSet = set(skip) for key in old.parameterNames_(): if key not in skipSet: - setattr(new, key, getattr(old, key)) + setattr(new, key, copy.deepcopy(getattr(old, key))) def _hitSetProducerToFactoryPSet(producer): _map = { diff --git a/FastSimulation/Tracking/python/TobTecStep_cff.py b/FastSimulation/Tracking/python/TobTecStep_cff.py index 87595f87a4749..5bd3c83fb8d62 100644 --- a/FastSimulation/Tracking/python/TobTecStep_cff.py +++ b/FastSimulation/Tracking/python/TobTecStep_cff.py @@ -1,73 +1,3 @@ -import FWCore.ParameterSet.Config as cms - # import the full tracking equivalent of this file -import RecoTracker.IterativeTracking.TobTecStep_cff as _standard -from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet - -# fast tracking mask producer -import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi -tobTecStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(_standard.tobTecStepClusters) - -# tracking regions -tobTecStepTrackingRegionsTripl = _standard.tobTecStepTrackingRegionsTripl.clone() - -# trajectory seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -tobTecStepSeedsTripl = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.tobTecStepSeedLayersTripl.layerList.value(), - trackingRegions = "tobTecStepTrackingRegionsTripl", - hitMasks = cms.InputTag("tobTecStepMasks"), -) -tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(_standard.tobTecStepHitTripletsTripl) -tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.SeedComparitorPSet=cms.PSet( ComponentName = cms.string( "none" ) ) -tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False - -# pair tracking regions -tobTecStepTrackingRegionsPair = _standard.tobTecStepTrackingRegionsPair.clone() - -#pair seeds -import FastSimulation.Tracking.TrajectorySeedProducer_cfi -tobTecStepSeedsPair = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( - layerList = _standard.tobTecStepSeedLayersPair.layerList.value(), - trackingRegions = "tobTecStepTrackingRegionsPair", - hitMasks = cms.InputTag("tobTecStepMasks"), -) - -# -tobTecStepSeeds = _standard.tobTecStepSeeds.clone() - -# track candidate -import FastSimulation.Tracking.TrackCandidateProducer_cfi -tobTecStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( - MinNumberOfCrossedLayers = 3, - src = cms.InputTag("tobTecStepSeeds"), - hitMasks = cms.InputTag("tobTecStepMasks"), -) - -# track fitters -from RecoTracker.IterativeTracking.TobTecStep_cff import tobTecFlexibleKFFittingSmoother,tobTecStepRKTrajectorySmootherForLoopers,tobTecStepRKTrajectorySmoother,tobTecStepRKTrajectoryFitterForLoopers,tobTecStepRKTrajectoryFitter,tobTecStepFitterSmootherForLoopers,tobTecStepFitterSmoother - -# tracks -tobTecStepTracks = _standard.tobTecStepTracks.clone(TTRHBuilder = 'WithoutRefit') - -# final selection -tobTecStepClassifier1 = _standard.tobTecStepClassifier1.clone() -tobTecStepClassifier1.vertices = "firstStepPrimaryVerticesBeforeMixing" -tobTecStepClassifier2 = _standard.tobTecStepClassifier2.clone() -tobTecStepClassifier2.vertices = "firstStepPrimaryVerticesBeforeMixing" - -tobTecStep = _standard.tobTecStep.clone() - - - -# Final sequence -TobTecStep = cms.Sequence(tobTecStepMasks - +tobTecStepTrackingRegionsTripl - +tobTecStepSeedsTripl - +tobTecStepTrackingRegionsPair - +tobTecStepSeedsPair - +tobTecStepSeeds - +tobTecStepTrackCandidates - +tobTecStepTracks - +tobTecStepClassifier1*tobTecStepClassifier2 +tobTecStep - ) +# the work is now done via the fastSim era +from RecoTracker.IterativeTracking.TobTecStep_cff import * diff --git a/RecoEcal/EgammaClusterProducers/python/reducedRecHitsSequence_cff.py b/RecoEcal/EgammaClusterProducers/python/reducedRecHitsSequence_cff.py index 814518413c3e9..fad591eb8a9d5 100644 --- a/RecoEcal/EgammaClusterProducers/python/reducedRecHitsSequence_cff.py +++ b/RecoEcal/EgammaClusterProducers/python/reducedRecHitsSequence_cff.py @@ -174,3 +174,8 @@ from Configuration.Eras.Modifier_phase2_common_cff import phase2_common phase2_common.toReplaceWith( reducedEcalRecHitsSequence , _phase2_reducedEcalRecHitsSequence ) + + +_fastSim_reducedEcalRecHitsSequence = reducedEcalRecHitsSequence.copyAndExclude([seldigis]) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith( reducedEcalRecHitsSequence, _fastSim_reducedEcalRecHitsSequence) diff --git a/RecoEgamma/Configuration/python/RecoEgamma_cff.py b/RecoEgamma/Configuration/python/RecoEgamma_cff.py index 86fceec7a006e..bdbe10440d972 100644 --- a/RecoEgamma/Configuration/python/RecoEgamma_cff.py +++ b/RecoEgamma/Configuration/python/RecoEgamma_cff.py @@ -21,8 +21,17 @@ from RecoEgamma.EgammaElectronProducers.pfBasedElectronIso_cff import * egammaGlobalReco = cms.Sequence(electronGsfTracking*conversionTrackSequence*allConversionSequence) +# this might be historical: not sure why we do this +from Configuration.Eras.Modifier_fastSim_cff import fastSim +_fastSim_egammaGlobalReco = egammaGlobalReco.copy() +_fastSim_egammaGlobalReco.replace(conversionTrackSequence,conversionTrackSequenceNoEcalSeeded) +fastSim.toReplaceWith(egammaGlobalReco, _fastSim_egammaGlobalReco) + egammareco = cms.Sequence(electronSequence*conversionSequence*photonSequence) egammaHighLevelRecoPrePF = cms.Sequence(gsfEcalDrivenElectronSequence*uncleanedOnlyElectronSequence*conversionSequence*photonSequence) +# not commisoned and not relevant in FastSim (?): +fastSim.toReplaceWith(egammareco, egammareco.copyAndExclude([conversionSequence])) +fastSim.toReplaceWith(egammaHighLevelRecoPrePF,egammaHighLevelRecoPrePF.copyAndExclude([uncleanedOnlyElectronSequence,conversionSequence])) #egammaHighLevelRecoPostPF = cms.Sequence(gsfElectronMergingSequence*interestingEgammaIsoDetIds*photonIDSequence*eIdSequence*hfEMClusteringSequence) #adding new gedGsfElectronSequence and gedPhotonSequence : diff --git a/RecoEgamma/EgammaPhotonProducers/python/allConversions_cfi.py b/RecoEgamma/EgammaPhotonProducers/python/allConversions_cfi.py index 0552933a7c016..3da3570428e0f 100644 --- a/RecoEgamma/EgammaPhotonProducers/python/allConversions_cfi.py +++ b/RecoEgamma/EgammaPhotonProducers/python/allConversions_cfi.py @@ -64,3 +64,5 @@ from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal phase2_hgcal.toModify( allConversions, bypassPreselGsf = cms.bool(False) ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(allConversions, src = 'gsfGeneralConversionTrackMerger') diff --git a/RecoEgamma/EgammaPhotonProducers/python/conversionTrackSequence_cff.py b/RecoEgamma/EgammaPhotonProducers/python/conversionTrackSequence_cff.py index a46b515b1396c..d2847b8d762cd 100644 --- a/RecoEgamma/EgammaPhotonProducers/python/conversionTrackSequence_cff.py +++ b/RecoEgamma/EgammaPhotonProducers/python/conversionTrackSequence_cff.py @@ -36,6 +36,21 @@ setArbitratedMergedEcalGeneral = cms.bool(True), ) +#fastSim +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# the conversion producer depends on trajectories +# so we feed it with the 'before mixing' track collection +generalConversionTrackProducerTmp = generalConversionTrackProducer.clone( + TrackProducer = 'generalTracksBeforeMixing') + +# then we need to fix the track references, so that they point to the final track collection, after mixing +import FastSimulation.Tracking.ConversionTrackRefFix_cfi +_fastSim_conversionTrackRefFix = FastSimulation.Tracking.ConversionTrackRefFix_cfi.fixedConversionTracks.clone( + src = cms.InputTag("generalConversionTrackProducerTmp")) +fastSim.toReplaceWith(generalConversionTrackProducer, + _fastSim_conversionTrackRefFix) + + #producer from conversionStep tracks collection, set tracker only, merged arbitrated, merged arbitrated ecal/general flags conversionStepConversionTrackProducer = RecoEgamma.EgammaPhotonProducers.conversionTrackProducer_cfi.conversionTrackProducer.clone( TrackProducer = cms.string('conversionStepTracks'), @@ -154,3 +169,7 @@ #special sequence for fastsim which skips the ecal-seeded and conversionStep tracks for now conversionTrackSequenceNoEcalSeeded = cms.Sequence(generalConversionTrackProducer*gsfConversionTrackProducer*gsfGeneralConversionTrackMerger) + +_fastSim_conversionTrackSequenceNoEcalSeeded = conversionTrackSequenceNoEcalSeeded.copy() +_fastSim_conversionTrackSequenceNoEcalSeeded.replace(generalConversionTrackProducer,generalConversionTrackProducerTmp+generalConversionTrackProducer) +fastSim.toReplaceWith(conversionTrackSequenceNoEcalSeeded,_fastSim_conversionTrackSequenceNoEcalSeeded) diff --git a/RecoLocalCalo/Configuration/python/ecalLocalRecoSequence_cff.py b/RecoLocalCalo/Configuration/python/ecalLocalRecoSequence_cff.py index f9f3d08126c74..5bdae46ed1e79 100644 --- a/RecoLocalCalo/Configuration/python/ecalLocalRecoSequence_cff.py +++ b/RecoLocalCalo/Configuration/python/ecalLocalRecoSequence_cff.py @@ -38,3 +38,9 @@ _phase2_timing_ecalRecHitSequence = cms.Sequence( ecalRecHitSequence.copy() + ecalDetailedTimeRecHit ) from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing phase2_timing.toReplaceWith( ecalRecHitSequence, _phase2_timing_ecalRecHitSequence ) + +_fastSim_ecalRecHitSequence = ecalRecHitSequence.copyAndExclude([ecalCompactTrigPrim,ecalTPSkim]) +_fastSim_ecalUncalibRecHitSequence = ecalUncalibRecHitSequence.copyAndExclude([ecalDetIdToBeRecovered]) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(ecalRecHitSequence, _fastSim_ecalRecHitSequence) +fastSim.toReplaceWith(ecalUncalibRecHitSequence, _fastSim_ecalUncalibRecHitSequence) diff --git a/RecoLocalCalo/Configuration/python/hcalLocalReco_cff.py b/RecoLocalCalo/Configuration/python/hcalLocalReco_cff.py index ea0bd1e56871c..5b796e0680711 100644 --- a/RecoLocalCalo/Configuration/python/hcalLocalReco_cff.py +++ b/RecoLocalCalo/Configuration/python/hcalLocalReco_cff.py @@ -44,3 +44,7 @@ from Configuration.Eras.Modifier_phase2_hcal_cff import phase2_hcal phase2_hcal.toReplaceWith( hcalLocalRecoSequence, _phase2_hcalLocalRecoSequence ) + +_fastSim_hcalLocalRecoSequence = hcalLocalRecoSequence.copyAndExclude([zdcreco]) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith( hcalLocalRecoSequence, _fastSim_hcalLocalRecoSequence ) diff --git a/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cfi.py b/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cfi.py index 6ac3f1234898a..21e91ceadfe0c 100644 --- a/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cfi.py +++ b/RecoLocalCalo/EcalRecProducers/python/ecalRecHit_cfi.py @@ -83,3 +83,9 @@ ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# no flags for bad channels in FastSim +fastSim.toModify(ecalRecHit, + killDeadChannels = False, + recoverEBFE = False, + recoverEEFE = False) diff --git a/RecoMET/Configuration/python/RecoMET_BeamHaloId_cff.py b/RecoMET/Configuration/python/RecoMET_BeamHaloId_cff.py index c88467b2c18c7..42e6e63f0232f 100644 --- a/RecoMET/Configuration/python/RecoMET_BeamHaloId_cff.py +++ b/RecoMET/Configuration/python/RecoMET_BeamHaloId_cff.py @@ -15,5 +15,10 @@ BeamHaloId = cms.Sequence(CSCHaloData*EcalHaloData*HcalHaloData*GlobalHaloData*BeamHaloSummary) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# CSCHaloData depends on cosmic muons, not available in fastsim +# GlobalHaloData and BeamHaloSummary depend on CSCHaloData +fastSim.toReplaceWith(BeamHaloId, BeamHaloId.copyAndExclude([CSCHaloData,GlobalHaloData,BeamHaloSummary])) + # Needs FEVT content #BeamHaloIdWithGtRecord = cms.Sequence(gtDigis*l1GtRecord*CSCHaloData*EcalHaloData*HcalHaloData*GlobalHaloData*BeamHaloSummary) diff --git a/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py b/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py index af104693e40af..0d2ee9adefb1c 100644 --- a/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py +++ b/RecoMuon/Configuration/python/RecoMuonPPonly_cff.py @@ -46,11 +46,16 @@ # ---------------------------------------------------- # ################## Make the sequences ################## # ---------------------------------------------------- # +from Configuration.Eras.Modifier_fastSim_cff import fastSim # Muon Tracking sequence standalonemuontracking = cms.Sequence(standAloneMuonSeeds*standAloneMuons*refittedStandAloneMuons*displacedMuonSeeds*displacedStandAloneMuons) +# not commisoned and not relevant in FastSim (?): +fastSim.toReplaceWith(standalonemuontracking,standalonemuontracking.copyAndExclude([displacedMuonSeeds,displacedStandAloneMuons])) displacedGlobalMuonTracking = cms.Sequence(iterDisplcedTracking*displacedGlobalMuons) globalmuontracking = cms.Sequence(globalMuons*tevMuons*displacedGlobalMuonTracking) +# not commisoned and not relevant in FastSim (?): +fastSim.toReplaceWith(globalmuontracking,globalmuontracking.copyAndExclude([displacedGlobalMuonTracking])) muontracking = cms.Sequence(standalonemuontracking*globalmuontracking) # Muon Reconstruction @@ -87,3 +92,6 @@ _phase2_muonGlobalReco = muonGlobalReco.copy() _phase2_muonGlobalReco += me0MuonReco phase2_muon.toReplaceWith( muonGlobalReco, _phase2_muonGlobalReco ) + +# not commisoned and not relevant in FastSim (?): +fastSim.toReplaceWith(muonGlobalReco, muonGlobalReco.copyAndExclude([muonreco_with_SET,muonSelectionTypeSequence])) diff --git a/RecoMuon/GlobalMuonProducer/python/globalMuons_cff.py b/RecoMuon/GlobalMuonProducer/python/globalMuons_cff.py index 3fe8a1939b4a8..f6303ed06015f 100644 --- a/RecoMuon/GlobalMuonProducer/python/globalMuons_cff.py +++ b/RecoMuon/GlobalMuonProducer/python/globalMuons_cff.py @@ -28,5 +28,9 @@ minHits = cms.int32(3) ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# FastSim doesn't use Runge Kute for propagation +fastSim.toModify(GlbMuKFFitter, + Propagator = "SmartPropagatorAny") diff --git a/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py b/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py index 938d2a5415b5a..1b7fb4540df7d 100644 --- a/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py +++ b/RecoMuon/GlobalMuonProducer/python/globalMuons_cfi.py @@ -16,4 +16,16 @@ globalMuons.GLBTrajBuilderParameters.GlobalMuonTrackMatcher.Propagator = cms.string('SmartPropagatorRK') globalMuons.GLBTrajBuilderParameters.TrackTransformer.Propagator = cms.string('SmartPropagatorAnyRK') +# FastSim has no template fit on tracker hits +# FastSim doesn't use Runge Kute for propagation +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(globalMuons, + GLBTrajBuilderParameters =dict(GlbRefitterParameters = dict(TrackerRecHitBuilder = 'WithoutRefit', + Propagator = 'SmartPropagatorAny'), + TrackerRecHitBuilder = 'WithoutRefit', + TrackTransformer = dict(TrackerRecHitBuilder = 'WithoutRefit', + Propagator = 'SmartPropagatorAny'), + GlobalMuonTrackMatcher = dict(Propagator = 'SmartPropagator') + ) +) diff --git a/RecoMuon/GlobalMuonProducer/python/tevMuons_cfi.py b/RecoMuon/GlobalMuonProducer/python/tevMuons_cfi.py index b86be3bb157e2..789ae86e4127a 100644 --- a/RecoMuon/GlobalMuonProducer/python/tevMuons_cfi.py +++ b/RecoMuon/GlobalMuonProducer/python/tevMuons_cfi.py @@ -19,5 +19,13 @@ ) ) +# FastSim has no template fit on tracker hits +# FastSim doesn't use Runge Kute for propagation +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(tevMuons, + RefitterParameters = dict(TrackerRecHitBuilder = 'WithoutRefit', + Propagator = "SmartPropagatorAny") + ) + diff --git a/RecoMuon/GlobalTrackingTools/python/GlobalMuonRefitter_cff.py b/RecoMuon/GlobalTrackingTools/python/GlobalMuonRefitter_cff.py index b71d73476df9f..8c08ec7afa041 100644 --- a/RecoMuon/GlobalTrackingTools/python/GlobalMuonRefitter_cff.py +++ b/RecoMuon/GlobalTrackingTools/python/GlobalMuonRefitter_cff.py @@ -50,3 +50,6 @@ from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker phase2_tracker.toModify(GlobalMuonRefitter, TrackerRecHitBuilder = 'WithTrackAngle') # FIXME +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# FastSim doesn't use Runge Kute for propagation +fastSim.toModify(GlobalMuonRefitter, Propagator = "SmartPropagatorAny") diff --git a/RecoMuon/MuonIdentification/python/muons_cfi.py b/RecoMuon/MuonIdentification/python/muons_cfi.py index 2decc0fed6117..203ffe2159ddc 100644 --- a/RecoMuon/MuonIdentification/python/muons_cfi.py +++ b/RecoMuon/MuonIdentification/python/muons_cfi.py @@ -97,3 +97,7 @@ vertices = cms.InputTag("offlinePrimaryVertices") ) + +# not commisoned and not relevant in FastSim (?): +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(muons, FillCosmicsIdMap = False, FillSelectorMaps = False) diff --git a/RecoMuon/TrackingTools/python/MuonTrackLoader_cff.py b/RecoMuon/TrackingTools/python/MuonTrackLoader_cff.py index 3820e20deeadc..924f514f75c7c 100644 --- a/RecoMuon/TrackingTools/python/MuonTrackLoader_cff.py +++ b/RecoMuon/TrackingTools/python/MuonTrackLoader_cff.py @@ -18,6 +18,10 @@ Updator = cms.string('KFUpdator'), Propagator = cms.string('SmartPropagatorAnyRK') ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# FastSim doesn't use Runge Kute for propagation +fastSim.toModify(KFSmootherForMuonTrackLoader, + Propagator = "SmartPropagatorAny") KFSmootherForMuonTrackLoaderL3 = TrackingTools.TrackFitters.KFTrajectorySmoother_cfi.KFTrajectorySmoother.clone( errorRescaling = cms.double(10.0), diff --git a/RecoParticleFlow/PFTracking/python/trackerDrivenElectronSeeds_cfi.py b/RecoParticleFlow/PFTracking/python/trackerDrivenElectronSeeds_cfi.py index dad69dca4c113..d33606c7db923 100644 --- a/RecoParticleFlow/PFTracking/python/trackerDrivenElectronSeeds_cfi.py +++ b/RecoParticleFlow/PFTracking/python/trackerDrivenElectronSeeds_cfi.py @@ -56,3 +56,16 @@ from Configuration.Eras.Modifier_pp_on_XeXe_2017_cff import pp_on_XeXe_2017 pp_on_XeXe_2017.toModify(trackerDrivenElectronSeeds, MinPt = 5.0) + +# tracker driven electron seeds depend on the generalTracks trajectory collection +# However, in FastSim jobs, trajectories are only available for the 'before mixing' track collections +# Therefore we let the seeds depend on the 'before mixing' generalTracks collection +# TODO: investigate whether the dependence on trajectories can be avoided +from Configuration.Eras.Modifier_fastSim_cff import fastSim +trackerDrivenElectronSeedsTmp = trackerDrivenElectronSeeds.clone(TkColList = cms.VInputTag(cms.InputTag("generalTracksBeforeMixing"))) +import FastSimulation.Tracking.ElectronSeedTrackRefFix_cfi +_fastSim_trackerDrivenElectronSeeds = FastSimulation.Tracking.ElectronSeedTrackRefFix_cfi.fixedTrackerDrivenElectronSeeds.clone() +_fastSim_trackerDrivenElectronSeeds.seedCollection.setModuleLabel("trackerDrivenElectronSeedsTmp"), +_fastSim_trackerDrivenElectronSeeds.idCollection.setModuleLabel("trackerDrivenElectronSeedsTmp") +fastSim.toReplaceWith(trackerDrivenElectronSeeds,_fastSim_trackerDrivenElectronSeeds) + diff --git a/RecoTracker/Configuration/python/RecoTracker_cff.py b/RecoTracker/Configuration/python/RecoTracker_cff.py index d6077ef04ebe7..8f022e9cdc54e 100644 --- a/RecoTracker/Configuration/python/RecoTracker_cff.py +++ b/RecoTracker/Configuration/python/RecoTracker_cff.py @@ -30,3 +30,7 @@ from RecoJets.JetAssociationProducers.trackExtrapolator_cfi import * trackingGlobalReco = cms.Sequence(ckftracks*trackExtrapolator) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +_fastSim_trackingGlobalReco = cms.Sequence(trackExtrapolator) +fastSim.toReplaceWith(trackingGlobalReco,_fastSim_trackingGlobalReco) diff --git a/RecoTracker/FinalTrackSelectors/python/MergeTrackCollections_cff.py b/RecoTracker/FinalTrackSelectors/python/MergeTrackCollections_cff.py index a74e556167572..34261cd283764 100644 --- a/RecoTracker/FinalTrackSelectors/python/MergeTrackCollections_cff.py +++ b/RecoTracker/FinalTrackSelectors/python/MergeTrackCollections_cff.py @@ -50,6 +50,23 @@ duplicateTrackClassifier* generalTracks ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toReplaceWith(generalTracksSequence, + cms.Sequence( + duplicateTrackCandidates* + mergedDuplicateTracks* + duplicateTrackClassifier + ) +) +def _fastSimGeneralTracks(process): + from FastSimulation.Configuration.DigiAliases_cff import loadDigiAliasesWasCalled + if loadDigiAliasesWasCalled: + from FastSimulation.Configuration.DigiAliases_cff import generalTracks + process.generalTracks = generalTracks + return + from Configuration.StandardSequences.Digi_cff import generalTracks + process.generalTracks = generalTracks +modifyMergeTrackCollections_fastSimGeneralTracks = fastSim.makeProcessModifier( _fastSimGeneralTracks ) import RecoTracker.FinalTrackSelectors.trackListMerger_cfi conversionStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone( diff --git a/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py b/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py index 78189c32d7463..8c5b57d9fedee 100644 --- a/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/DetachedTripletStep_cff.py @@ -2,6 +2,11 @@ from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +#for fastsim +from Configuration.Eras.Modifier_fastSim_cff import fastSim +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet + + ############################################### # Low pT and detached tracks from pixel triplets ############################################### @@ -83,6 +88,15 @@ ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache') ), ) +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +_fastSim_detachedTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = detachedTripletStepSeedLayers.layerList.value(), + trackingRegions = "detachedTripletStepTrackingRegions", + hitMasks = cms.InputTag("detachedTripletStepMasks"), + seedFinderSelector = dict( pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(detachedTripletStepHitTriplets) ) +) +fastSim.toReplaceWith(detachedTripletStepSeeds,_fastSim_detachedTripletStepSeeds) + from RecoPixelVertexing.PixelTriplets.caHitTripletEDProducer_cfi import caHitTripletEDProducer as _caHitTripletEDProducer trackingPhase1.toModify(detachedTripletStepHitDoublets, layerPairs = [0,1]) # layer pairs (0,1), (1,2) @@ -181,6 +195,14 @@ detachedTripletStepTrackCandidates.TrajectoryCleaner = 'detachedTripletStepTrajectoryCleanerBySharedHits' trackingLowPU.toModify(detachedTripletStepTrajectoryCleanerBySharedHits, fractionShared = 0.19) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +_fastSim_detachedTripletStepTrackCandidates = FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("detachedTripletStepSeeds"), + MinNumberOfCrossedLayers = 3, + hitMasks = cms.InputTag("detachedTripletStepMasks") + ) +fastSim.toReplaceWith(detachedTripletStepTrackCandidates,_fastSim_detachedTripletStepTrackCandidates) + # TRACK FITTING import RecoTracker.TrackProducer.TrackProducer_cfi @@ -189,6 +211,7 @@ src = 'detachedTripletStepTrackCandidates', Fitter = cms.string('FlexibleKFFittingSmoother') ) +fastSim.toModify(detachedTripletStepTracks,TTRHBuilder = 'WithoutRefit') # TRACK SELECTION AND QUALITY FLAG SETTING. @@ -199,10 +222,13 @@ detachedTripletStepClassifier1.src = 'detachedTripletStepTracks' detachedTripletStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter3_13TeV' detachedTripletStepClassifier1.qualityCuts = [-0.5,0.0,0.5] +fastSim.toModify(detachedTripletStepClassifier1,vertices = "firstStepPrimaryVerticesBeforeMixing") + detachedTripletStepClassifier2 = TrackMVAClassifierPrompt.clone() detachedTripletStepClassifier2.src = 'detachedTripletStepTracks' detachedTripletStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV' detachedTripletStepClassifier2.qualityCuts = [-0.2,0.0,0.4] +fastSim.toModify(detachedTripletStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing") from RecoTracker.FinalTrackSelectors.ClassifierMerger_cfi import * detachedTripletStep = ClassifierMerger.clone() @@ -328,3 +354,16 @@ _DetachedTripletStep_LowPU = DetachedTripletStep.copyAndExclude([detachedTripletStepClassifier2]) _DetachedTripletStep_LowPU.replace(detachedTripletStepClassifier1, detachedTripletStepSelector) trackingLowPU.toReplaceWith(DetachedTripletStep, _DetachedTripletStep_LowPU) + +# fast tracking mask producer +from FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi import maskProducerFromClusterRemover +detachedTripletStepMasks = maskProducerFromClusterRemover(detachedTripletStepClusters) +fastSim.toReplaceWith(DetachedTripletStep, + cms.Sequence(detachedTripletStepMasks + +detachedTripletStepTrackingRegions + +detachedTripletStepSeeds + +detachedTripletStepTrackCandidates + +detachedTripletStepTracks + +detachedTripletStepClassifier1*detachedTripletStepClassifier2 + +detachedTripletStep + ) ) diff --git a/RecoTracker/IterativeTracking/python/ElectronSeeds_cff.py b/RecoTracker/IterativeTracking/python/ElectronSeeds_cff.py index 6dd60232ca283..215906cb2cd5f 100644 --- a/RecoTracker/IterativeTracking/python/ElectronSeeds_cff.py +++ b/RecoTracker/IterativeTracking/python/ElectronSeeds_cff.py @@ -261,6 +261,10 @@ 'tripletElectronSeeds' ]) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +from FastSimulation.Tracking.ElectronSeeds_cff import _newCombinedSeeds +fastSim.toReplaceWith(newCombinedSeeds,_newCombinedSeeds.clone()) + electronSeedsSeq = cms.Sequence( initialStepSeedClusterMask* pixelPairStepSeedClusterMask* mixedTripletStepSeedClusterMask* diff --git a/RecoTracker/IterativeTracking/python/InitialStep_cff.py b/RecoTracker/IterativeTracking/python/InitialStep_cff.py index be029f12cbe8c..2ff7eb2ca7317 100644 --- a/RecoTracker/IterativeTracking/python/InitialStep_cff.py +++ b/RecoTracker/IterativeTracking/python/InitialStep_cff.py @@ -1,5 +1,6 @@ import FWCore.ParameterSet.Config as cms from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 +from Configuration.Eras.Modifier_fastSim_cff import fastSim ### STEP 0 ### @@ -124,6 +125,15 @@ trackingPhase2PU140.toReplaceWith(initialStepSeeds, _initialStepSeedsConsecutiveHitsTripletOnly.clone( seedingHitSets = "initialStepHitQuadruplets" )) +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet +_fastSim_initialStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = initialStepSeedLayers.layerList.value(), + trackingRegions = "initialStepTrackingRegions", + seedFinderSelector = dict( pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(initialStepHitTriplets)) +) +_fastSim_initialStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none" +fastSim.toReplaceWith(initialStepSeeds,_fastSim_initialStepSeeds) # building @@ -220,6 +230,14 @@ useHitsSplitting = True ) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(initialStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("initialStepSeeds"), + MinNumberOfCrossedLayers = 3 + )) + + # fitting import RecoTracker.TrackProducer.TrackProducer_cfi initialStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone( @@ -227,16 +245,24 @@ AlgorithmName = cms.string('initialStep'), Fitter = cms.string('FlexibleKFFittingSmoother') ) - +fastSim.toModify(initialStepTracks, TTRHBuilder = 'WithoutRefit') #vertices from RecoVertex.PrimaryVertexProducer.OfflinePrimaryVertices_cfi import offlinePrimaryVertices as _offlinePrimaryVertices firstStepPrimaryVerticesUnsorted = _offlinePrimaryVertices.clone() firstStepPrimaryVerticesUnsorted.TrackLabel = cms.InputTag("initialStepTracks") firstStepPrimaryVerticesUnsorted.vertexCollections = [_offlinePrimaryVertices.vertexCollections[0].clone()] +# we need a replacment for the firstStepPrimaryVerticesUnsorted +# that includes tracker information of signal and pile up +# after mixing there is no such thing as initialStepTracks, +# so we replace the input collection for firstStepPrimaryVerticesUnsorted with generalTracks +firstStepPrimaryVerticesBeforeMixing = firstStepPrimaryVerticesUnsorted.clone() +fastSim.toModify(firstStepPrimaryVerticesUnsorted, TrackLabel = "generalTracks") + from RecoJets.JetProducers.TracksForJets_cff import trackRefsForJets initialStepTrackRefsForJets = trackRefsForJets.clone(src = cms.InputTag('initialStepTracks')) +fastSim.toModify(initialStepTrackRefsForJets, src = "generalTracks") from RecoJets.JetProducers.caloJetsForTrk_cff import * from CommonTools.RecoAlgos.sortedPrimaryVertices_cfi import sortedPrimaryVertices as _sortedPrimaryVertices firstStepPrimaryVertices = _sortedPrimaryVertices.clone( @@ -254,13 +280,16 @@ initialStepClassifier1.src = 'initialStepTracks' initialStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter0_13TeV' initialStepClassifier1.qualityCuts = [-0.9,-0.8,-0.7] +fastSim.toModify(initialStepClassifier1,vertices = "firstStepPrimaryVerticesBeforeMixing") from RecoTracker.IterativeTracking.DetachedTripletStep_cff import detachedTripletStepClassifier1 from RecoTracker.IterativeTracking.LowPtTripletStep_cff import lowPtTripletStep initialStepClassifier2 = detachedTripletStepClassifier1.clone() initialStepClassifier2.src = 'initialStepTracks' +fastSim.toModify(initialStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing") initialStepClassifier3 = lowPtTripletStep.clone() initialStepClassifier3.src = 'initialStepTracks' +fastSim.toModify(initialStepClassifier3,vertices = "firstStepPrimaryVerticesBeforeMixing") from RecoTracker.FinalTrackSelectors.ClassifierMerger_cfi import * initialStep = ClassifierMerger.clone() @@ -368,3 +397,14 @@ _InitialStep_trackingPhase2.replace(initialStepHitTriplets, initialStepHitQuadruplets) _InitialStep_trackingPhase2.replace(initialStep, initialStepSelector) trackingPhase2PU140.toReplaceWith(InitialStep, _InitialStep_trackingPhase2) + +from Configuration.Eras.Modifier_fastSim_cff import fastSim +_InitialStep_fastSim = cms.Sequence(initialStepTrackingRegions + +initialStepSeeds + +initialStepTrackCandidates + +initialStepTracks + +firstStepPrimaryVerticesBeforeMixing + +initialStepClassifier1*initialStepClassifier2*initialStepClassifier3 + +initialStep + ) +fastSim.toReplaceWith(InitialStep, _InitialStep_fastSim) diff --git a/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py b/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py index 3531a4aaeb8af..7d8771f64c9a6 100644 --- a/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py +++ b/RecoTracker/IterativeTracking/python/JetCoreRegionalStep_cff.py @@ -137,6 +137,17 @@ Fitter = cms.string('FlexibleKFFittingSmoother') ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +import RecoTracker.FinalTrackSelectors.trackListMerger_cfi +_fastSim_jetCoreRegionalStepTracks = RecoTracker.FinalTrackSelectors.trackListMerger_cfi.trackListMerger.clone( + TrackProducers = (), + hasSelector=cms.vint32(), + selectedTrackQuals = cms.VInputTag(), + copyExtras = True + ) +fastSim.toReplaceWith(jetCoreRegionalStepTracks,_fastSim_jetCoreRegionalStepTracks) + + # Final selection from RecoTracker.IterativeTracking.InitialStep_cff import initialStepClassifier1 #from RecoTracker.IterativeTracking.DetachedTripletStep_cff import detachedTripletStepClassifier1 @@ -183,6 +194,7 @@ mva = dict(GBRForestLabel = 'MVASelectorJetCoreRegionalStep_Phase1'), qualityCuts = [-0.2,0.0,0.4], )) +fastSim.toModify(jetCoreRegionalStep,vertices = "firstStepPrimaryVerticesBeforeMixing") # Final sequence JetCoreRegionalStep = cms.Sequence(cms.ignore(jetsForCoreTracking)* @@ -196,3 +208,6 @@ jetCoreRegionalStepTracks* # jetCoreRegionalStepClassifier1*jetCoreRegionalStepClassifier2* jetCoreRegionalStep) +fastSim.toReplaceWith(JetCoreRegionalStep, + cms.Sequence(jetCoreRegionalStepTracks* + jetCoreRegionalStep)) diff --git a/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py b/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py index 5c9b3b7bb8d93..6ce702b0ddee1 100644 --- a/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/LowPtTripletStep_cff.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim # NEW CLUSTERS (remove previously used clusters) lowPtTripletStepClusters = _cfg.clusterRemoverForIter("LowPtTripletStep") @@ -90,6 +91,16 @@ lowPtTripletStepSeeds = _seedCreatorFromRegionConsecutiveHitsEDProducer.clone( seedingHitSets = "lowPtTripletStepHitTriplets", ) +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +_fastSim_lowPtTripletStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = lowPtTripletStepSeedLayers.layerList.value(), + trackingRegions = "lowPtTripletStepTrackingRegions", + hitMasks = cms.InputTag("lowPtTripletStepMasks"), +) +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet +_fastSim_lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(lowPtTripletStepHitTriplets) +_fastSim_lowPtTripletStepSeeds.seedFinderSelector.pixelTripletGeneratorFactory.SeedComparitorPSet.ComponentName = "none" +fastSim.toReplaceWith(lowPtTripletStepSeeds,_fastSim_lowPtTripletStepSeeds) from RecoPixelVertexing.PixelTriplets.caHitTripletEDProducer_cfi import caHitTripletEDProducer as _caHitTripletEDProducer trackingPhase1.toModify(lowPtTripletStepHitDoublets, layerPairs = [0,1]) # layer pairs (0,1), (1,2) @@ -199,13 +210,23 @@ TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('lowPtTripletStepTrajectoryBuilder')), clustersToSkip = cms.InputTag('lowPtTripletStepClusters'), doSeedingRegionRebuilding = True, - useHitsSplitting = True + useHitsSplitting = True, + TrajectoryCleaner = 'lowPtTripletStepTrajectoryCleanerBySharedHits' ) + trackingPhase2PU140.toModify(lowPtTripletStepTrackCandidates, clustersToSkip = None, phase2clustersToSkip = cms.InputTag("lowPtTripletStepClusters") ) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(lowPtTripletStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("lowPtTripletStepSeeds"), + MinNumberOfCrossedLayers = 3, + hitMasks = cms.InputTag("lowPtTripletStepMasks")) +) + # TRACK FITTING import RecoTracker.TrackProducer.TrackProducer_cfi lowPtTripletStepTracks = RecoTracker.TrackProducer.TrackProducer_cfi.TrackProducer.clone( @@ -213,6 +234,7 @@ AlgorithmName = cms.string('lowPtTripletStep'), Fitter = cms.string('FlexibleKFFittingSmoother') ) +fastSim.toModify(lowPtTripletStepTracks, TTRHBuilder = 'WithoutRefit') from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits lowPtTripletStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone( @@ -220,7 +242,6 @@ fractionShared = cms.double(0.16), allowSharedFirstHit = cms.bool(True) ) -lowPtTripletStepTrackCandidates.TrajectoryCleaner = 'lowPtTripletStepTrajectoryCleanerBySharedHits' trackingLowPU.toModify(lowPtTripletStepTrajectoryCleanerBySharedHits, fractionShared = 0.19) trackingPhase2PU140.toModify(lowPtTripletStepTrajectoryCleanerBySharedHits, fractionShared = 0.09) @@ -239,6 +260,7 @@ mva = dict(GBRForestLabel = 'MVASelectorLowPtTripletStep_Phase1'), qualityCuts = [-0.4,0.0,0.3], )) +fastSim.toModify(lowPtTripletStep, vertices = "firstStepPrimaryVerticesBeforeMixing") # For LowPU and Phase2PU140 @@ -323,3 +345,14 @@ _LowPtTripletStep_LowPU_Phase2PU140.replace(lowPtTripletStep, lowPtTripletStepSelector) trackingLowPU.toReplaceWith(LowPtTripletStep, _LowPtTripletStep_LowPU_Phase2PU140) trackingPhase2PU140.toReplaceWith(LowPtTripletStep, _LowPtTripletStep_LowPU_Phase2PU140) +#fastsim +from FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi import maskProducerFromClusterRemover +lowPtTripletStepMasks = maskProducerFromClusterRemover(lowPtTripletStepClusters) +fastSim.toReplaceWith(LowPtTripletStep, + cms.Sequence(lowPtTripletStepMasks + +lowPtTripletStepTrackingRegions + +lowPtTripletStepSeeds + +lowPtTripletStepTrackCandidates + +lowPtTripletStepTracks + +lowPtTripletStep + )) diff --git a/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py b/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py index 5bba7bbed782f..bb939ec0304c1 100644 --- a/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py +++ b/RecoTracker/IterativeTracking/python/MixedTripletStep_cff.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim ############################################################### # Large impact parameter Tracking using mixed-triplet seeding # ############################################################### @@ -107,7 +108,7 @@ produceSeedingHitSets = True, ) from RecoTracker.TkSeedGenerator.seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer_cff import seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer as _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer -mixedTripletStepSeedsA = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone( +_mixedTripletStepSeedsACommon = _seedCreatorFromRegionConsecutiveHitsTripletOnlyEDProducer.clone( seedingHitSets = "mixedTripletStepHitTripletsA", SeedComparitorPSet = dict(# FIXME: is this defined in any cfi that could be imported instead of copy-paste? ComponentName = 'PixelClusterShapeSeedComparitor', @@ -118,9 +119,21 @@ ClusterShapeCacheSrc = cms.InputTag('siPixelClusterShapeCache') ), ) -trackingLowPU.toModify(mixedTripletStepSeedsA, +trackingLowPU.toModify(_mixedTripletStepSeedsACommon, SeedComparitorPSet = dict(ClusterShapeHitFilterName = 'ClusterShapeHitFilter') ) +mixedTripletStepSeedsA = _mixedTripletStepSeedsACommon.clone() + +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet +_fastSim_mixedTripletStepSeedsA = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = mixedTripletStepSeedLayersA.layerList.value(), + trackingRegions = "mixedTripletStepTrackingRegionsA", + hitMasks = cms.InputTag("mixedTripletStepMasks"), + seedFinderSelector = dict(pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(mixedTripletStepHitTripletsA)) +) +fastSim.toReplaceWith(mixedTripletStepSeedsA,_fastSim_mixedTripletStepSeedsA) + # SEEDING LAYERS mixedTripletStepSeedLayersB = cms.EDProducer("SeedingLayersEDProducer", @@ -160,7 +173,16 @@ trackingRegions = "mixedTripletStepTrackingRegionsB", ) mixedTripletStepHitTripletsB = mixedTripletStepHitTripletsA.clone(doublets = "mixedTripletStepHitDoubletsB") -mixedTripletStepSeedsB = mixedTripletStepSeedsA.clone(seedingHitSets = "mixedTripletStepHitTripletsB") +mixedTripletStepSeedsB = _mixedTripletStepSeedsACommon.clone(seedingHitSets = "mixedTripletStepHitTripletsB") +#fastsim +_fastSim_mixedTripletStepSeedsB = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = mixedTripletStepSeedLayersB.layerList.value(), + trackingRegions = "mixedTripletStepTrackingRegionsB", + hitMasks = cms.InputTag("mixedTripletStepMasks"), + seedFinderSelector = dict(pixelTripletGeneratorFactory = _hitSetProducerToFactoryPSet(mixedTripletStepHitTripletsB)) +) +fastSim.toReplaceWith(mixedTripletStepSeedsB,_fastSim_mixedTripletStepSeedsB) + import RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi mixedTripletStepSeeds = RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi.globalCombinedSeeds.clone() @@ -239,7 +261,16 @@ TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('mixedTripletStepTrajectoryBuilder')), doSeedingRegionRebuilding = True, - useHitsSplitting = True + useHitsSplitting = True, + TrajectoryCleaner = 'mixedTripletStepTrajectoryCleanerBySharedHits' +) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(mixedTripletStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("mixedTripletStepSeeds"), + MinNumberOfCrossedLayers = 3, + hitMasks = cms.InputTag("mixedTripletStepMasks"), + ) ) @@ -249,7 +280,6 @@ fractionShared = cms.double(0.11), allowSharedFirstHit = cms.bool(True) ) -mixedTripletStepTrackCandidates.TrajectoryCleaner = 'mixedTripletStepTrajectoryCleanerBySharedHits' trackingLowPU.toModify(mixedTripletStepTrajectoryCleanerBySharedHits, fractionShared = 0.19) @@ -260,6 +290,7 @@ src = 'mixedTripletStepTrackCandidates', Fitter = cms.string('FlexibleKFFittingSmoother') ) +fastSim.toModify(mixedTripletStepTracks, TTRHBuilder = 'WithoutRefit') # TRACK SELECTION AND QUALITY FLAG SETTING. from RecoTracker.FinalTrackSelectors.TrackMVAClassifierPrompt_cfi import * @@ -268,10 +299,13 @@ mixedTripletStepClassifier1.src = 'mixedTripletStepTracks' mixedTripletStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter4_13TeV' mixedTripletStepClassifier1.qualityCuts = [-0.5,0.0,0.5] +fastSim.toModify(mixedTripletStepClassifier1, vertices = "firstStepPrimaryVerticesBeforeMixing") + mixedTripletStepClassifier2 = TrackMVAClassifierPrompt.clone() mixedTripletStepClassifier2.src = 'mixedTripletStepTracks' mixedTripletStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV' mixedTripletStepClassifier2.qualityCuts = [-0.2,-0.2,-0.2] +fastSim.toModify(mixedTripletStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing") from RecoTracker.FinalTrackSelectors.ClassifierMerger_cfi import * mixedTripletStep = ClassifierMerger.clone() @@ -407,3 +441,22 @@ _MixedTripletStep_LowPU = MixedTripletStep.copyAndExclude([chargeCut2069Clusters, mixedTripletStepClassifier1]) _MixedTripletStep_LowPU.replace(mixedTripletStepClassifier2, mixedTripletStepSelector) trackingLowPU.toReplaceWith(MixedTripletStep, _MixedTripletStep_LowPU) + +#fastsim +import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi +mixedTripletStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(mixedTripletStepClusters) +mixedTripletStepMasks.oldHitRemovalInfo = cms.InputTag("pixelPairStepMasks") + +fastSim.toReplaceWith(MixedTripletStep, + cms.Sequence(mixedTripletStepMasks + +mixedTripletStepTrackingRegionsA + +mixedTripletStepSeedsA + +mixedTripletStepTrackingRegionsB + +mixedTripletStepSeedsB + +mixedTripletStepSeeds + +mixedTripletStepTrackCandidates + +mixedTripletStepTracks + +mixedTripletStepClassifier1*mixedTripletStepClassifier2 + +mixedTripletStep + ) +) diff --git a/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py b/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py index 926f3ea98b341..5c4d28427bd21 100644 --- a/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py +++ b/RecoTracker/IterativeTracking/python/PixelLessStep_cff.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim ########################################################################## # Large impact parameter tracking using TIB/TID/TEC stereo layer seeding # ########################################################################## @@ -174,7 +175,17 @@ ClusterShapeCacheSrc = cms.InputTag("siPixelClusterShapeCache") # not really needed here since FilterPixelHits=False ) ) - +#fastsim +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +_fastSim_pixelLessStepSeeds = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = pixelLessStepSeedLayers.layerList.value(), + trackingRegions = "pixelLessStepTrackingRegions", + hitMasks = cms.InputTag("pixelLessStepMasks"), +) +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet +_fastSim_pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(pixelLessStepHitTriplets) +_fastSim_pixelLessStepSeeds.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False +fastSim.toReplaceWith(pixelLessStepSeeds,_fastSim_pixelLessStepSeeds) # QUALITY CUTS DURING TRACK BUILDING import TrackingTools.TrajectoryFiltering.TrajectoryFilter_cff @@ -221,7 +232,16 @@ ### these two parameters are relevant only for the CachingSeedCleanerBySharedInput numHitsForSeedCleaner = cms.int32(50), #onlyPixelHitsForSeedCleaner = cms.bool(True), - TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('pixelLessStepTrajectoryBuilder')) + TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('pixelLessStepTrajectoryBuilder')), + TrajectoryCleaner = 'pixelLessStepTrajectoryCleanerBySharedHits' +) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(pixelLessStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("pixelLessStepSeeds"), + MinNumberOfCrossedLayers = 6, # ? + hitMasks = cms.InputTag("pixelLessStepMasks") + ) ) from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits @@ -230,7 +250,6 @@ fractionShared = cms.double(0.11), allowSharedFirstHit = cms.bool(True) ) -pixelLessStepTrackCandidates.TrajectoryCleaner = 'pixelLessStepTrajectoryCleanerBySharedHits' trackingLowPU.toModify(pixelLessStepTrajectoryCleanerBySharedHits, fractionShared = 0.19) @@ -241,7 +260,7 @@ AlgorithmName = cms.string('pixelLessStep'), Fitter = cms.string('FlexibleKFFittingSmoother') ) - +fastSim.toModify(pixelLessStepTracks, TTRHBuilder = 'WithoutRefit') # TRACK SELECTION AND QUALITY FLAG SETTING. @@ -251,10 +270,13 @@ pixelLessStepClassifier1.src = 'pixelLessStepTracks' pixelLessStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter5_13TeV' pixelLessStepClassifier1.qualityCuts = [-0.4,0.0,0.4] +fastSim.toModify(pixelLessStepClassifier1, vertices = "firstStepPrimaryVerticesBeforeMixing" ) + pixelLessStepClassifier2 = TrackMVAClassifierPrompt.clone() pixelLessStepClassifier2.src = 'pixelLessStepTracks' pixelLessStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV' pixelLessStepClassifier2.qualityCuts = [-0.0,0.0,0.0] +fastSim.toModify(pixelLessStepClassifier2, vertices = "firstStepPrimaryVerticesBeforeMixing" ) from RecoTracker.FinalTrackSelectors.ClassifierMerger_cfi import * pixelLessStep = ClassifierMerger.clone() @@ -334,3 +356,16 @@ _PixelLessStep_LowPU.replace(pixelLessStep, pixelLessStepSelector) trackingLowPU.toReplaceWith(PixelLessStep, _PixelLessStep_LowPU) +#fastsim +from FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi import maskProducerFromClusterRemover +pixelLessStepMasks = maskProducerFromClusterRemover(pixelLessStepClusters) +fastSim.toReplaceWith(PixelLessStep, + cms.Sequence(pixelLessStepMasks + +pixelLessStepTrackingRegions + +pixelLessStepSeeds + +pixelLessStepTrackCandidates + +pixelLessStepTracks + +pixelLessStepClassifier1*pixelLessStepClassifier2 + +pixelLessStep + ) +) diff --git a/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py b/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py index a09862a574cb5..2accfc8b2da1d 100644 --- a/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py +++ b/RecoTracker/IterativeTracking/python/PixelPairStep_cff.py @@ -1,6 +1,7 @@ import FWCore.ParameterSet.Config as cms from Configuration.Eras.Modifier_tracker_apv_vfp30_2016_cff import tracker_apv_vfp30_2016 as _tracker_apv_vfp30_2016 import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim # NEW CLUSTERS (remove previously used clusters) pixelPairStepClusters = _cfg.clusterRemoverForIter("PixelPairStep") @@ -79,6 +80,7 @@ trackingPhase1.toModify(pixelPairStepTrackingRegions, RegionPSet=_region_Phase1) trackingPhase1QuadProp.toModify(pixelPairStepTrackingRegions, RegionPSet=_region_Phase1) trackingPhase2PU140.toModify(pixelPairStepTrackingRegions, RegionPSet=_region_Phase1) +fastSim.toModify(pixelPairStepTrackingRegions, RegionPSet=dict(VertexCollection = "firstStepPrimaryVerticesBeforeMixing")) # SEEDS from RecoTracker.TkHitPairs.hitPairEDProducer_cfi import hitPairEDProducer as _hitPairEDProducer @@ -103,6 +105,17 @@ # Clone for the phase1 recovery mode pixelPairStepSeedsA = pixelPairStepSeeds.clone() +#have to do it after making pixelPairStepSeedsA since pixelPairStepSeedsB clones A +# and then modifies it +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +fastSim.toReplaceWith(pixelPairStepSeeds, + FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = pixelPairStepSeedLayers.layerList.value(), + trackingRegions = "pixelPairStepTrackingRegions", + hitMasks = cms.InputTag("pixelPairStepMasks"), + ) +) + # Recovery for L2L3 pixelPairStepSeedLayersB = pixelPairStepSeedLayers.clone( layerList = [ @@ -244,6 +257,14 @@ phase2clustersToSkip = cms.InputTag("pixelPairStepClusters"), TrajectoryCleaner = "pixelPairStepTrajectoryCleanerBySharedHits" ) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(pixelPairStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + src = cms.InputTag("pixelPairStepSeeds"), + MinNumberOfCrossedLayers = 2, # ? + hitMasks = cms.InputTag("pixelPairStepMasks") + ) +) from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits as _trajectoryCleanerBySharedHits pixelPairStepTrajectoryCleanerBySharedHits = _trajectoryCleanerBySharedHits.clone( @@ -260,6 +281,7 @@ src = 'pixelPairStepTrackCandidates', Fitter = cms.string('FlexibleKFFittingSmoother') ) +fastSim.toModify(pixelPairStepTracks, TTRHBuilder = 'WithoutRefit') # Final selection from RecoTracker.FinalTrackSelectors.TrackMVAClassifierPrompt_cfi import * @@ -270,6 +292,7 @@ trackingPhase1.toModify(pixelPairStep, mva=dict(GBRForestLabel = 'MVASelectorPixelPairStep_Phase1')) trackingPhase1QuadProp.toModify(pixelPairStep, mva=dict(GBRForestLabel = 'MVASelectorPixelPairStep_Phase1')) +fastSim.toModify(pixelPairStep, vertices = "firstStepPrimaryVerticesBeforeMixing") # For LowPU and Phase2PU140 import RecoTracker.IterativeTracking.LowPtTripletStep_cff @@ -360,3 +383,16 @@ pixelPairStepSeeds) trackingPhase1.toReplaceWith(PixelPairStep, _PixelPairStep_Phase1) trackingPhase1QuadProp.toReplaceWith(PixelPairStep, _PixelPairStep_Phase1) + +#fastSim +import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi +pixelPairStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(pixelPairStepClusters) +fastSim.toReplaceWith(PixelPairStep, + cms.Sequence(pixelPairStepMasks + +pixelPairStepTrackingRegions + +pixelPairStepSeeds + +pixelPairStepTrackCandidates + +pixelPairStepTracks + +pixelPairStep + ) +) diff --git a/RecoTracker/IterativeTracking/python/TobTecStep_cff.py b/RecoTracker/IterativeTracking/python/TobTecStep_cff.py index a26b845d1e411..45630d02c2426 100644 --- a/RecoTracker/IterativeTracking/python/TobTecStep_cff.py +++ b/RecoTracker/IterativeTracking/python/TobTecStep_cff.py @@ -1,5 +1,6 @@ import FWCore.ParameterSet.Config as cms import RecoTracker.IterativeTracking.iterativeTkConfig as _cfg +from Configuration.Eras.Modifier_fastSim_cff import fastSim ####################################################################### # Very large impact parameter tracking using TOB + TEC ring 5 seeding # @@ -97,7 +98,18 @@ seedingHitSets = "tobTecStepHitTripletsTripl", SeedComparitorPSet = _tobTecStepSeedComparitorPSet, ) - +#fastsim +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +_fastSim_tobTecStepSeedsTripl = FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = tobTecStepSeedLayersTripl.layerList.value(), + trackingRegions = "tobTecStepTrackingRegionsTripl", + hitMasks = cms.InputTag("tobTecStepMasks"), +) +from FastSimulation.Tracking.SeedingMigration import _hitSetProducerToFactoryPSet +_fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory = _hitSetProducerToFactoryPSet(tobTecStepHitTripletsTripl) +_fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.SeedComparitorPSet=cms.PSet( ComponentName = cms.string( "none" ) ) +_fastSim_tobTecStepSeedsTripl.seedFinderSelector.MultiHitGeneratorFactory.refitHits = False +fastSim.toReplaceWith(tobTecStepSeedsTripl,_fastSim_tobTecStepSeedsTripl) # PAIR SEEDING LAYERS tobTecStepSeedLayersPair = cms.EDProducer("SeedingLayersEDProducer", @@ -149,6 +161,16 @@ seedingHitSets = "tobTecStepHitDoubletsPair", SeedComparitorPSet = _tobTecStepSeedComparitorPSet, ) +#fastsim +import FastSimulation.Tracking.TrajectorySeedProducer_cfi +fastSim.toReplaceWith(tobTecStepSeedsPair, + FastSimulation.Tracking.TrajectorySeedProducer_cfi.trajectorySeedProducer.clone( + layerList = tobTecStepSeedLayersPair.layerList.value(), + trackingRegions = "tobTecStepTrackingRegionsPair", + hitMasks = cms.InputTag("tobTecStepMasks"), + ) +) + # Combined seeds import RecoTracker.TkSeedGenerator.GlobalCombinedSeeds_cfi @@ -233,8 +255,18 @@ TrajectoryBuilderPSet = cms.PSet(refToPSet_ = cms.string('tobTecStepTrajectoryBuilder')), doSeedingRegionRebuilding = True, useHitsSplitting = True, - cleanTrajectoryAfterInOut = True + cleanTrajectoryAfterInOut = True, + TrajectoryCleaner = 'tobTecStepTrajectoryCleanerBySharedHits' ) +import FastSimulation.Tracking.TrackCandidateProducer_cfi +fastSim.toReplaceWith(tobTecStepTrackCandidates, + FastSimulation.Tracking.TrackCandidateProducer_cfi.trackCandidateProducer.clone( + MinNumberOfCrossedLayers = 3, + src = cms.InputTag("tobTecStepSeeds"), + hitMasks = cms.InputTag("tobTecStepMasks") + ) + ) + from TrackingTools.TrajectoryCleaning.TrajectoryCleanerBySharedHits_cfi import trajectoryCleanerBySharedHits tobTecStepTrajectoryCleanerBySharedHits = trajectoryCleanerBySharedHits.clone( @@ -242,7 +274,6 @@ fractionShared = cms.double(0.09), allowSharedFirstHit = cms.bool(True) ) -tobTecStepTrackCandidates.TrajectoryCleaner = 'tobTecStepTrajectoryCleanerBySharedHits' trackingLowPU.toModify(tobTecStepTrajectoryCleanerBySharedHits, fractionShared = 0.19) # TRACK FITTING AND SMOOTHING OPTIONS @@ -302,7 +333,7 @@ #Fitter = 'tobTecStepFitterSmoother', Fitter = 'tobTecFlexibleKFFittingSmoother', ) - +fastSim.toModify(tobTecStepTracks, TTRHBuilder = 'WithoutRefit') # TRACK SELECTION AND QUALITY FLAG SETTING. @@ -312,10 +343,13 @@ tobTecStepClassifier1.src = 'tobTecStepTracks' tobTecStepClassifier1.mva.GBRForestLabel = 'MVASelectorIter6_13TeV' tobTecStepClassifier1.qualityCuts = [-0.6,-0.45,-0.3] +fastSim.toModify(tobTecStepClassifier1, vertices = "firstStepPrimaryVerticesBeforeMixing") + tobTecStepClassifier2 = TrackMVAClassifierPrompt.clone() tobTecStepClassifier2.src = 'tobTecStepTracks' tobTecStepClassifier2.mva.GBRForestLabel = 'MVASelectorIter0_13TeV' tobTecStepClassifier2.qualityCuts = [0.0,0.0,0.0] +fastSim.toModify(tobTecStepClassifier2,vertices = "firstStepPrimaryVerticesBeforeMixing") from RecoTracker.FinalTrackSelectors.ClassifierMerger_cfi import * tobTecStep = ClassifierMerger.clone() @@ -437,3 +471,19 @@ tobTecStepTracks* tobTecStep )) + +#fastsim +import FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi +tobTecStepMasks = FastSimulation.Tracking.FastTrackerRecHitMaskProducer_cfi.maskProducerFromClusterRemover(tobTecStepClusters) +fastSim.toReplaceWith(TobTecStep, + cms.Sequence(tobTecStepMasks + +tobTecStepTrackingRegionsTripl + +tobTecStepSeedsTripl + +tobTecStepTrackingRegionsPair + +tobTecStepSeedsPair + +tobTecStepSeeds + +tobTecStepTrackCandidates + +tobTecStepTracks + +tobTecStepClassifier1*tobTecStepClassifier2 +tobTecStep + ) +) diff --git a/RecoTracker/MeasurementDet/python/MeasurementTrackerEventProducer_cfi.py b/RecoTracker/MeasurementDet/python/MeasurementTrackerEventProducer_cfi.py index d54b0f9317523..6442eb1de605a 100644 --- a/RecoTracker/MeasurementDet/python/MeasurementTrackerEventProducer_cfi.py +++ b/RecoTracker/MeasurementDet/python/MeasurementTrackerEventProducer_cfi.py @@ -15,6 +15,16 @@ stripClusterProducer = '' ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(MeasurementTrackerEvent, + pixelClusterProducer = '', + stripClusterProducer = '', + inactivePixelDetectorLabels = cms.VInputTag(), + inactiveStripDetectorLabels = cms.VInputTag(), + switchOffPixelsIfEmpty = False +) + + MeasurementTrackerEventPreSplitting = MeasurementTrackerEvent.clone( pixelClusterProducer = 'siPixelClustersPreSplitting' ) diff --git a/TrackingTools/GsfTracking/python/GsfElectronGsfFit_cff.py b/TrackingTools/GsfTracking/python/GsfElectronGsfFit_cff.py index 523f2d55e22d0..6adbc883107eb 100644 --- a/TrackingTools/GsfTracking/python/GsfElectronGsfFit_cff.py +++ b/TrackingTools/GsfTracking/python/GsfElectronGsfFit_cff.py @@ -11,6 +11,13 @@ electronGsfTracks.TTRHBuilder = 'WithTrackAngle' electronGsfTracks.TrajectoryInEvent = False +# FastSim has no template fit on tracker hits +# replace the ECAL driven electron track candidates with the FastSim emulated ones +from Configuration.Eras.Modifier_fastSim_cff import fastSim +fastSim.toModify(electronGsfTracks, + src = "fastElectronCkfTrackCandidates", + TTRHBuilder = "WithoutRefit") + electronGsfTracksFromMultiCl = electronGsfTracks.clone( src = 'electronCkfTrackCandidatesFromMultiCl' ) diff --git a/TrackingTools/GsfTracking/python/GsfElectronTracking_cff.py b/TrackingTools/GsfTracking/python/GsfElectronTracking_cff.py index bd9458e4f74aa..756ceaa526988 100644 --- a/TrackingTools/GsfTracking/python/GsfElectronTracking_cff.py +++ b/TrackingTools/GsfTracking/python/GsfElectronTracking_cff.py @@ -13,12 +13,23 @@ electronSeeds, _electronSeedsFromMultiCl ) +from Configuration.Eras.Modifier_fastSim_cff import fastSim +_fastSim_electronSeeds = electronSeeds.copy() +_fastSim_electronSeeds.replace(trackerDrivenElectronSeeds,trackerDrivenElectronSeedsTmp+trackerDrivenElectronSeeds) +fastSim.toReplaceWith(electronSeeds, _fastSim_electronSeeds) +# replace the ECAL driven electron track candidates with the FastSim emulated ones +import FastSimulation.Tracking.electronCkfTrackCandidates_cff +fastElectronCkfTrackCandidates = FastSimulation.Tracking.electronCkfTrackCandidates_cff.electronCkfTrackCandidates.clone() + from TrackingTools.GsfTracking.CkfElectronCandidateMaker_cff import * from TrackingTools.GsfTracking.GsfElectronGsfFit_cff import * electronGsfTracking = cms.Sequence(electronSeeds*electronCkfTrackCandidates*electronGsfTracks) _electronGsfTracking = electronGsfTracking.copy() _electronGsfTracking += cms.Sequence(electronCkfTrackCandidatesFromMultiCl*electronGsfTracksFromMultiCl) +_fastSim_electronGsfTracking = electronGsfTracking.copy() +_fastSim_electronGsfTracking.replace(electronCkfTrackCandidates,fastElectronCkfTrackCandidates) +fastSim.toReplaceWith(electronGsfTracking,_fastSim_electronGsfTracking) from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal phase2_hgcal.toReplaceWith( diff --git a/TrackingTools/TrackRefitter/python/TracksToTrajectories_cff.py b/TrackingTools/TrackRefitter/python/TracksToTrajectories_cff.py index 476c599afdd1a..769f4ddfd664a 100644 --- a/TrackingTools/TrackRefitter/python/TracksToTrajectories_cff.py +++ b/TrackingTools/TrackRefitter/python/TracksToTrajectories_cff.py @@ -29,7 +29,6 @@ KFFitterForRefitOutsideIn.Estimator = cms.string('Chi2EstimatorForRefit') KFFitterForRefitOutsideIn.minHits = cms.int32(3) - KFSmootherForRefitOutsideIn = KFTrajectorySmoother.clone() KFSmootherForRefitOutsideIn.ComponentName = cms.string('KFSmootherForRefitOutsideIn') KFSmootherForRefitOutsideIn.Propagator = cms.string('SmartPropagatorAnyRKOpposite') @@ -38,7 +37,6 @@ KFSmootherForRefitOutsideIn.errorRescaling = cms.double(100.0) KFSmootherForRefitOutsideIn.minHits = cms.int32(3) - # KFFitterForRefitInsideOut = KFTrajectoryFitter.clone() KFFitterForRefitInsideOut.ComponentName = cms.string('KFFitterForRefitInsideOut') @@ -56,6 +54,11 @@ KFSmootherForRefitInsideOut.errorRescaling = cms.double(100.0) KFSmootherForRefitInsideOut.minHits = cms.int32(3) - - +from Configuration.Eras.Modifier_fastSim_cff import fastSim +# FastSim doesn't use Runge Kute for propagation +# the following propagators are not used in FastSim, but just to be sure... +fastSim.toModify(KFFitterForRefitOutsideIn, Propagator = 'SmartPropagatorAny') +fastSim.toModify(KFSmootherForRefitOutsideIn, Propagator = 'SmartPropagator') +fastSim.toModify(KFFitterForRefitInsideOut, Propagator = "SmartPropagatorAny") +fastSim.toModify(KFSmootherForRefitInsideOut, Propagator = "SmartPropagatorAny") diff --git a/Validation/RecoTrack/python/TrackValidation_cff.py b/Validation/RecoTrack/python/TrackValidation_cff.py index d73fdef100a03..2aeba0fad7520 100644 --- a/Validation/RecoTrack/python/TrackValidation_cff.py +++ b/Validation/RecoTrack/python/TrackValidation_cff.py @@ -194,26 +194,33 @@ def _findSeedingLayers(name): seedingLayersMerged = [] for seedName in seedProducers: seedProd = getattr(config, seedName) - if hasattr(seedProd, "OrderedHitsFactoryPSet"): + seedingLayersName = None + seedingLayers = None + if hasattr(seedProd, "OrderedHitsFactoryPSet"): # old seeding framework seedingLayersName = seedProd.OrderedHitsFactoryPSet.SeedingLayers.getModuleLabel() - elif hasattr(seedProd, "seedingHitSets"): + elif hasattr(seedProd, "seedingHitSets"): # new seeding framework seedingLayersName = _findSeedingLayers(seedProd.seedingHitSets.getModuleLabel()) + elif hasattr(seedProd, "layerList"): # FastSim: + seedingLayers = seedProd.layerList.value() else: continue - seedingLayers = getattr(config, seedingLayersName).layerList.value() + if seedingLayersName is not None: + seedingLayers = getattr(config, seedingLayersName).layerList.value() for layerSet in seedingLayers: if layerSet not in seedingLayersMerged: seedingLayersMerged.append(layerSet) + return seedingLayersMerged import RecoTracker.IterativeTracking.iterativeTk_cff as _iterativeTk_cff import RecoTracker.IterativeTracking.ElectronSeeds_cff as _ElectronSeeds_cff -for _eraName, _postfix, _era in _relevantEras: +for _eraName, _postfix, _era in _relevantErasAndFastSim: _stdLayers = _getSeedingLayers(locals()["_seedProducers"+_postfix], _iterativeTk_cff) _eleLayers = [] - for _layer in _getSeedingLayers(locals()["_electronSeedProducers"+_postfix], _ElectronSeeds_cff): - if _layer not in _stdLayers: - _eleLayers.append(_layer) + if "_electronSeedProducers"+_postfix in locals(): # doesn't exist for FastSim + for _layer in _getSeedingLayers(locals()["_electronSeedProducers"+_postfix], _ElectronSeeds_cff): + if _layer not in _stdLayers: + _eleLayers.append(_layer) locals()["_seedingLayerSets"+_postfix] = _stdLayers locals()["_seedingLayerSetsForElectrons"+_postfix] = _eleLayers