CMS 3D CMS Logo

customizeGEMDigi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
4 # from SimGeneral.MixingModule.mixObjects_cfi import *
5 # from SimGeneral.MixingModule.digitizers_cfi import *
8 # from SimGeneral.MixingModule.trackingTruthProducer_cfi import *
9 
10 # PSet of mixObjects that only keeps muon collections (and SimTracks with SimVertices)
11 mixObjects_dt_csc_rpc = cms.PSet(
12  mixCH = cms.PSet(
13  crossingFrames = cms.untracked.vstring(),
14  input = cms.VInputTag(),
15  type = cms.string('PCaloHit'),
16  subdets = cms.vstring()
17  ),
18  mixHepMC = cms.PSet(
19  input = cms.VInputTag(cms.InputTag("generatorSmeared"),cms.InputTag("generator")),
20  makeCrossingFrame = cms.untracked.bool(True),
21  type = cms.string('HepMCProduct')
22  ),
23  mixVertices = cms.PSet(
24  input = cms.VInputTag(cms.InputTag("g4SimHits")),
25  makeCrossingFrame = cms.untracked.bool(True),
26  type = cms.string('SimVertex')
27  ),
28  mixSH = cms.PSet(
29  crossingFrames = cms.untracked.vstring(
30  'MuonCSCHits',
31  'MuonDTHits',
32  'MuonRPCHits',
33  'TrackerHitsPixelBarrelHighTof',
34  'TrackerHitsPixelBarrelLowTof',
35  'TrackerHitsPixelEndcapHighTof',
36  'TrackerHitsPixelEndcapLowTof',
37  'TrackerHitsTECHighTof',
38  'TrackerHitsTECLowTof',
39  'TrackerHitsTIBHighTof',
40  'TrackerHitsTIBLowTof',
41  'TrackerHitsTIDHighTof',
42  'TrackerHitsTIDLowTof',
43  'TrackerHitsTOBHighTof',
44  'TrackerHitsTOBLowTof'
45  ),
46  input = cms.VInputTag(
47  cms.InputTag("g4SimHits","MuonCSCHits"),
48  cms.InputTag("g4SimHits","MuonDTHits"),
49  cms.InputTag("g4SimHits","MuonRPCHits"),
50  cms.InputTag("g4SimHits","TrackerHitsPixelBarrelHighTof"),
51  cms.InputTag("g4SimHits","TrackerHitsPixelBarrelLowTof"),
52  cms.InputTag("g4SimHits","TrackerHitsPixelEndcapHighTof"),
53  cms.InputTag("g4SimHits","TrackerHitsPixelEndcapLowTof"),
54  cms.InputTag("g4SimHits","TrackerHitsTECHighTof"),
55  cms.InputTag("g4SimHits","TrackerHitsTECLowTof"),
56  cms.InputTag("g4SimHits","TrackerHitsTIBHighTof"),
57  cms.InputTag("g4SimHits","TrackerHitsTIBLowTof"),
58  cms.InputTag("g4SimHits","TrackerHitsTIDHighTof"),
59  cms.InputTag("g4SimHits","TrackerHitsTIDLowTof"),
60  cms.InputTag("g4SimHits","TrackerHitsTOBHighTof"),
61  cms.InputTag("g4SimHits","TrackerHitsTOBLowTof"),
62  ),
63  type = cms.string('PSimHit'),
64  subdets = cms.vstring(
65  'MuonCSCHits',
66  'MuonDTHits',
67  'MuonRPCHits',
68  'TrackerHitsPixelBarrelHighTof',
69  'TrackerHitsPixelBarrelLowTof',
70  'TrackerHitsPixelEndcapHighTof',
71  'TrackerHitsPixelEndcapLowTof',
72  'TrackerHitsTECHighTof',
73  'TrackerHitsTECLowTof',
74  'TrackerHitsTIBHighTof',
75  'TrackerHitsTIBLowTof',
76  'TrackerHitsTIDHighTof',
77  'TrackerHitsTIDLowTof',
78  'TrackerHitsTOBHighTof',
79  'TrackerHitsTOBLowTof'
80  )
81  ),
82  mixTracks = cms.PSet(
83  input = cms.VInputTag(cms.InputTag("g4SimHits")),
84  makeCrossingFrame = cms.untracked.bool(True),
85  type = cms.string('SimTrack')
86  )
87 )
88 
89 # PSet of mixObjects that only keep muon and tracker collections (and SimTracks with SimVertices)
90 mixObjects_dt_csc_rpc_trk = cms.PSet(
91  mixCH = cms.PSet(
92  crossingFrames = cms.untracked.vstring(),
93  input = cms.VInputTag(),
94  type = cms.string('PCaloHit'),
95  subdets = cms.vstring()
96  ),
97  mixHepMC = cms.PSet(
98  input = cms.VInputTag(cms.InputTag("generatorSmeared"),cms.InputTag("generator")),
99  makeCrossingFrame = cms.untracked.bool(True),
100  type = cms.string('HepMCProduct')
101  ),
102  mixVertices = cms.PSet(
103  input = cms.VInputTag(cms.InputTag("g4SimHits")),
104  makeCrossingFrame = cms.untracked.bool(True),
105  type = cms.string('SimVertex')
106  ),
107  mixSH = cms.PSet(
108  crossingFrames = cms.untracked.vstring(
109  'MuonCSCHits',
110  'MuonDTHits',
111  'MuonRPCHits',
112  'TrackerHitsPixelBarrelHighTof',
113  'TrackerHitsPixelBarrelLowTof',
114  'TrackerHitsPixelEndcapHighTof',
115  'TrackerHitsPixelEndcapLowTof',
116  'TrackerHitsTECHighTof',
117  'TrackerHitsTECLowTof',
118  'TrackerHitsTIBHighTof',
119  'TrackerHitsTIBLowTof',
120  'TrackerHitsTIDHighTof',
121  'TrackerHitsTIDLowTof',
122  'TrackerHitsTOBHighTof',
123  'TrackerHitsTOBLowTof'
124  ),
125  input = cms.VInputTag(
126  cms.InputTag("g4SimHits","MuonCSCHits"),
127  cms.InputTag("g4SimHits","MuonDTHits"),
128  cms.InputTag("g4SimHits","MuonRPCHits"),
129  cms.InputTag("g4SimHits","TrackerHitsPixelBarrelHighTof"),
130  cms.InputTag("g4SimHits","TrackerHitsPixelBarrelLowTof"),
131  cms.InputTag("g4SimHits","TrackerHitsPixelEndcapHighTof"),
132  cms.InputTag("g4SimHits","TrackerHitsPixelEndcapLowTof"),
133  cms.InputTag("g4SimHits","TrackerHitsTECHighTof"),
134  cms.InputTag("g4SimHits","TrackerHitsTECLowTof"),
135  cms.InputTag("g4SimHits","TrackerHitsTIBHighTof"),
136  cms.InputTag("g4SimHits","TrackerHitsTIBLowTof"),
137  cms.InputTag("g4SimHits","TrackerHitsTIDHighTof"),
138  cms.InputTag("g4SimHits","TrackerHitsTIDLowTof"),
139  cms.InputTag("g4SimHits","TrackerHitsTOBHighTof"),
140  cms.InputTag("g4SimHits","TrackerHitsTOBLowTof"),
141  ),
142  type = cms.string('PSimHit'),
143  subdets = cms.vstring(
144  'MuonCSCHits',
145  'MuonDTHits',
146  'MuonRPCHits',
147  'TrackerHitsPixelBarrelHighTof',
148  'TrackerHitsPixelBarrelLowTof',
149  'TrackerHitsPixelEndcapHighTof',
150  'TrackerHitsPixelEndcapLowTof',
151  'TrackerHitsTECHighTof',
152  'TrackerHitsTECLowTof',
153  'TrackerHitsTIBHighTof',
154  'TrackerHitsTIBLowTof',
155  'TrackerHitsTIDHighTof',
156  'TrackerHitsTIDLowTof',
157  'TrackerHitsTOBHighTof',
158  'TrackerHitsTOBLowTof'
159  )
160  ),
161  mixTracks = cms.PSet(
162  input = cms.VInputTag(cms.InputTag("g4SimHits")),
163  makeCrossingFrame = cms.untracked.bool(True),
164  type = cms.string('SimTrack')
165  ),
166 )
167 
168 
169 # Customize process.mix to be used for running muon (DT, CSC, RPC) digi only.
170 # - remove non-muon digitizers that are now run as part of mixing process
171 # - delete all the digitizers' aliases.
172 # - drop unnecessary mixObjects
174  process.mix.digitizers = digitizers = cms.PSet()
175  digi_aliases = filter(lambda n: 'Digi' in n, process.aliases.keys())
176  for a in digi_aliases: process.__delattr__(a)
177  process.mix.mixObjects = mixObjects_dt_csc_rpc
178  return process
179 
180 # Customize process.mix to be used for running muon and tracker digi only.
181 # - remove calo digitizers that are now run as part of mixing process
182 # - delete all the digitizers' aliases apart of pixel and strip aliasses.
183 # - reset the simCastorDigis, simEcalUnsuppressedDigis
184 # and simHcalUnsuppressedDigis
185 # - drop unnecessary mixObjects
186 def customize_mix_nocalo(process):
187  process.mix.digitizers = digitizers = cms.PSet(
188  pixel = cms.PSet(
189  pixelDigitizer
190  ),
191  strip = cms.PSet(
192  stripDigitizer
193  ),
194  )
195  process.mix.theDigitizersValid = cms.PSet(
196  pixel = cms.PSet(
197  pixelDigitizer
198  ),
199  strip = cms.PSet(
200  stripDigitizer
201  )
202  )
203  # delete some contents of SimGeneral/MixingModule/python/aliases_cfi.py
204  # i was not able to delete these processes in a different way
205  process.simCastorDigis = cms.EDAlias()
206  process.simEcalUnsuppressedDigis = cms.EDAlias()
207  process.simHcalUnsuppressedDigis = cms.EDAlias()
208  # delete all digitizer aliasses apart of pixel and strip aliases
209  digi_aliases = filter(lambda n: 'Digi' in n, process.aliases.keys())
210  print("digi aliases before clean up: ")
211  for a in digi_aliases:
212  print(a)
213  if ('Strip' not in a) and ('Pixel' not in a):
214  process.__delattr__(a)
215  process.mix.mixObjects = mixObjects_dt_csc_rpc_trk
216  return process
217 
218 # Customize process.mix to be used for running muon (DT, CSC, RPC + GEM) digi only.
219 # - first do such customization for (DT, CSC, RPC)
220 # - append GEM SimHit collection definitions to mix.mixObjects.mixSH
222  process = customize_mix_muon_only(process)
223  process = customize_mix_addGEM(process)
224  return process
225 
227  process = customize_mix_nocalo(process)
228  process = customize_mix_addGEM(process)
229  return process
230 
231 # customize the digitization sequence pdigi to only digitize DT+CSC+RPC+GEM
233  process = load_GEM_digitizers(process)
234  process = customize_random_GEMDigi(process)
235  process = customize_mix_addGEM_muon_only(process)
236  process.muonDigi = cms.Sequence(
237  process.simMuonCSCDigis +
238  process.simMuonDTDigis +
239  process.simMuonRPCDigis +
240  process.simMuonGEMDigis +
241  process.simMuonGEMPadDigis +
242  process.simMuonGEMPadDigiClusters
243  )
244  process.pdigi = cms.Sequence(
245  cms.SequencePlaceholder("randomEngineStateProducer")*
246  cms.SequencePlaceholder("mix")*
247  process.muonDigi
248  )
249  process = append_GEMDigi_event(process)
250  return process
251 
252 # customize the digitization sequence pdigi to only digitize DT+CSC+RPC+GEM
254  process = load_GEM_digitizers(process)
255  process = customize_random_GEMDigi(process)
256  process = customize_mix_addGEM_nocalo(process)
257  process.muonDigi = cms.Sequence(
258  process.simMuonCSCDigis +
259  process.simMuonDTDigis +
260  process.simMuonRPCDigis +
261  process.simMuonGEMDigis +
262  process.simMuonGEMPadDigis
263  )
264  process.pdigi = cms.Sequence(
265  cms.SequencePlaceholder("randomEngineStateProducer")*
266  cms.SequencePlaceholder("mix")*
267  process.muonDigi
268  )
269  # process.pdigi.remove(simCastorDigis)
270  process = append_GEMDigi_event(process)
271  return process
272 
273 
274 
275 
276 
277 # customize process.mix by appending GEM SimHit collection definitions to mix.mixObjects.mixSH
278 def customize_mix_addGEM(process):
279  process.mix.mixObjects.mixSH.crossingFrames.append('MuonGEMHits')
280  process.mix.mixObjects.mixSH.input.append(cms.InputTag("g4SimHits","MuonGEMHits"))
281  process.mix.mixObjects.mixSH.subdets.append('MuonGEMHits')
282  return process
283 
284 
285 # customize process.mix by appending ME0 SimHit collection definitions to mix.mixObjects.mixSH
286 def customize_mix_addME0(process):
287  process.mix.mixObjects.mixSH.crossingFrames.append('MuonME0Hits')
288  process.mix.mixObjects.mixSH.input.append(cms.InputTag("g4SimHits","MuonME0Hits"))
289  process.mix.mixObjects.mixSH.subdets.append('MuonME0Hits')
290  return process
291 
292 
293 # Customize process.mix to be used for running muon (DT, CSC, RPC + GEM) digi only.
294 # - first do such customization for (DT, CSC, RPC)
295 # - append GEM SimHit collection definitions to mix.mixObjects.mixSH
297  process = customize_mix_muon_only(process)
298  process = customize_mix_addGEM(process)
299  process = customize_mix_addME0(process)
300  return process
301 
303  process = customize_mix_nocalo(process)
304  process = customize_mix_addGEM(process)
305  process = customize_mix_addME0(process)
306  return process
307 
308 
309 # Add simMuonGEMDigis to the list of modules served by RandomNumberGeneratorService
311  process.RandomNumberGeneratorService.simMuonGEMDigis = cms.PSet(
312  initialSeed = cms.untracked.uint32(1234567),
313  engineName = cms.untracked.string('HepJamesRandom')
314  )
315  return process
316 
317 
318 # Add simMuonME0Digis to the list of modules served by RandomNumberGeneratorService
320  process.RandomNumberGeneratorService.simMuonME0Digis = cms.PSet(
321  initialSeed = cms.untracked.uint32(1234567),
322  engineName = cms.untracked.string('HepJamesRandom')
323  )
324  return process
325 
326 
327 ## load the digitizer and pad producer
328 def load_GEM_digitizers(process):
329  process.load('SimMuon.GEMDigitizer.muonGEMDigi_cff')
330  return process
331 
332 
333 ## load the digitizer and pad producer
334 def load_ME0_digitizers(process):
335  process.load('SimMuon.GEMDigitizer.muonME0DigisPreReco_cfi')
336  return process
337 
338 
339 # customize the full digitization sequence pdigi by adding GEMs
341  process = load_GEM_digitizers(process)
342  process = customize_random_GEMDigi(process)
343  process = customize_mix_addGEM(process)
344  process.doAllDigi = cms.Sequence(
345  process.calDigi +
346  process.muonDigi
347  )
348  process.pdigi = cms.Sequence(
349  cms.SequencePlaceholder("randomEngineStateProducer")*
350  cms.SequencePlaceholder("mix")*
351  process.doAllDigi*
352  process.addPileupInfo
353  )
354  process = append_GEMDigi_event(process)
355  return process
356 
357 
358 # customize the digitization sequence pdigi to only digitize GEM
360  process = load_GEM_digitizers(process)
361  process = customize_random_GEMDigi(process)
362  process = customize_mix_addGEM_muon_only(process)
363  process.pdigi = cms.Sequence(
364  cms.SequencePlaceholder("randomEngineStateProducer")*
365  cms.SequencePlaceholder("mix")*
366  process.simMuonGEMDigis*
367  process.simMuonGEMPadDigis
368  )
369  process = append_GEMDigi_event(process)
370  return process
371 
372 
373 # customize the full digitization sequence pdigi by adding GEMs
375  process = load_GEM_digitizers(process)
376  process = load_ME0_digitizers(process)
377  process = customize_random_GEMDigi(process)
378  process = customize_random_ME0Digi(process)
379  process = customize_mix_addGEM(process)
380  process = customize_mix_addME0(process)
381  process.muonDigi = cms.Sequence(
382  process.simMuonCSCDigis +
383  process.simMuonDTDigis +
384  process.simMuonRPCDigis +
385  process.simMuonGEMDigis +
386  process.simMuonGEMPadDigis +
387  process.simMuonME0Digis
388  )
389  process.doAllDigi = cms.Sequence(
390  process.calDigi +
391  process.muonDigi
392  )
393  process.pdigi = cms.Sequence(
394  cms.SequencePlaceholder("randomEngineStateProducer")*
395  cms.SequencePlaceholder("mix")*
396  process.doAllDigi*
397  process.addPileupInfo
398  )
399  process = append_GEMDigi_event(process)
400  return process
401 
402 
403 # customize the digitization sequence pdigi to only digitize DT+CSC+RPC+GEM
405  process = load_GEM_digitizers(process)
406  process = load_ME0_digitizers(process)
407  process = customize_random_GEMDigi(process)
408  process = customize_random_ME0Digi(process)
409  process = customize_mix_addGEM_addME0_muon_only(process)
410  process.muonDigi = cms.Sequence(
411  process.simMuonCSCDigis +
412  process.simMuonDTDigis +
413  process.simMuonRPCDigis +
414  process.simMuonGEMDigis +
415  process.simMuonGEMPadDigis +
416  process.simMuonME0Digis
417  )
418  process.pdigi = cms.Sequence(
419  cms.SequencePlaceholder("randomEngineStateProducer")*
420  cms.SequencePlaceholder("mix")*
421  process.muonDigi
422  )
423  process = append_GEMDigi_event(process)
424  return process
425 
426 
427 # customize the digitization sequence pdigi to only digitize GEM
429  process = load_GEM_digitizers(process)
430  process = load_ME0_digitizers(process)
431  process = customize_random_GEMDigi(process)
432  process = customize_random_ME0Digi(process)
433  process = customize_mix_addGEM_addME0_muon_only(process)
434  process.pdigi = cms.Sequence(
435  cms.SequencePlaceholder("randomEngineStateProducer")*
436  cms.SequencePlaceholder("mix")*
437  process.simMuonGEMDigis*
438  process.simMuonGEMPadDigis*
439  process.simMuonME0Digis
440  )
441  process = append_GEMDigi_event(process)
442  return process
443 
444 
445 # insert the GEMDigi and GEMPadDigi collection to the event
446 def append_GEMDigi_event(process):
447  alist=['AODSIM','RECOSIM','FEVTSIM','FEVTDEBUG','FEVTDEBUGHLT','RECODEBUG','RAWRECOSIMHLT','RAWRECODEBUGHLT']
448  for a in alist:
449  b=a+'output'
450  if hasattr(process,b):
451  getattr(process,b).outputCommands.append('drop *')
452  # getattr(process,b).outputCommands.append('keep *_mix_*_*')
453  getattr(process,b).outputCommands.append('keep *_g4SimHits__*')
454  getattr(process,b).outputCommands.append('keep *_g4SimHits_Muon*_*')
455  getattr(process,b).outputCommands.append('keep *_g4SimHits_Tracker*_*')
456  getattr(process,b).outputCommands.append('keep *_generator_*_*')
457  getattr(process,b).outputCommands.append('keep *_genParticles_*_*')
458  getattr(process,b).outputCommands.append('keep *_*Muon*_*_*')
459  getattr(process,b).outputCommands.append('keep *_*Strip*_*_*')
460  getattr(process,b).outputCommands.append('keep *_*Pixel*_*_*')
461  # getattr(process,b).outputCommands.append('keep *_*_*_*')
462  # getattr(process,b).outputCommands.append('keep *_simSiPixelDigis_*_*')
463  # getattr(process,b).outputCommands.append('keep *_simSiStripDigis_*_*')
464 
465  return process
466 
467 # Customizations for the background
469  process.simMuonGEMDigis.doBkgNoise = False
470  return process
471 
473  process.simMuonGEMDigis.rateFact = 1
474  return process
def customize_mix_addME0(process)
def customize_digi_addGEM_muon_only(process)
def customize_mix_addGEM_nocalo(process)
def load_ME0_digitizers(process)
load the digitizer and pad producer
def customize_mix_nocalo(process)
std::string print(const Track &, edm::Verbosity=edm::Concise)
Track print utility.
Definition: print.cc:10
def customize_digi_addGEM_gem_only(process)
def customize_mix_addGEM_addME0_muon_only(process)
def customize_random_GEMDigi(process)
def customize_digi_addGEM_addME0_gem_only(process)
def customize_random_ME0Digi(process)
def customize_mix_muon_only(process)
def customize_digi_noGEMsafety(process)
def customize_digi_addGEM(process)
def customize_digi_addGEM_addME0_muon_only(process)
def append_GEMDigi_event(process)
def customize_digi_noGEMbkg(process)
def customize_digi_addGEM_addME0(process)
def customize_mix_addGEM_addME0_nocalo(process)
def customize_mix_addGEM(process)
def customize_mix_addGEM_muon_only(process)
def customize_digi_addGEM_nocalo(process)
def load_GEM_digitizers(process)
load the digitizer and pad producer