66 hitsProducer_(iConfig.getParameter<
std::
string>(
"hitsProducer")),
71 isOuterTrackerReadoutAnalog_(iConfig.getParameter<
bool>(
"isOTreadoutAnalog")),
72 premixStage1_(iConfig.getParameter<
bool>(
"premixStage1")),
74 iConfig.getParameter<
edm::
ParameterSet>(
"AlgorithmCommon").getUntrackedParameter<
bool>(
"makeDigiSimLinks")) {
102 size_t globalSimHitIndex,
103 const uint32_t tofBin) {
104 if (hSimHits.isValid()) {
105 std::set<uint32_t> detIds;
106 auto const&
simHits = *(hSimHits.product());
108 uint32_t detId_raw = (*it).detUnitId();
113 if (detIds.insert(detId_raw).second) {
124 kiter->second->accumulateSimHits(it, itEnd, globalSimHitIndex, tofBin, phase2det, bfield);
126 edm::LogInfo(
"Phase2TrackerDigitizer") <<
"Unsupported algorithm: ";
136 <<
"Phase2TrackerDigitizer requires the RandomNumberGeneratorService\n"
137 "which is not present in the configuration file. You must add the service\n"
138 "in the configuration file or remove the modules that require it.";
151 uint32_t rawId = det_u->geographicalId().rawId();
163 el.second->init(iSetup);
165 el.second->initializeEvent(rng->
getEngine(
e.streamID()));
175 accumulate_local<edm::Event>(
iEvent, iSetup);
181 accumulate_local<PileUpEventPrincipal>(
iEvent, iSetup);
195 if (
v.find(
std::string(
"HighTof")) != std::string::npos)
212 algo.loadAccumulator(detMap.first, detMap.second);
221 addOuterTrackerCollection<PixelDigi>(
iEvent, iSetup);
223 addOuterTrackerCollection<Phase2TrackerDigi>(
iEvent, iSetup);
267 edm::LogError(
"Phase2TrackerDigitizer") <<
"ERROR - Wrong Detector Type, No Algorithm available ";
274 const bool ot_analog) {
275 std::vector<edm::DetSet<PixelDigi> > digiVector;
276 std::vector<edm::DetSet<PixelDigiSimLink> > digiLinkVector;
278 uint32_t rawId = det_u->geographicalId().rawId();
280 auto fiter =
algomap_.find(algotype);
288 std::map<int, DigitizerUtility::DigiSimInfo> digi_map;
289 fiter->second->digitize(dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u), digi_map,
tTopo_);
293 for (
auto const& digi_p : digi_map) {
296 collector.
data.emplace_back(ip.first, ip.second,
info.sig_tot);
297 for (
auto const& sim_p :
info.simInfoList) {
298 linkcollector.
data.emplace_back(digi_p.first,
299 sim_p.second->trackId(),
300 sim_p.second->hitIndex(),
301 sim_p.second->tofBin(),
302 sim_p.second->eventId(),
306 if (!collector.
data.empty())
307 digiVector.push_back(
std::move(collector));
308 if (!linkcollector.
data.empty())
309 digiLinkVector.push_back(
std::move(linkcollector));
313 auto output = std::make_unique<edm::DetSetVector<PixelDigi> >(digiVector);
314 auto outputlink = std::make_unique<edm::DetSetVector<PixelDigiSimLink> >(digiLinkVector);
329 collector.
data.emplace_back(ip.first, ip.second,
info.sig_tot);
335 collector.
data.emplace_back(ip.first, ip.second,
info.ot_bit);
339 template <
typename DigiType>
341 std::vector<edm::DetSet<DigiType> > digiVector;
342 std::vector<edm::DetSet<PixelDigiSimLink> > digiLinkVector;
344 uint32_t rawId = det_u->geographicalId().rawId();
347 auto fiter =
algomap_.find(algotype);
351 std::map<int, DigitizerUtility::DigiSimInfo> digi_map;
352 fiter->second->digitize(dynamic_cast<const Phase2TrackerGeomDetUnit*>(det_u), digi_map,
tTopo_);
356 for (
auto const& digi_p : digi_map) {
358 addToCollector(collector, digi_p.first,
info);
359 for (
auto const& sim_p :
info.simInfoList) {
360 linkcollector.
data.emplace_back(digi_p.first,
361 sim_p.second->trackId(),
362 sim_p.second->hitIndex(),
363 sim_p.second->tofBin(),
364 sim_p.second->eventId(),
369 if (!collector.
data.empty())
370 digiVector.push_back(
std::move(collector));
371 if (!linkcollector.
data.empty())
372 digiLinkVector.push_back(
std::move(linkcollector));
376 auto output = std::make_unique<edm::DetSetVector<DigiType> >(digiVector);
377 auto outputlink = std::make_unique<edm::DetSetVector<PixelDigiSimLink> >(digiLinkVector);