64 mutable std::atomic_flag
lock_ = ATOMIC_FLAG_INIT;
77 : tPixelDigi{consumes<edm::DetSetVector<PixelDigi>>(
pset.getParameter<
edm::InputTag>(
"InputLabel"))},
78 theBadPixelFEDChannelsToken{consumes<PixelFEDChannelCollection>(
pset.getParameter<
edm::InputTag>(
"InputLabel"))},
79 putToken_{produces<FEDRawDataCollection>()},
80 usePhase1{
pset.getParameter<
bool>(
"UsePhase1")} {
84 edm::LogInfo(
"SiPixelRawToDigi") <<
" Use pilot blade data (FED 40)";
90 while (
lock_.test_and_set(std::memory_order_acquire))
92 auto rel = [](std::atomic_flag*
f) {
f->clear(std::memory_order_release); };
117 digiCounter += (di.data).
size();
118 digis[di.id] = di.data;
121 auto cache = luminosityBlockCache(
ev.getLuminosityBlock().index());
123 LogDebug(
"SiPixelDigiToRaw") <<
cache->cablingTree_->version();
128 for (
auto const& fedChannels : *pixelFEDChannelCollectionHandle) {
130 for (
const auto& fedChannel : fedChannels) {
132 if (
cache->cablingTree_->findItem(
path) !=
nullptr) {
133 detBadChannels.push_back(fedChannel);
136 <<
" FED " << fedChannel.fed <<
" Link " << fedChannel.link <<
" for module " << fedChannels.detId()
137 <<
" marked bad, but this channel does not exist in the cabling map" << endl;
140 if (!detBadChannels.empty())
141 badChannels.insert({fedChannels.detId(), std::move(detBadChannels)});
154 formatter.formatRawData(
ev.id().event(), rawdata, digis, badChannels);
157 for (
auto const* fed :
cache->cablingTree_->fedList()) {
158 LogDebug(
"SiPixelDigiToRaw") <<
" PRODUCE DATA FOR FED_id: " << fed->id();
160 PixelDataFormatter::RawData::iterator fedbuffer = rawdata.find(fed->id());
161 if (fedbuffer != rawdata.end())
166 LogDebug(
"SiPixelDigiToRaw").log([&](
auto&
l) {
167 l <<
"Words/Digis this ev: " << digiCounter <<
"(fm:" << formatter.nDigis() <<
")/" << formatter.nWords();
176 desc.
add<
bool>(
"UsePhase1",
false);
177 desc.
addUntracked<
bool>(
"Timing",
false)->setComment(
"deprecated");
178 descriptions.
add(
"siPixelRawData", desc);