theDigitizersValid = cms.PSet(theDigitizers) theDigitizers.mergedtruth.select.signalOnlyTP = True phase2_hgcal.toModify( theDigitizersValid, calotruth = cms.PSet( caloParticles ) ) # Doesn't HGCal need these also without validation? (premix_stage2 & phase2_hgcal).toModify(theDigitizersValid, calotruth = dict(premixStage1 = True)) phase2_timing.toModify( theDigitizersValid.mergedtruth, createInitialVertexCollection = cms.bool(True) ) from Configuration.ProcessModifiers.premix_stage1_cff import premix_stage1 def _customizePremixStage1(mod): # To avoid this if-else structure we'd need an "_InverseModifier" # to customize pixel/strip for everything else than fastSim. if hasattr(mod, "pixel"): if hasattr(mod.pixel, "AlgorithmCommon"): mod.pixel.AlgorithmCommon.makeDigiSimLinks = True else: mod.pixel.makeDigiSimLinks = True if hasattr(mod, "strip"): mod.strip.makeDigiSimLinks = True mod.mergedtruth.select.signalOnlyTP = False premix_stage1.toModify(theDigitizersValid, _customizePremixStage1) def _loadPremixStage2Aliases(process): process.load("SimGeneral.MixingModule.aliases_PreMix_cfi") modifyDigitizers_loadPremixStage2Aliases = premix_stage2.makeProcessModifier(_loadPremixStage2Aliases)
simMuonDTDigis.onlyMuHits = True simMuonRPCDigis.Noise = False # remove unnecessary modules from 'pdigi' sequence - run after DataMixing # standard mixing module now makes unsuppressed digis for calorimeter pdigi.remove(simEcalTriggerPrimitiveDigis) pdigi.remove(simEcalDigis) # does zero suppression pdigi.remove(simEcalPreshowerDigis) # does zero suppression pdigi.remove(simHcalDigis) pdigi.remove(simHcalTTPDigis) from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2 # for PreMixing, to first approximation, allow noise in Muon system premix_stage2.toReplaceWith(simMuonCSCDigis, _simMuonCSCDigis_orig) premix_stage2.toReplaceWith(simMuonDTDigis , _simMuonDTDigis_orig ) premix_stage2.toReplaceWith(simMuonRPCDigis, _simMuonRPCDigis_orig) # premixing stage2 runs addPileupInfo after DataMixer (configured in DataMixerPreMix_cff) premix_stage2.toReplaceWith(pdigi, pdigi.copyAndExclude([addPileupInfo, genPUProtons])) # genPUProtons, on the other hand, is an EDAlias. In principle it is # already loaded with digitizers_cfi, but in practice that gets # overwritten by the EDProducer by loading this file. So we hack # around by adding a ProcessModifier with overwrites it back to # EDAlias (because we can't toReplaceWith() an EDProducer with an # EDAlias). def _loadPremixStage2Alias(process): import SimGeneral.MixingModule.aliases_PreMix_cfi as _aliases process.genPUProtons = _aliases.genPUProtons modifyDigiDM_loadPremixStage2Alias = premix_stage2.makeProcessModifier(_loadPremixStage2Alias)
calotruth=dict(premixStage1=True)) phase2_timing.toModify(theDigitizersValid.mergedtruth, createInitialVertexCollection=cms.bool(True)) from Configuration.ProcessModifiers.premix_stage1_cff import premix_stage1 def _customizePremixStage1(mod): # To avoid this if-else structure we'd need an "_InverseModifier" # to customize pixel/strip for everything else than fastSim. if hasattr(mod, "pixel"): if hasattr(mod.pixel, "AlgorithmCommon"): mod.pixel.AlgorithmCommon.makeDigiSimLinks = True else: mod.pixel.makeDigiSimLinks = True if hasattr(mod, "strip"): mod.strip.makeDigiSimLinks = True mod.mergedtruth.select.signalOnlyTP = False premix_stage1.toModify(theDigitizersValid, _customizePremixStage1) def _loadPremixStage2Aliases(process): process.load("SimGeneral.MixingModule.aliases_PreMix_cfi") modifyDigitizers_loadPremixStage2Aliases = premix_stage2.makeProcessModifier( _loadPremixStage2Aliases)
pdigi.remove(simEcalTriggerPrimitiveDigis) pdigi.remove(simEcalDigis) # does zero suppression pdigi.remove(simEcalPreshowerDigis) # does zero suppression pdigi.remove(simHcalDigis) pdigi.remove(simHcalTTPDigis) from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2 # for PreMixing, to first approximation, allow noise in Muon system premix_stage2.toReplaceWith(simMuonCSCDigis, _simMuonCSCDigis_orig) premix_stage2.toReplaceWith(simMuonDTDigis, _simMuonDTDigis_orig) premix_stage2.toReplaceWith(simMuonRPCDigis, _simMuonRPCDigis_orig) # premixing stage2 runs addPileupInfo after DataMixer (configured in DataMixerPreMix_cff) premix_stage2.toReplaceWith( pdigi, pdigi.copyAndExclude([addPileupInfo, genPUProtons])) # genPUProtons, on the other hand, is an EDAlias. In principle it is # already loaded with digitizers_cfi, but in practice that gets # overwritten by the EDProducer by loading this file. So we hack # around by adding a ProcessModifier with overwrites it back to # EDAlias (because we can't toReplaceWith() an EDProducer with an # EDAlias). def _loadPremixStage2Alias(process): import SimGeneral.MixingModule.aliases_PreMix_cfi as _aliases process.genPUProtons = _aliases.genPUProtons modifyDigiDM_loadPremixStage2Alias = premix_stage2.makeProcessModifier( _loadPremixStage2Alias)