1 #ifndef SimMuon_GEMDigitizer_GEMDigiProducer_h
2 #define SimMuon_GEMDigitizer_GEMDigiProducer_h
35 class HepRandomEngine;
64 produces<GEMDigiCollection>();
65 produces<StripDigiSimLinks>(
"GEM");
66 produces<GEMDigiSimLinks>(
"GEM");
71 <<
"GEMDigiProducer::GEMDigiProducer() - RandomNumberGeneratorService is not present in configuration file.\n"
72 <<
"Add the service in the configuration file or remove the modules that require it.";
88 desc.
add<
double>(
"signalPropagationSpeed", 0.66);
89 desc.
add<
double>(
"timeResolution", 5.);
90 desc.
add<
double>(
"timeJitter", 1.0);
91 desc.
add<
double>(
"averageShapingTime", 50.0);
92 desc.
add<
double>(
"averageEfficiency", 0.98);
93 desc.
add<
double>(
"averageNoiseRate", 0.001);
97 desc.
add<
int>(
"minBunch", -5);
98 desc.
add<
int>(
"maxBunch", 3);
100 desc.
add<
bool>(
"fixedRollRadius",
true);
102 desc.
add<
bool>(
"digitizeOnlyMuons",
false);
103 desc.
add<
bool>(
"simulateBkgNoise",
false);
105 desc.
add<
bool>(
"simulateNoiseCLS",
true);
106 desc.
add<
bool>(
"simulateElectronBkg",
true);
108 desc.
add<
bool>(
"simulateIntrinsicNoise",
false);
110 desc.
add<
double>(
"instLumi", 7.5);
112 desc.
add<
double>(
"rateFact", 1.0);
114 desc.
add<
double>(
"bxWidth", 25E-9);
115 desc.
add<
double>(
"referenceInstLumi", 5.);
117 desc.
add<
double>(
"resolutionX", 0.03);
123 desc.
add<
double>(
"GE11ModNeuBkgParam0", 5710.23);
124 desc.
add<
double>(
"GE11ModNeuBkgParam1", -43.3928);
125 desc.
add<
double>(
"GE11ModNeuBkgParam2", 0.0863681);
126 desc.
add<
double>(
"GE21ModNeuBkgParam0", 1440.44);
127 desc.
add<
double>(
"GE21ModNeuBkgParam1", -7.48607);
128 desc.
add<
double>(
"GE21ModNeuBkgParam2", 0.0103078);
129 desc.
add<
double>(
"GE11ElecBkgParam0", 406.249);
130 desc.
add<
double>(
"GE11ElecBkgParam1", -2.90939);
131 desc.
add<
double>(
"GE11ElecBkgParam2", 0.00548191);
132 desc.
add<
double>(
"GE21ElecBkgParam0", 97.0505);
133 desc.
add<
double>(
"GE21ElecBkgParam1", -43.3928);
134 desc.
add<
double>(
"GE21ElecBkgParam2", 00.000550599);
136 descriptions.
add(
"simMuonGEMDigisDef", desc);
148 CLHEP::HepRandomEngine* engine = &rng->
getEngine(
e.streamID());
156 auto digis = std::make_unique<GEMDigiCollection>();
157 auto stripDigiSimLinks = std::make_unique<StripDigiSimLinks>();
158 auto gemDigiSimLinks = std::make_unique<GEMDigiSimLinks>();
161 std::map<uint32_t, edm::PSimHitContainer> hitMap;
169 for (
const auto& roll : etaPartitions) {
171 const uint32_t rawId(detId.rawId());
172 const auto&
simHits(hitMap[rawId]);
174 LogDebug(
"GEMDigiProducer") <<
"GEMDigiProducer: found " <<
simHits.size() <<
" hit(s) in eta partition" << rawId;