Implements edm::one::EDProducerBase.
Definition at line 109 of file L1TRawToDigi.cc.
References amc, amc13HeaderSize_, amc13TrailerSize_, amcHeaderSize_, amcTrailerSize_, createPayload::block, FEDHeader::bxID(), FEDTrailer::check(), FEDHeader::check(), coll, FEDTrailer::crc(), data, end, FEDTrailer::evtStatus(), fedData_, fedId_, fwId_, l1t::BlockHeader::getID(), l1t::BlockHeader::getSize(), FEDTrailer::lenght(), LogDebug, FEDHeader::lvl1ID(), prov_, slinkHeaderSize_, slinkTrailerSize_, FEDHeader::sourceID(), FEDHeader::triggerType(), FEDTrailer::ttsBits(), dt_dqm_sourceclient_common_cff::unpackers, and FEDHeader::version().
Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().
113 std::unique_ptr<UnpackerCollections>
coll =
prov_->getCollections(event);
118 if (!feds.isValid()) {
119 LogError(
"L1T") <<
"Cannot unpack: no collection found";
125 LogDebug(
"L1T") <<
"Found FEDRawDataCollection with ID " <<
fedId_ <<
" and size " << l1tRcd.size();
133 const unsigned char *
data = l1tRcd.data();
136 if (header.check()) {
137 LogDebug(
"L1T") <<
"Found SLink header:"
138 <<
" Trigger type " << header.triggerType()
139 <<
" L1 event ID " << header.lvl1ID()
140 <<
" BX Number " << header.bxID()
141 <<
" FED source " << header.sourceID()
142 <<
" FED version " << header.version();
144 LogWarning(
"L1T") <<
"Did not find a SLink header!";
149 if (trailer.check()) {
150 LogDebug(
"L1T") <<
"Found SLink trailer:"
151 <<
" Length " << trailer.lenght()
152 <<
" CRC " << trailer.crc()
153 <<
" Status " << trailer.evtStatus()
154 <<
" Throttling bits " << trailer.ttsBits();
156 LogWarning(
"L1T") <<
"Did not find a SLink trailer!";
164 <<
"Could not extract AMC13 Packet.";
168 for (
auto&
amc: packet.payload()) {
169 auto payload64 =
amc.data();
170 const uint32_t * payload = (
const uint32_t*) payload64.get();
171 const uint32_t *
end = payload + (
amc.size() * 2);
182 unsigned board =
amc.header().getBoardID();
186 while (payload != end) {
192 if (end - payload < block_hdr.getSize()) {
194 <<
"Expecting a block size of " << block_hdr.getSize()
195 <<
" but only " << (end - payload) <<
" words remaining";
199 Block block(block_hdr, payload, payload + block_hdr.getSize());
201 auto unpacker =
unpackers.find(block_hdr.getID());
207 }
else if (!unpacker->second->unpack(
block,
coll.get())) {
208 LogWarning(
"L1T") <<
"Error unpacking data for block ID "
209 << block_hdr.getID() <<
", FED ID " <<
fedId_ <<
", and FW ID "
214 payload += block_hdr.getSize();
std::auto_ptr< PackingSetup > prov_
unsigned long long uint64_t
char data[epos_bytes_allocation]
edm::EDGetTokenT< FEDRawDataCollection > fedData_