Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-02-05 23:51:49

0001 # This is the PreMixing config. Not only does it do a RawToDigi
0002 # conversion to the secondary input source, it also holds its own
0003 # instances of an EcalDigiProducer and an HcalDigitizer. It also
0004 # replicates the noise adding functions in the SiStripDigitizer.
0005 #
0006 # Adapted from DataMixingModule
0007 
0008 
0009 import FWCore.ParameterSet.Config as cms
0010 from SimCalorimetry.HcalSimProducers.hcalUnsuppressedDigis_cfi import hcalSimBlock
0011 from SimGeneral.MixingModule.SiStripSimParameters_cfi import SiStripSimBlock
0012 from SimGeneral.MixingModule.SiPixelSimParameters_cfi import SiPixelSimBlock
0013 from SimTracker.SiPhase2Digitizer.phase2TrackerDigitizer_cfi import phase2TrackerDigitizer, _premixStage1ModifyDict as _phase2TrackerPremixStage1ModifyDict
0014 from SimGeneral.MixingModule.ecalDigitizer_cfi import ecalDigitizer
0015 from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, hfnoseDigitizer
0016 from SimFastTiming.FastTimingCommon.mtdDigitizer_cfi import mtdDigitizer
0017 
0018 hcalSimBlock.HcalPreMixStage2 = cms.bool(True)
0019 
0020 mixData = cms.EDProducer("PreMixingModule",
0021     input = cms.SecSource("EmbeddedRootSource",
0022         producers = cms.VPSet(),
0023         nbPileupEvents = cms.PSet(
0024             averageNumber = cms.double(1.0)
0025         ),
0026         seed = cms.int32(1234567),
0027         type = cms.string('fixed'),
0028         sequential = cms.untracked.bool(False), # set to true for sequential reading of pileup
0029         fileNames = cms.untracked.vstring('file:DMPreProcess_RAW2DIGI.root'),
0030         consecutiveRejectionsLimit = cms.untracked.uint32(100) # should be sufficiently large to allow enough tails
0031     ),
0032     # Mixing Module parameters
0033     bunchspace = cms.int32(25),
0034     minBunch = cms.int32(0),
0035     maxBunch = cms.int32(0),
0036     mixProdStep1 = cms.bool(False),
0037     mixProdStep2 = cms.bool(False),
0038     # Optionally adjust the pileup distribution
0039     adjustPileupDistribution = cms.VPSet(),
0040     # Workers
0041     workers = cms.PSet(
0042         pileup = cms.PSet(
0043             PileupInfoInputTag = cms.InputTag("addPileupInfo"),
0044             BunchSpacingInputTag = cms.InputTag("addPileupInfo","bunchSpacing"),
0045             CFPlaybackInputTag = cms.InputTag("mix"),
0046             GenPUProtonsInputTags = cms.VInputTag("genPUProtons"),
0047         ),
0048         # Note: elements with "@MIXING" in the input tag are generated by
0049         pixel = cms.PSet(
0050             SiPixelSimBlock.clone(
0051                 # To preserve the behaviour of copy-pasted version of premix worker
0052                 # All these are done in stage1 (for both signal and pileup)
0053                 AddNoise = False,
0054                 MissCalibrate = False,
0055             ),
0056             workerType = cms.string("PreMixingSiPixelWorker"),
0057             pixeldigiCollectionSig = cms.InputTag("simSiPixelDigis"),
0058             pixeldigiCollectionPile = cms.InputTag("simSiPixelDigis"),
0059             pixeldigiExtraCollectionPile = cms.InputTag("simSiPixelDigis"),
0060             pixeldigiExtraLiteCollectionPile = cms.InputTag("simSiPixelDigis"),
0061             PixelDigiCollectionDM = cms.string('siPixelDigisDM'),                   
0062         ),
0063         strip = cms.PSet(
0064             SiStripSimBlock,
0065             workerType = cms.string("PreMixingSiStripWorker"),
0066 
0067             SistripLabelSig = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
0068             SiStripPileInputTag = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
0069             # Dead APV Vector
0070             SistripAPVPileInputTag = cms.InputTag("mix","AffectedAPVList"),
0071             SistripAPVLabelSig = cms.InputTag("mix","AffectedAPVList"),
0072             # output
0073             SiStripDigiCollectionDM = cms.string('siStripDigisDM'),
0074             SiStripAPVListDM = cms.string('SiStripAPVList'),
0075         ),
0076         ecal = cms.PSet(
0077             ecalDigitizer.clone(accumulatorType = None, makeDigiSimLinks=None),
0078             workerType = cms.string("PreMixingEcalWorker"),
0079 
0080             EBdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
0081             EEdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
0082             ESdigiProducerSig = cms.InputTag("simEcalPreshowerDigis"),
0083 
0084             EBPileInputTag = cms.InputTag("simEcalDigis", "ebDigis"),
0085             EEPileInputTag = cms.InputTag("simEcalDigis", "eeDigis"),
0086             ESPileInputTag = cms.InputTag("simEcalUnsuppressedDigis"),
0087 
0088             EBDigiCollectionDM   = cms.string(''),
0089             EEDigiCollectionDM   = cms.string(''),
0090             ESDigiCollectionDM   = cms.string(''),
0091         ),
0092         hcal = cms.PSet(
0093             hcalSimBlock,
0094             workerType = cms.string("PreMixingHcalWorker"),
0095 
0096             HBHEdigiCollectionSig  = cms.InputTag("simHcalUnsuppressedDigis"),
0097             HOdigiCollectionSig    = cms.InputTag("simHcalUnsuppressedDigis"),
0098             HFdigiCollectionSig    = cms.InputTag("simHcalUnsuppressedDigis"),
0099             QIE10digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
0100             QIE11digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
0101             ZDCdigiCollectionSig   = cms.InputTag("simHcalUnsuppressedDigis"),
0102 
0103             HBHEPileInputTag = cms.InputTag("simHcalDigis"),
0104             HOPileInputTag   = cms.InputTag("simHcalDigis"),
0105             HFPileInputTag   = cms.InputTag("simHcalDigis"),
0106             QIE10PileInputTag   = cms.InputTag("simHcalDigis", "HFQIE10DigiCollection"),
0107             QIE11PileInputTag   = cms.InputTag("simHcalDigis", "HBHEQIE11DigiCollection"),
0108             ZDCPileInputTag  = cms.InputTag(""),
0109 
0110             HBHEDigiCollectionDM = cms.string(''),
0111             HODigiCollectionDM   = cms.string(''),
0112             HFDigiCollectionDM   = cms.string(''),
0113             QIE10DigiCollectionDM   = cms.string(''),
0114             QIE11DigiCollectionDM   = cms.string(''),
0115             ZDCDigiCollectionDM  = cms.string('')
0116         ),
0117         dt = cms.PSet(
0118             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0119             labelSig = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
0120             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
0121             collectionDM = cms.string("g4SimHitsMuonDTHits"),
0122         ),
0123         rpc = cms.PSet(
0124             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0125             labelSig = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
0126             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
0127             collectionDM = cms.string("g4SimHitsMuonRPCHits"),
0128         ),
0129         csc = cms.PSet(
0130             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0131             labelSig = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
0132             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
0133             collectionDM = cms.string("g4SimHitsMuonCSCHits"),
0134         ),
0135         trackingTruth = cms.PSet(
0136             workerType = cms.string("PreMixingTrackingParticleWorker"),
0137             labelSig = cms.InputTag("mix","MergedTrackTruth"),
0138             pileInputTag = cms.InputTag("mix","MergedTrackTruth"),
0139             collectionDM = cms.string('MergedTrackTruth'),
0140         ),
0141         pixelSimLink = cms.PSet(
0142             workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
0143             labelSig = cms.InputTag("simSiPixelDigis"),
0144             pileInputTag = cms.InputTag("simSiPixelDigis"),
0145             collectionDM = cms.string('PixelDigiSimLink'),
0146         ),
0147         stripSimLink = cms.PSet(
0148             workerType = cms.string("PreMixingStripDigiSimLinkWorker"),
0149             labelSig = cms.InputTag("simSiStripDigis"),
0150             pileInputTag = cms.InputTag("simSiStripDigis"),
0151             collectionDM = cms.string('StripDigiSimLink'),
0152         ),
0153     ),
0154 )
0155 
0156 # pixel run-dependent
0157 from Configuration.ProcessModifiers.runDependentForPixel_cff import runDependentForPixel
0158 from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2
0159 (runDependentForPixel & premix_stage2).toModify(mixData.workers.pixel,
0160          UseReweighting=False,
0161          applyLateReweighting=True,
0162          usePixelExtraLiteFormat = False,
0163          store_SimHitEntryExitPoints=False,
0164          store_SimHitEntryExitPointsLite = False
0165 )
0166 
0167 from Configuration.ProcessModifiers.runDependentForPixelVal_cff import runDependentForPixelVal
0168 (runDependentForPixelVal & premix_stage2).toModify(mixData.workers.pixel,
0169          UseReweighting=False,
0170          applyLateReweighting=True,
0171          usePixelExtraLiteFormat = True,
0172          store_SimHitEntryExitPoints=False,
0173          store_SimHitEntryExitPointsLite = False
0174 )
0175 
0176 from Configuration.Eras.Modifier_fastSim_cff import fastSim
0177 from FastSimulation.Tracking.recoTrackAccumulator_cfi import recoTrackAccumulator as _recoTrackAccumulator
0178 fastSim.toModify(mixData,
0179     # from signal: mix tracks not strip or pixel digis
0180     workers = dict(
0181         pixel = None,
0182         strip = None,
0183         pixelSimLink = None,
0184         stripSimLink = None,
0185         tracks = cms.PSet(
0186             workerType = cms.string("PreMixingDigiAccumulatorWorker"),
0187             accumulator = _recoTrackAccumulator.clone(
0188                 pileUpTracks = "mix:generalTracks"
0189             )
0190         ),
0191         dt = dict(
0192             labelSig = "mix:MuonSimHitsMuonDTHits",
0193             pileInputTag = "mix:MuonSimHitsMuonDTHits",
0194             collectionDM = "MuonSimHitsMuonDTHits",
0195         ),
0196         rpc = dict(
0197             labelSig = "mix:MuonSimHitsMuonRPCHits",
0198             pileInputTag = "mix:MuonSimHitsMuonRPCHits",
0199             collectionDM = "MuonSimHitsMuonRPCHits",
0200         ),
0201         csc = dict(
0202             labelSig = "mix:MuonSimHitsMuonCSCHits",
0203             pileInputTag = "mix:MuonSimHitsMuonCSCHits",
0204             collectionDM = "MuonSimHitsMuonCSCHits",
0205         ),
0206     ),
0207 )
0208 
0209 from Configuration.Eras.Modifier_run2_GEM_2017_cff import run2_GEM_2017
0210 from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
0211 (run2_GEM_2017 | run3_GEM).toModify(
0212     mixData,
0213     workers = dict(
0214         gem = cms.PSet(
0215             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0216             labelSig = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
0217             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
0218             collectionDM = cms.string("g4SimHitsMuonGEMHits"),
0219         ),
0220     )
0221 )
0222 
0223 from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
0224 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
0225 from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
0226 from Configuration.Eras.Modifier_phase2_hcal_cff import phase2_hcal
0227 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0228 from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose
0229 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
0230 from Configuration.Eras.Modifier_phase2_GE0_cff import phase2_GE0
0231 phase2_common.toModify(mixData, input = dict(producers = [])) # we use digis directly, no need for raw2digi producers
0232 
0233 # Tracker
0234 phase2_tracker.toModify(mixData,
0235     workers = dict(
0236         # Disable SiStrip
0237         strip = None,
0238         stripSimLink = None,
0239         # Replace pixel with Phase2 tracker
0240         pixel = cms.PSet(
0241             phase2TrackerDigitizer,
0242             workerType = cms.string("PreMixingPhase2TrackerWorker"),
0243 
0244             pixelLabelSig = cms.InputTag("simSiPixelDigis:Pixel"),
0245             pixelPileInputTag = cms.InputTag("simSiPixelDigis:Pixel"),
0246             trackerLabelSig = cms.InputTag("simSiPixelDigis:Tracker"),
0247             trackerPileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
0248             pixelPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PixelDigitizerAlgorithm.ElectronPerAdc.value()),
0249             trackerPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PSPDigitizerAlgorithm.ElectronPerAdc.value())
0250         ),
0251         pixelSimLink = dict(
0252             labelSig = "simSiPixelDigis:Pixel",
0253             pileInputTag = "simSiPixelDigis:Pixel",
0254         ),
0255         phase2OTSimLink = cms.PSet(
0256             workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
0257             labelSig = cms.InputTag("simSiPixelDigis:Tracker"),
0258             pileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
0259             collectionDM = cms.string("Phase2OTDigiSimLink"),
0260         ),
0261     ),
0262 )
0263 
0264 # MTD
0265 phase2_timing_layer.toModify(mixData,
0266     workers = dict(
0267         mtdBarrel = cms.PSet(
0268             mtdDigitizer.barrelDigitizer,
0269             workerType = cms.string("PreMixingMTDWorker"),
0270             digiTagSig = cms.InputTag("mix", "FTLBarrel"),
0271             pileInputTag = cms.InputTag("mix", "FTLBarrel"),
0272         ),
0273         mtdEndcap = cms.PSet(
0274             mtdDigitizer.endcapDigitizer,
0275             workerType = cms.string("PreMixingMTDWorker"),
0276             digiTagSig = cms.InputTag("mix", "FTLEndcap"),
0277             pileInputTag = cms.InputTag("mix", "FTLEndcap"),
0278         ),
0279         mtdTruth = cms.PSet(
0280             workerType = cms.string("PreMixingMtdTruthWorker"),
0281             labelSig = cms.InputTag("mix", "MergedMtdTruthLC"),
0282             pileInputTag = cms.InputTag("mix", "MergedMtdTruthLC"),
0283             collectionDM = cms.string("MergedMtdTruthLC"),
0284         )
0285     )
0286 )
0287 # ECAL
0288 phase2_common.toModify (mixData, workers=dict(ecal=dict(doES=False)))
0289 phase2_hgcal.toModify(mixData, workers=dict(ecal=dict(doEE=False)))
0290 
0291 # HGCAL
0292 phase2_hgcal.toModify(mixData,
0293     workers = dict(
0294         hgcee = cms.PSet(
0295             hgceeDigitizer,
0296             workerType = cms.string("PreMixingHGCalWorker"),
0297             digiTagSig = cms.InputTag("mix", "HGCDigisEE"),
0298             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "EE"),
0299         ),
0300         hgchefront = cms.PSet(
0301             hgchefrontDigitizer,
0302             workerType = cms.string("PreMixingHGCalWorker"),
0303             digiTagSig = cms.InputTag("mix", "HGCDigisHEfront"),
0304             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEfront"),
0305         ),
0306         hgcheback = cms.PSet(
0307             hgchebackDigitizer,
0308             workerType = cms.string("PreMixingHGCalWorker"),
0309             digiTagSig = cms.InputTag("mix", "HGCDigisHEback"),
0310             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEback"),
0311         ),
0312         caloTruth = cms.PSet(
0313             workerType = cms.string("PreMixingCaloParticleWorker"),
0314             labelSig = cms.InputTag("mix", "MergedCaloTruth"),
0315             pileInputTag = cms.InputTag("mix", "MergedCaloTruth"),
0316             collectionDM = cms.string("MergedCaloTruth"),
0317         )
0318     )
0319 )
0320 
0321 phase2_hfnose.toModify(mixData,
0322     workers = dict(
0323         hfnose = cms.PSet(
0324             hfnoseDigitizer,
0325             workerType = cms.string("PreMixingHGCalWorker"),
0326             digiTagSig = cms.InputTag("mix", "HFNoseDigis"),
0327             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HFNose"),
0328         ),
0329     )
0330 )
0331 
0332 # Muon
0333 (phase2_muon & ~phase2_GE0).toModify(mixData,
0334     workers = dict(
0335         me0 = cms.PSet(
0336             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0337             labelSig = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
0338             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
0339             collectionDM = cms.string("g4SimHitsMuonME0Hits"),
0340         ),
0341     )
0342 )
0343 
0344 # Run-dependent MC
0345 from Configuration.ProcessModifiers.runDependent_cff import runDependent
0346 runDependent.toModify(mixData.workers.ecal, timeDependent=True)