CMS 3D CMS Logo

digitizers_cfi.py
Go to the documentation of this file.
1 import FWCore.ParameterSet.Config as cms
2 
3 # configuration to model pileup for initial physics phase
14 
15 theDigitizers = cms.PSet(
16  pixel = cms.PSet(
17  pixelDigitizer
18  ),
19  strip = cms.PSet(
20  stripDigitizer
21  ),
22  ecal = cms.PSet(
23  ecalDigitizer
24  ),
25  hcal = cms.PSet(
26  hcalDigitizer
27  ),
28  castor = cms.PSet(
29  castorDigitizer
30  ),
31  puVtx = cms.PSet(
32  pileupVtxDigitizer
33  ),
34  mergedtruth = cms.PSet(
35  trackingParticles
36  )
37 )
38 
39 from Configuration.Eras.Modifier_fastSim_cff import fastSim
40 fastSim.toModify(theDigitizers,
41  # fastsim does not model castor
42  castor = None,
43  # fastsim does not digitize pixel and strip hits
44  pixel = None,
45  strip = None,
46  tracks = recoTrackAccumulator
47 )
48 from Configuration.ProcessModifiers.premix_stage2_cff import premix_stage2
49 (fastSim & premix_stage2).toModify(theDigitizers,
50  tracks = None
51 )
52 
53 
54 from SimCalorimetry.HGCalSimProducers.hgcalDigitizer_cfi import hgceeDigitizer, hgchebackDigitizer, hgchefrontDigitizer, HGCAL_noise_fC, HGCAL_noise_heback, HGCAL_chargeCollectionEfficiencies, HGCAL_ileakParam_toUse, HGCAL_cceParams_toUse, HGCAL_noises
55 
56 from Configuration.Eras.Modifier_phase2_hgcal_cff import phase2_hgcal
57 phase2_hgcal.toModify( theDigitizers,
58  hgceeDigitizer = cms.PSet(hgceeDigitizer),
59  hgchebackDigitizer = cms.PSet(hgchebackDigitizer),
60  hgchefrontDigitizer = cms.PSet(hgchefrontDigitizer),
61 )
62 
64 
65 from Configuration.Eras.Modifier_phase2_hfnose_cff import phase2_hfnose
66 phase2_hfnose.toModify( theDigitizers,
67  hfnoseDigitizer = cms.PSet(hfnoseDigitizer),
68 )
69 
70 from Configuration.Eras.Modifier_run3_common_cff import run3_common
71 run3_common.toModify( theDigitizers, castor = None )
72 
73 from SimGeneral.MixingModule.ecalTimeDigitizer_cfi import ecalTimeDigitizer
74 from Configuration.Eras.Modifier_phase2_timing_cff import phase2_timing
75 phase2_timing.toModify( theDigitizers,
76  ecalTime = ecalTimeDigitizer.clone() )
77 
78 from SimFastTiming.Configuration.SimFastTiming_cff import mtdDigitizer
79 from Configuration.Eras.Modifier_phase2_timing_layer_cff import phase2_timing_layer
80 phase2_timing_layer.toModify( theDigitizers,
81  fastTimingLayer = mtdDigitizer.clone() )
82 
83 premix_stage2.toModify(theDigitizers,
84  ecal = None,
85  hcal = None,
86 )
87 (premix_stage2 & phase2_hgcal).toModify(theDigitizers,
88  hgceeDigitizer = dict(premixStage1 = True),
89  hgchebackDigitizer = dict(premixStage1 = True),
90  hgchefrontDigitizer = dict(premixStage1 = True),
91 )
92 (premix_stage2 & phase2_hfnose).toModify(theDigitizers,
93  hfnoseDigitizer = dict(premixStage1 = True),
94 )
95 (premix_stage2 & phase2_timing_layer).toModify(theDigitizers,
96  fastTimingLayer = dict(
97  barrelDigitizer = dict(premixStage1 = True),
98  endcapDigitizer = dict(premixStage1 = True)
99  )
100 )
101 
102 theDigitizersValid = cms.PSet(theDigitizers)
103 theDigitizers.mergedtruth.select.signalOnlyTP = True
104 
105 from Configuration.ProcessModifiers.run3_ecalclustering_cff import run3_ecalclustering
106 (run3_ecalclustering | phase2_hgcal).toModify( theDigitizersValid,
107  calotruth = cms.PSet( caloParticles ) ) # Doesn't HGCal need these also without validation?
108 (premix_stage2 & phase2_hgcal).toModify(theDigitizersValid, calotruth = dict(premixStage1 = True))
109 
110 
111 phase2_timing.toModify( theDigitizersValid.mergedtruth,
112  createInitialVertexCollection = cms.bool(True) )
113 
114 
115 from Configuration.ProcessModifiers.premix_stage1_cff import premix_stage1
117  # To avoid this if-else structure we'd need an "_InverseModifier"
118  # to customize pixel/strip for everything else than fastSim.
119  if hasattr(mod, "pixel"):
120  if hasattr(mod.pixel, "AlgorithmCommon"):
121  mod.pixel.AlgorithmCommon.makeDigiSimLinks = True
122  else:
123  mod.pixel.makeDigiSimLinks = True
124  if hasattr(mod, "strip"):
125  mod.strip.makeDigiSimLinks = True
126  mod.mergedtruth.select.signalOnlyTP = False
127 premix_stage1.toModify(theDigitizersValid, _customizePremixStage1)
128 
130  process.load("SimGeneral.MixingModule.aliases_PreMix_cfi")
131 modifyDigitizers_loadPremixStage2Aliases = premix_stage2.makeProcessModifier(_loadPremixStage2Aliases)
hgcalDigitizer_cfi
pixelDigitizer_cfi
ecalDigitizer_cfi
digitizers_cfi._customizePremixStage1
def _customizePremixStage1(mod)
Definition: digitizers_cfi.py:116
trackingTruthProducerSelection_cfi
aliases_cfi
pileupVtxDigitizer_cfi
castorDigitizer_cfi
caloTruthProducer_cfi
digitizers_cfi._loadPremixStage2Aliases
def _loadPremixStage2Aliases(process)
Definition: digitizers_cfi.py:129
stripDigitizer_cfi
hcalDigitizer_cfi
recoTrackAccumulator_cfi