Definition at line 137 of file L1TRawToDigi.cc.
References amc13HeaderSize_, amc13TrailerSize_, amcHeaderSize_, l1t::stage2::layer2::demux::amcSlotNum, amcTrailerSize_, groupFilesInBlocks::block, FEDHeader::bxID(), FEDHeader::check(), FEDTrailer::check(), coll, gather_cfg::cout, FEDTrailer::crc(), ctp7_mode_, FEDRawData::data(), data, debug_, TauDecayModes::dec, dmxFwId_, end, FEDTrailer::evtStatus(), FEDRawDataCollection::FEDData(), fedData_, l1t::stage2::layer2::fedId, fedIds_, FEDTrailer::fragmentLength(), fwId_, fwOverride_, RecoTauValidation_cfi::header, edm::HandleBase::isValid(), LogDebug, FEDHeader::lvl1ID(), minFeds_, mtf7_mode_, l1t::stage2::layer2::mp::offsetBoardId, amc13::Packet::parse(), jets_cff::payload, amc13::Packet::payload(), prov_, FEDRawData::size(), slinkHeaderSize_, slinkTrailerSize_, FEDHeader::sourceID(), tmtCheck_, FEDHeader::triggerType(), FEDTrailer::ttsBits(), FEDHeader::version(), warnsa_, and warnsb_.
Referenced by JSONExport.JsonExport::export(), HTMLExport.HTMLExport::export(), and HTMLExport.HTMLExportStatic::export().
141 std::unique_ptr<UnpackerCollections>
coll =
prov_->getCollections(event);
147 LogError(
"L1T") <<
"Cannot unpack: no FEDRawDataCollection found";
151 unsigned valid_count = 0;
155 LogDebug(
"L1T") <<
"Found FEDRawDataCollection with ID " <<
fedId <<
" and size " << l1tRcd.
size();
158 if (l1tRcd.
size() > 0) {
159 LogError(
"L1T") <<
"Cannot unpack: invalid L1T raw data (size = " 160 << l1tRcd.
size() <<
") for ID " <<
fedId <<
". Returning empty collections!";
163 LogInfo(
"L1T") <<
"During unpacking, encountered empty L1T raw data (size = " 164 << l1tRcd.
size() <<
") for FED ID " <<
fedId <<
".";
171 const unsigned char *
data = l1tRcd.
data();
175 LogDebug(
"L1T") <<
"Found SLink header:" 176 <<
" Trigger type " <<
header.triggerType()
177 <<
" L1 event ID " <<
header.lvl1ID()
178 <<
" BX Number " <<
header.bxID()
179 <<
" FED source " <<
header.sourceID()
180 <<
" FED version " <<
header.version();
182 LogWarning(
"L1T") <<
"Did not find a SLink header!";
187 if (trailer.check()) {
188 LogDebug(
"L1T") <<
"Found SLink trailer:" 189 <<
" Length " << trailer.fragmentLength()
190 <<
" CRC " << trailer.crc()
191 <<
" Status " << trailer.evtStatus()
192 <<
" Throttling bits " << trailer.ttsBits();
194 LogWarning(
"L1T") <<
"Did not find a SLink trailer!";
212 <<
"Could not extract AMC13 Packet.";
220 auto payload64 =
amc.data();
221 const uint32_t *
start = (
const uint32_t*) payload64.get();
224 const uint32_t *
end = start + (
amc.size() * 2);
226 std::unique_ptr<Payload>
payload;
228 LogDebug(
"L1T") <<
"Using CTP7 mode";
232 LogDebug(
"L1T") <<
"Using MTF7 mode";
235 LogDebug(
"L1T") <<
"Using MP7 mode";
236 payload.reset(
new MP7Payload(start, end, legacy_mc));
238 unsigned fw = payload->getAlgorithmFWVersion();
239 unsigned board =
amc.blockHeader().getBoardID();
240 unsigned amc_no =
amc.blockHeader().getAMCNumber();
246 else if (
fedId == 1366)
250 auto unpackers =
prov_->getUnpackers(
fedId, board, amc_no, fw);
253 std::unique_ptr<Block>
block;
254 while ((block = payload->getBlock()).
get()) {
258 unsigned bxId =
header.bxID();
259 unsigned unpackTMT = ( !
tmtCheck_ || ( ( tmtId - 1 ) == ( ( bxId - 1 + 3 ) % 9 ) ) );
262 if( !isCaloL2TMT || unpackTMT ) {
264 std::cout <<
">>> block to unpack <<<" << std::endl
265 <<
"hdr: " << std::hex << std::setw(8) << std::setfill(
'0') << block->header().raw() <<
std::dec 266 <<
" (ID " << block->header().getID() <<
", size " << block->header().getSize()
267 <<
", CapID 0x" << std::hex << std::setw(2) << std::setfill(
'0') << block->header().getCapID()
269 for (
const auto& word: block->payload()) {
271 std::cout <<
"data: " << std::hex << std::setw(8) << std::setfill(
'0') << word <<
std::dec << std::endl;
275 auto unpacker = unpackers.find(block->header().getID());
277 block->amc(
amc.header());
279 if (unpacker == unpackers.end()) {
280 LogDebug(
"L1T") <<
"Cannot find an unpacker for" 281 <<
"\n\tblock: ID " << block->header().getID() <<
", size " << block->header().getSize()
282 <<
"\n\tAMC: # " << amc_no <<
", board ID 0x" << std::hex << board <<
std::dec 283 <<
"\n\tFED ID " <<
fedId <<
", and FW ID " << fw;
285 }
else if (!unpacker->second->unpack(*block, coll.get())) {
286 LogDebug(
"L1T") <<
"Error unpacking data for block ID " 287 << block->header().getID() <<
", AMC # " << amc_no
288 <<
", board ID " << board <<
", FED ID " <<
fedId 289 <<
", and FW ID " << fw <<
"!";
299 LogWarning(
"L1T") <<
"Unpacked " << valid_count <<
" non-empty FED IDs but minimum is set to " <<
minFeds_ <<
"\n";
std::vector< amc::Packet > payload() const
size_t size() const
Lenght of the data buffer in bytes.
const FEDRawData & FEDData(int fedid) const
retrieve data for fed
const unsigned int offsetBoardId
std::vector< int > fedIds_
const unsigned int amcSlotNum
unsigned long long uint64_t
bool parse(const uint64_t *start, const uint64_t *data, unsigned int size, unsigned int lv1, unsigned int bx, bool legacy_mc=false, bool mtf7_mode=false)
char data[epos_bytes_allocation]
std::unique_ptr< PackingSetup > prov_
edm::EDGetTokenT< FEDRawDataCollection > fedData_
const unsigned char * data() const
Return a const pointer to the beginning of the data buffer.