CMS 3D CMS Logo

mixOne_premix_on_sim_cfi.py
Go to the documentation of this file.
1 # This is the PreMixing config. Not only does it do a RawToDigi
2 # conversion to the secondary input source, it also holds its own
3 # instances of an EcalDigiProducer and an HcalDigitizer. It also
4 # replicates the noise adding functions in the SiStripDigitizer.
5 #
6 # Adapted from DataMixingModule
7 
8 
9 import FWCore.ParameterSet.Config as cms
10 from SimCalorimetry.HcalSimProducers.hcalUnsuppressedDigis_cfi import hcalSimBlock
11 from SimGeneral.MixingModule.SiStripSimParameters_cfi import SiStripSimBlock
12 from SimGeneral.MixingModule.SiPixelSimParameters_cfi import SiPixelSimBlock
13 from SimTracker.SiPhase2Digitizer.phase2TrackerDigitizer_cfi import phase2TrackerDigitizer, _premixStage1ModifyDict as _phase2TrackerPremixStage1ModifyDict
14 from SimGeneral.MixingModule.ecalDigitizer_cfi import ecalDigitizer
15 from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, hfnoseDigitizer
17 
18 hcalSimBlock.HcalPreMixStage2 = cms.bool(True)
19 
20 mixData = cms.EDProducer("PreMixingModule",
21  input = cms.SecSource("EmbeddedRootSource",
22  producers = cms.VPSet(),
23  nbPileupEvents = cms.PSet(
24  averageNumber = cms.double(1.0)
25  ),
26  seed = cms.int32(1234567),
27  type = cms.string('fixed'),
28  sequential = cms.untracked.bool(False), # set to true for sequential reading of pileup
29  fileNames = cms.untracked.vstring('file:DMPreProcess_RAW2DIGI.root'),
30  consecutiveRejectionsLimit = cms.untracked.uint32(100) # should be sufficiently large to allow enough tails
31  ),
32  # Mixing Module parameters
33  bunchspace = cms.int32(25),
34  minBunch = cms.int32(0),
35  maxBunch = cms.int32(0),
36  mixProdStep1 = cms.bool(False),
37  mixProdStep2 = cms.bool(False),
38  # Optionally adjust the pileup distribution
39  adjustPileupDistribution = cms.VPSet(),
40  # Workers
41  workers = cms.PSet(
42  pileup = cms.PSet(
43  PileupInfoInputTag = cms.InputTag("addPileupInfo"),
44  BunchSpacingInputTag = cms.InputTag("addPileupInfo","bunchSpacing"),
45  CFPlaybackInputTag = cms.InputTag("mix"),
46  GenPUProtonsInputTags = cms.VInputTag("genPUProtons"),
47  ),
48  # Note: elements with "@MIXING" in the input tag are generated by
49  pixel = cms.PSet(
50  SiPixelSimBlock.clone(
51  # To preserve the behaviour of copy-pasted version of premix worker
52  # All these are done in stage1 (for both signal and pileup)
53  AddNoise = False,
54  killModules = False,
55  MissCalibrate = False,
56  ),
57  workerType = cms.string("PreMixingSiPixelWorker"),
58  pixeldigiCollectionSig = cms.InputTag("simSiPixelDigis"),
59  pixeldigiCollectionPile = cms.InputTag("simSiPixelDigis"),
60  PixelDigiCollectionDM = cms.string('siPixelDigisDM'),
61  ),
62  strip = cms.PSet(
63  SiStripSimBlock,
64  workerType = cms.string("PreMixingSiStripWorker"),
65 
66  SistripLabelSig = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
67  SiStripPileInputTag = cms.InputTag("simSiStripDigis","ZeroSuppressed"),
68  # Dead APV Vector
69  SistripAPVPileInputTag = cms.InputTag("mix","AffectedAPVList"),
70  SistripAPVLabelSig = cms.InputTag("mix","AffectedAPVList"),
71  # output
72  SiStripDigiCollectionDM = cms.string('siStripDigisDM'),
73  SiStripAPVListDM = cms.string('SiStripAPVList'),
74  ),
75  ecal = cms.PSet(
76  ecalDigitizer.clone(accumulatorType = None, makeDigiSimLinks=None),
77  workerType = cms.string("PreMixingEcalWorker"),
78 
79  EBdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
80  EEdigiProducerSig = cms.InputTag("simEcalUnsuppressedDigis"),
81  ESdigiProducerSig = cms.InputTag("simEcalPreshowerDigis"),
82 
83  EBPileInputTag = cms.InputTag("simEcalDigis", "ebDigis"),
84  EEPileInputTag = cms.InputTag("simEcalDigis", "eeDigis"),
85  ESPileInputTag = cms.InputTag("simEcalUnsuppressedDigis"),
86 
87  EBDigiCollectionDM = cms.string(''),
88  EEDigiCollectionDM = cms.string(''),
89  ESDigiCollectionDM = cms.string(''),
90  ),
91  hcal = cms.PSet(
92  hcalSimBlock,
93  workerType = cms.string("PreMixingHcalWorker"),
94 
95  HBHEdigiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
96  HOdigiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
97  HFdigiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
98  QIE10digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
99  QIE11digiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
100  ZDCdigiCollectionSig = cms.InputTag("simHcalUnsuppressedDigis"),
101 
102  HBHEPileInputTag = cms.InputTag("simHcalDigis"),
103  HOPileInputTag = cms.InputTag("simHcalDigis"),
104  HFPileInputTag = cms.InputTag("simHcalDigis"),
105  QIE10PileInputTag = cms.InputTag("simHcalDigis", "HFQIE10DigiCollection"),
106  QIE11PileInputTag = cms.InputTag("simHcalDigis", "HBHEQIE11DigiCollection"),
107  ZDCPileInputTag = cms.InputTag(""),
108 
109  HBHEDigiCollectionDM = cms.string(''),
110  HODigiCollectionDM = cms.string(''),
111  HFDigiCollectionDM = cms.string(''),
112  QIE10DigiCollectionDM = cms.string(''),
113  QIE11DigiCollectionDM = cms.string(''),
114  ZDCDigiCollectionDM = cms.string('')
115  ),
116  dt = cms.PSet(
117  workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
118  labelSig = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
119  pileInputTag = cms.InputTag("mix", "g4SimHitsMuonDTHits"),
120  collectionDM = cms.string("g4SimHitsMuonDTHits"),
121  ),
122  rpc = cms.PSet(
123  workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
124  labelSig = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
125  pileInputTag = cms.InputTag("mix", "g4SimHitsMuonRPCHits"),
126  collectionDM = cms.string("g4SimHitsMuonRPCHits"),
127  ),
128  csc = cms.PSet(
129  workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
130  labelSig = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
131  pileInputTag = cms.InputTag("mix", "g4SimHitsMuonCSCHits"),
132  collectionDM = cms.string("g4SimHitsMuonCSCHits"),
133  ),
134  trackingTruth = cms.PSet(
135  workerType = cms.string("PreMixingTrackingParticleWorker"),
136  labelSig = cms.InputTag("mix","MergedTrackTruth"),
137  pileInputTag = cms.InputTag("mix","MergedTrackTruth"),
138  collectionDM = cms.string('MergedTrackTruth'),
139  ),
140  pixelSimLink = cms.PSet(
141  workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
142  labelSig = cms.InputTag("simSiPixelDigis"),
143  pileInputTag = cms.InputTag("simSiPixelDigis"),
144  collectionDM = cms.string('PixelDigiSimLink'),
145  ),
146  stripSimLink = cms.PSet(
147  workerType = cms.string("PreMixingStripDigiSimLinkWorker"),
148  labelSig = cms.InputTag("simSiStripDigis"),
149  pileInputTag = cms.InputTag("simSiStripDigis"),
150  collectionDM = cms.string('StripDigiSimLink'),
151  ),
152  ),
153 )
154 
155 
156 from Configuration.Eras.Modifier_fastSim_cff import fastSim
157 from FastSimulation.Tracking.recoTrackAccumulator_cfi import recoTrackAccumulator as _recoTrackAccumulator
158 fastSim.toModify(mixData,
159  # from signal: mix tracks not strip or pixel digis
160  workers = dict(
161  pixel = None,
162  strip = None,
163  pixelSimLink = None,
164  stripSimLink = None,
165  tracks = cms.PSet(
166  workerType = cms.string("PreMixingDigiAccumulatorWorker"),
167  accumulator = _recoTrackAccumulator.clone(
168  pileUpTracks = "mix:generalTracks"
169  )
170  ),
171  dt = dict(
172  labelSig = "mix:MuonSimHitsMuonDTHits",
173  pileInputTag = "mix:MuonSimHitsMuonDTHits",
174  collectionDM = "MuonSimHitsMuonDTHits",
175  ),
176  rpc = dict(
177  labelSig = "mix:MuonSimHitsMuonRPCHits",
178  pileInputTag = "mix:MuonSimHitsMuonRPCHits",
179  collectionDM = "MuonSimHitsMuonRPCHits",
180  ),
181  csc = dict(
182  labelSig = "mix:MuonSimHitsMuonCSCHits",
183  pileInputTag = "mix:MuonSimHitsMuonCSCHits",
184  collectionDM = "MuonSimHitsMuonCSCHits",
185  ),
186  ),
187 )
188 
189 from Configuration.Eras.Modifier_run2_GEM_2017_cff import run2_GEM_2017
190 from Configuration.Eras.Modifier_run3_GEM_cff import run3_GEM
191 (run2_GEM_2017 | run3_GEM).toModify(
192  mixData,
193  workers = dict(
194  gem = cms.PSet(
195  workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
196  labelSig = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
197  pileInputTag = cms.InputTag("mix", "g4SimHitsMuonGEMHits"),
198  collectionDM = cms.string("g4SimHitsMuonGEMHits"),
199  ),
200  )
201 )
202 
203 from Configuration.Eras.Modifier_phase2_common_cff import phase2_common
204 from Configuration.Eras.Modifier_phase2_tracker_cff import phase2_tracker
205 from Configuration.Eras.Modifier_phase2_timing_layer_tile_cff import phase2_timing_layer_tile
206 from Configuration.Eras.Modifier_phase2_timing_layer_bar_cff import phase2_timing_layer_bar
207 from Configuration.Eras.Modifier_phase2_hcal_cff import phase2_hcal
208 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
209 from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose
210 from Configuration.Eras.Modifier_phase2_muon_cff import phase2_muon
211 phase2_common.toModify(mixData, input = dict(producers = [])) # we use digis directly, no need for raw2digi producers
212 
213 # Tracker
214 phase2_tracker.toModify(mixData,
215  workers = dict(
216  # Disable SiStrip
217  strip = None,
218  stripSimLink = None,
219  # Replace pixel with Phase2 tracker
220  pixel = cms.PSet(
221  phase2TrackerDigitizer,
222  workerType = cms.string("PreMixingPhase2TrackerWorker"),
223 
224  pixelLabelSig = cms.InputTag("simSiPixelDigis:Pixel"),
225  pixelPileInputTag = cms.InputTag("simSiPixelDigis:Pixel"),
226  trackerLabelSig = cms.InputTag("simSiPixelDigis:Tracker"),
227  trackerPileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
228  premixStage1ElectronPerAdc = cms.double(_phase2TrackerPremixStage1ModifyDict["PixelDigitizerAlgorithm"]["ElectronPerAdc"])
229  ),
230  pixelSimLink = dict(
231  labelSig = "simSiPixelDigis:Pixel",
232  pileInputTag = "simSiPixelDigis:Pixel",
233  ),
234  phase2OTSimLink = cms.PSet(
235  workerType = cms.string("PreMixingPixelDigiSimLinkWorker"),
236  labelSig = cms.InputTag("simSiPixelDigis:Tracker"),
237  pileInputTag = cms.InputTag("simSiPixelDigis:Tracker"),
238  collectionDM = cms.string("Phase2OTDigiSimLink"),
239  ),
240  ),
241 )
242 
243 # MTD
244 (phase2_timing_layer_tile | phase2_timing_layer_bar).toModify(mixData,
245  workers = dict(
246  mtdBarrel = cms.PSet(
247  mtdDigitizer.barrelDigitizer,
248  workerType = cms.string("PreMixingMTDWorker"),
249  digiTagSig = cms.InputTag("mix", "FTLBarrel"),
250  pileInputTag = cms.InputTag("mix", "FTLBarrel"),
251  ),
252  mtdEndcap = cms.PSet(
253  mtdDigitizer.endcapDigitizer,
254  workerType = cms.string("PreMixingMTDWorker"),
255  digiTagSig = cms.InputTag("mix", "FTLEndcap"),
256  pileInputTag = cms.InputTag("mix", "FTLEndcap"),
257  ),
258  )
259 )
260 # ECAL
261 phase2_common.toModify (mixData, workers=dict(ecal=dict(doES=False)))
262 phase2_hgcal.toModify(mixData, workers=dict(ecal=dict(doEE=False)))
263 
264 # HGCAL
265 phase2_hgcal.toModify(mixData,
266  workers = dict(
267  hgcee = cms.PSet(
268  hgceeDigitizer,
269  workerType = cms.string("PreMixingHGCalWorker"),
270  digiTagSig = cms.InputTag("mix", "HGCDigisEE"),
271  pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "EE"),
272  ),
273  hgchefront = cms.PSet(
274  hgchefrontDigitizer,
275  workerType = cms.string("PreMixingHGCalWorker"),
276  digiTagSig = cms.InputTag("mix", "HGCDigisHEfront"),
277  pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEfront"),
278  ),
279  hgcheback = cms.PSet(
280  hgchebackDigitizer,
281  workerType = cms.string("PreMixingHGCalWorker"),
282  digiTagSig = cms.InputTag("mix", "HGCDigisHEback"),
283  pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HEback"),
284  ),
285  caloTruth = cms.PSet(
286  workerType = cms.string("PreMixingCaloParticleWorker"),
287  labelSig = cms.InputTag("mix", "MergedCaloTruth"),
288  pileInputTag = cms.InputTag("mix", "MergedCaloTruth"),
289  collectionDM = cms.string("MergedCaloTruth"),
290  )
291  )
292 )
293 
294 phase2_hfnose.toModify(mixData,
295  workers = dict(
296  hfnose = cms.PSet(
297  hfnoseDigitizer,
298  workerType = cms.string("PreMixingHGCalWorker"),
299  digiTagSig = cms.InputTag("mix", "HFNoseDigis"),
300  pileInputTag = cms.InputTag("simHGCalUnsuppressedDigis", "HFNose"),
301  ),
302  )
303 )
304 
305 
306 # Muon
307 phase2_muon.toModify(mixData,
308  workers = dict(
309  me0 = cms.PSet(
310  workerType = cms.string("PreMixingCrossingFramePSimHitWorker"),
311  labelSig = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
312  pileInputTag = cms.InputTag("mix", "g4SimHitsMuonME0Hits"),
313  collectionDM = cms.string("g4SimHitsMuonME0Hits"),
314  ),
315  )
316 )