24 int nBX, firstBX, lastBX;
37 unsigned int linkId = (block.
header().
getID() - 1) / 2;
88 <<
" not associated with intermediate muons. Skip.";
93 LogDebug(
"L1T") <<
"nBX = " << nBX <<
" first BX = " << firstBX <<
" lastBX = " << lastBX;
97 for (
const auto& bxBlock : bxBlocks) {
98 unpackBx(bxBlock.header().getBx(), bxBlock.payload());
104 unsigned int i = startIdx;
106 if (i +
nWords_ <= payload.size()) {
107 unsigned int muonCnt = 0;
108 for (
unsigned nWord = 0; nWord <
nWords_; nWord += 2, ++muonCnt) {
109 uint32_t raw_data_00_31 = payload[i++];
110 uint32_t raw_data_32_63 = payload[i++];
111 LogDebug(
"L1T") <<
"raw_data_00_31 = 0x" << hex << raw_data_00_31 <<
" raw_data_32_63 = 0x" << raw_data_32_63;
114 LogDebug(
"L1T") <<
"Muon hwPt zero. Skip.";
125 LogDebug(
"L1T") <<
"Mu" << nWord / 2 <<
": eta " << mu.
hwEta() <<
" phi " << mu.
hwPhi() <<
" pT " << mu.
hwPt()
137 <<
" are required. Not unpacking the data for BX " << bx <<
".";
constexpr int32_t ceil(float num)
const std::vector< uint32_t > & payload() const
unsigned int getAlgoVersion()
void getBXRange(int nbx, int &first, int &last)
BlockHeader header() const
static void fillIntermediateMuon(Muon &mu, uint32_t raw_data_00_31, uint32_t raw_data_32_63, unsigned int fw)
static constexpr unsigned ptShift_
void setBXRange(int bxFirst, int bxLast)
BxBlocks getBxBlocks(unsigned int payloadWordsPerBx, bool bxHeader) const
#define DEFINE_L1T_UNPACKER(type)
Log< level::Warning, false > LogWarning
int hwChargeValid() const
static constexpr unsigned ptMask_
void push_back(int bx, T object)