Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-05-20 22:40:12

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             PixelDigiCollectionDM = cms.string('siPixelDigisDM'),                   
0061         ),
0062         strip = cms.PSet(
0063             SiStripSimBlock,
0064             workerType = cms.string("PreMixingSiStripWorker"),
0065 
0066             SistripLabelSig = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
0067             SiStripPileInputTag = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
0068             # Dead APV Vector
0069             SistripAPVPileInputTag = cms.InputTag("mix","AffectedAPVList"),
0070             SistripAPVLabelSig = cms.InputTag("mix","AffectedAPVList"),
0071             # output
0072             SiStripDigiCollectionDM = cms.string('siStripDigisDM'),
0073             SiStripAPVListDM = cms.string('SiStripAPVList'),
0074         ),
0075         ecal = cms.PSet(
0076             ecalDigitizer.clone(accumulatorType = None, makeDigiSimLinks=None),
0077             workerType = cms.string("PreMixingEcalWorker"),
0078 
0079             EBdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
0080             EEdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
0081             ESdigiProducerSig = cms.InputTag("simEcalPreshowerDigis"),
0082 
0083             EBPileInputTag = cms.InputTag("simEcalDigis", "ebDigis"),
0084             EEPileInputTag = cms.InputTag("simEcalDigis", "eeDigis"),
0085             ESPileInputTag = cms.InputTag("simEcalUnsuppressedDigis"),
0086 
0087             EBDigiCollectionDM   = cms.string(''),
0088             EEDigiCollectionDM   = cms.string(''),
0089             ESDigiCollectionDM   = cms.string(''),
0090         ),
0091         hcal = cms.PSet(
0092             hcalSimBlock,
0093             workerType = cms.string("PreMixingHcalWorker"),
0094 
0095             HBHEdigiCollectionSig  = cms.InputTag("simHcalUnsuppressedDigis"),
0096             HOdigiCollectionSig    = cms.InputTag("simHcalUnsuppressedDigis"),
0097             HFdigiCollectionSig    = cms.InputTag("simHcalUnsuppressedDigis"),
0098             QIE10digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
0099             QIE11digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
0100             ZDCdigiCollectionSig   = cms.InputTag("simHcalUnsuppressedDigis"),
0101 
0102             HBHEPileInputTag = cms.InputTag("simHcalDigis"),
0103             HOPileInputTag   = cms.InputTag("simHcalDigis"),
0104             HFPileInputTag   = cms.InputTag("simHcalDigis"),
0105             QIE10PileInputTag   = cms.InputTag("simHcalDigis", "HFQIE10DigiCollection"),
0106             QIE11PileInputTag   = cms.InputTag("simHcalDigis", "HBHEQIE11DigiCollection"),
0107             ZDCPileInputTag  = cms.InputTag(""),
0108 
0109             HBHEDigiCollectionDM = cms.string(''),
0110             HODigiCollectionDM   = cms.string(''),
0111             HFDigiCollectionDM   = cms.string(''),
0112             QIE10DigiCollectionDM   = cms.string(''),
0113             QIE11DigiCollectionDM   = cms.string(''),
0114             ZDCDigiCollectionDM  = cms.string('')
0115         ),
0116         dt = cms.PSet(
0117             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0118             labelSig = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
0119             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
0120             collectionDM = cms.string("g4SimHitsMuonDTHits"),
0121         ),
0122         rpc = cms.PSet(
0123             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0124             labelSig = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
0125             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
0126             collectionDM = cms.string("g4SimHitsMuonRPCHits"),
0127         ),
0128         csc = cms.PSet(
0129             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0130             labelSig = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
0131             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
0132             collectionDM = cms.string("g4SimHitsMuonCSCHits"),
0133         ),
0134         trackingTruth = cms.PSet(
0135             workerType = cms.string("PreMixingTrackingParticleWorker"),
0136             labelSig = cms.InputTag("mix","MergedTrackTruth"),
0137             pileInputTag = cms.InputTag("mix","MergedTrackTruth"),
0138             collectionDM = cms.string('MergedTrackTruth'),
0139         ),
0140         pixelSimLink = cms.PSet(
0141             workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
0142             labelSig = cms.InputTag("simSiPixelDigis"),
0143             pileInputTag = cms.InputTag("simSiPixelDigis"),
0144             collectionDM = cms.string('PixelDigiSimLink'),
0145         ),
0146         stripSimLink = cms.PSet(
0147             workerType = cms.string("PreMixingStripDigiSimLinkWorker"),
0148             labelSig = cms.InputTag("simSiStripDigis"),
0149             pileInputTag = cms.InputTag("simSiStripDigis"),
0150             collectionDM = cms.string('StripDigiSimLink'),
0151         ),
0152     ),
0153 )
0154 
0155 # pixel run-dependent
0156 from Configuration.ProcessModifiers.runDependentForPixel_cff import runDependentForPixel
0157 from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2
0158 (runDependentForPixel & premix_stage2).toModify(mixData.workers.pixel,
0159          UseReweighting=False,
0160          applyLateReweighting=True,
0161          store_SimHitEntryExitPoints=False
0162 )
0163 
0164 from Configuration.Eras.Modifier_fastSim_cff import fastSim
0165 from FastSimulation.Tracking.recoTrackAccumulator_cfi import recoTrackAccumulator as _recoTrackAccumulator
0166 fastSim.toModify(mixData,
0167     # from signal: mix tracks not strip or pixel digis
0168     workers = dict(
0169         pixel = None,
0170         strip = None,
0171         pixelSimLink = None,
0172         stripSimLink = None,
0173         tracks = cms.PSet(
0174             workerType = cms.string("PreMixingDigiAccumulatorWorker"),
0175             accumulator = _recoTrackAccumulator.clone(
0176                 pileUpTracks = "mix:generalTracks"
0177             )
0178         ),
0179         dt = dict(
0180             labelSig = "mix:MuonSimHitsMuonDTHits",
0181             pileInputTag = "mix:MuonSimHitsMuonDTHits",
0182             collectionDM = "MuonSimHitsMuonDTHits",
0183         ),
0184         rpc = dict(
0185             labelSig = "mix:MuonSimHitsMuonRPCHits",
0186             pileInputTag = "mix:MuonSimHitsMuonRPCHits",
0187             collectionDM = "MuonSimHitsMuonRPCHits",
0188         ),
0189         csc = dict(
0190             labelSig = "mix:MuonSimHitsMuonCSCHits",
0191             pileInputTag = "mix:MuonSimHitsMuonCSCHits",
0192             collectionDM = "MuonSimHitsMuonCSCHits",
0193         ),
0194     ),
0195 )
0196 
0197 from Configuration.Eras.Modifier_run2_GEM_2017_cff import run2_GEM_2017
0198 from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
0199 (run2_GEM_2017 | run3_GEM).toModify(
0200     mixData,
0201     workers = dict(
0202         gem = cms.PSet(
0203             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0204             labelSig = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
0205             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
0206             collectionDM = cms.string("g4SimHitsMuonGEMHits"),
0207         ),
0208     )
0209 )
0210 
0211 from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
0212 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
0213 from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
0214 from Configuration.Eras.Modifier_phase2_hcal_cff import phase2_hcal
0215 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
0216 from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose
0217 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
0218 from Configuration.Eras.Modifier_phase2_GE0_cff import phase2_GE0
0219 phase2_common.toModify(mixData, input = dict(producers = [])) # we use digis directly, no need for raw2digi producers
0220 
0221 # Tracker
0222 phase2_tracker.toModify(mixData,
0223     workers = dict(
0224         # Disable SiStrip
0225         strip = None,
0226         stripSimLink = None,
0227         # Replace pixel with Phase2 tracker
0228         pixel = cms.PSet(
0229             phase2TrackerDigitizer,
0230             workerType = cms.string("PreMixingPhase2TrackerWorker"),
0231 
0232             pixelLabelSig = cms.InputTag("simSiPixelDigis:Pixel"),
0233             pixelPileInputTag = cms.InputTag("simSiPixelDigis:Pixel"),
0234             trackerLabelSig = cms.InputTag("simSiPixelDigis:Tracker"),
0235             trackerPileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
0236             pixelPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PixelDigitizerAlgorithm.ElectronPerAdc.value()),
0237             trackerPmxStage1ElectronPerAdc = cms.double(phase2TrackerDigitizer.PSPDigitizerAlgorithm.ElectronPerAdc.value())
0238         ),
0239         pixelSimLink = dict(
0240             labelSig = "simSiPixelDigis:Pixel",
0241             pileInputTag = "simSiPixelDigis:Pixel",
0242         ),
0243         phase2OTSimLink = cms.PSet(
0244             workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
0245             labelSig = cms.InputTag("simSiPixelDigis:Tracker"),
0246             pileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
0247             collectionDM = cms.string("Phase2OTDigiSimLink"),
0248         ),
0249     ),
0250 )
0251 
0252 # MTD
0253 phase2_timing_layer.toModify(mixData,
0254     workers = dict(
0255         mtdBarrel = cms.PSet(
0256             mtdDigitizer.barrelDigitizer,
0257             workerType = cms.string("PreMixingMTDWorker"),
0258             digiTagSig = cms.InputTag("mix", "FTLBarrel"),
0259             pileInputTag = cms.InputTag("mix", "FTLBarrel"),
0260         ),
0261         mtdEndcap = cms.PSet(
0262             mtdDigitizer.endcapDigitizer,
0263             workerType = cms.string("PreMixingMTDWorker"),
0264             digiTagSig = cms.InputTag("mix", "FTLEndcap"),
0265             pileInputTag = cms.InputTag("mix", "FTLEndcap"),
0266         ),
0267         mtdTruth = cms.PSet(
0268             workerType = cms.string("PreMixingMtdTruthWorker"),
0269             labelSig = cms.InputTag("mix", "MergedMtdTruthLC"),
0270             pileInputTag = cms.InputTag("mix", "MergedMtdTruthLC"),
0271             collectionDM = cms.string("MergedMtdTruthLC"),
0272         )
0273     )
0274 )
0275 # ECAL
0276 phase2_common.toModify (mixData, workers=dict(ecal=dict(doES=False)))
0277 phase2_hgcal.toModify(mixData, workers=dict(ecal=dict(doEE=False)))
0278 
0279 # HGCAL
0280 phase2_hgcal.toModify(mixData,
0281     workers = dict(
0282         hgcee = cms.PSet(
0283             hgceeDigitizer,
0284             workerType = cms.string("PreMixingHGCalWorker"),
0285             digiTagSig = cms.InputTag("mix", "HGCDigisEE"),
0286             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "EE"),
0287         ),
0288         hgchefront = cms.PSet(
0289             hgchefrontDigitizer,
0290             workerType = cms.string("PreMixingHGCalWorker"),
0291             digiTagSig = cms.InputTag("mix", "HGCDigisHEfront"),
0292             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEfront"),
0293         ),
0294         hgcheback = cms.PSet(
0295             hgchebackDigitizer,
0296             workerType = cms.string("PreMixingHGCalWorker"),
0297             digiTagSig = cms.InputTag("mix", "HGCDigisHEback"),
0298             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEback"),
0299         ),
0300         caloTruth = cms.PSet(
0301             workerType = cms.string("PreMixingCaloParticleWorker"),
0302             labelSig = cms.InputTag("mix", "MergedCaloTruth"),
0303             pileInputTag = cms.InputTag("mix", "MergedCaloTruth"),
0304             collectionDM = cms.string("MergedCaloTruth"),
0305         )
0306     )
0307 )
0308 
0309 phase2_hfnose.toModify(mixData,
0310     workers = dict(
0311         hfnose = cms.PSet(
0312             hfnoseDigitizer,
0313             workerType = cms.string("PreMixingHGCalWorker"),
0314             digiTagSig = cms.InputTag("mix", "HFNoseDigis"),
0315             pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HFNose"),
0316         ),
0317     )
0318 )
0319 
0320 # Muon
0321 (phase2_muon & ~phase2_GE0).toModify(mixData,
0322     workers = dict(
0323         me0 = cms.PSet(
0324             workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
0325             labelSig = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
0326             pileInputTag = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
0327             collectionDM = cms.string("g4SimHitsMuonME0Hits"),
0328         ),
0329     )
0330 )
0331 
0332 # Run-dependent MC
0333 from Configuration.ProcessModifiers.runDependent_cff import runDependent
0334 runDependent.toModify(mixData.workers.ecal, timeDependent=True)