50 class HepRandomEngine;
68 typedef std::map<unsigned int, std::vector<PSimHit>>
simhit_map;
72 std::map<RPDetId, std::unique_ptr<RPDetDigitizer>>
theAlgoMap;
92 produces<edm::DetSetVector<TotemRPDigi>>();
102 "simulateDeadChannels")) {
124 <<
"This class requires the RandomNumberGeneratorService\n"
125 "which is not present in the configuration file. You must add the service\n"
126 "in the configuration file or remove the modules that require it.";
133 iEvent.getByLabel(
"mix",
"g4SimHitsTotemHitsRP", cf);
136 edm::LogInfo(
"RPDigiProducer") <<
"\n\n=================== Starting SimHit access"
137 <<
" ==================="
143 for (cfi =
col.begin(); cfi !=
col.end(); cfi++) {
144 edm::LogInfo(
"RPDigiProducer") <<
" Hit " <<
count <<
" has tof " << cfi->timeOfFlight() <<
" trackid "
145 << cfi->trackId() <<
" bunchcr " << cfi.
bunch() <<
" trigger " << cfi.
getTrigger()
146 <<
", from EncodedEventId: " << cfi->eventId().bunchCrossing() <<
" "
147 << cfi->eventId().event() <<
" bcr from MixCol " << cfi.
bunch() <<
"\n";
148 edm::LogInfo(
"RPDigiProducer") <<
" Hit: " << (*cfi) <<
"\n";
156 edm::LogInfo(
"RPDigiProducer") <<
"Input MixCollection size = " << allRPHits.size() <<
"\n";
163 for (isim = allRPHits.begin(); isim != allRPHits.end(); ++isim) {
164 simHitMap_[(*isim).detUnitId()].push_back((*isim));
168 std::vector<edm::DetSet<TotemRPDigi>> DigiVector;
169 DigiVector.reserve(400);
180 std::vector<int> input_links;
184 ->
run(simHitMap_[it->first], input_links, digi_collector.
data, output_digi_links);
186 if (!digi_collector.
data.empty()) {
195 edm::LogInfo(
"RPDigiProducer") <<
"digi_output->size()=" << digi_output->size() <<
"\n";
215 for (std::vector<TotemRPDigi>::const_iterator stripIterator = rpstrip_detset.
data.begin();
216 stripIterator < rpstrip_detset.
data.end();
218 rpdigi_detset.push_back(
TotemRPDigi(stripIterator->stripNumber()));
221 return rpdigi_detset;
228 desc.
add<
bool>(
"RPLandauFluctuations",
true);
229 desc.
add<
bool>(
"RPDisplacementOn",
false);
230 desc.
add<
int>(
"RPVerbosity", 0);
231 desc.
add<
double>(
"RPVFATThreshold", 9000.0);
232 desc.
add<
double>(
"RPTopEdgePosition", 1.5);
233 desc.
add<
double>(
"RPActiveEdgeSmearing", 0.013);
234 desc.
add<
double>(
"RPEquivalentNoiseCharge300um", 1000.0);
235 desc.
add<
int>(
"RPVFATTriggerMode", 2);
236 desc.
add<std::vector<double>>(
"RPInterStripSmearing",
240 desc.
add<
double>(
"RPSharingSigmas", 5.0);
241 desc.
add<
double>(
"RPGeVPerElectron", 3.61e-09);
242 desc.
add<
double>(
"RPActiveEdgePosition", 0.034);
243 desc.
add<
bool>(
"RPDeadStripSimulationOn",
false);
244 desc.
add<std::vector<std::string>>(
"ROUList",
248 desc.
add<
bool>(
"RPNoNoise",
false);
249 desc.
add<
bool>(
"RPDigiSimHitRelationsPresistence",
false);
251 desc.
add<
int>(
"RPChargeDivisionsPerThickness", 5);
252 desc.
add<
double>(
"RPDeltaProductionCut", 0.120425);
253 desc.
add<
double>(
"RPBottomEdgePosition", 1.5);
254 desc.
add<
double>(
"RPBottomEdgeSmearing", 0.011);
255 desc.
add<
double>(
"RPTopEdgeSmearing", 0.011);
257 desc.
add<
double>(
"RPInterStripCoupling",
259 desc.
add<
double>(
"RPDeadStripProbability", 0.001);
260 desc.
add<
int>(
"RPChargeDivisionsPerStrip", 15);
261 descriptions.
add(
"RPSiDetDigitizer", desc);