20 const unsigned nRowInQRow,
const unsigned nEventsPerStream,
const bool plainHitMap,
21 const bool dropToT): m_nCol(nCol/nColInCCol), m_nRow(nRow/nRowInQRow),
22 m_nColInCCol(nColInCCol), m_nRowInQRow(nRowInQRow), m_nEventsPerStream(nEventsPerStream),
23 m_plainHitMap(plainHitMap), m_dropToT(dropToT){
37 if (
length <= (63 - m_currBit)){
42 m_currBlock |= (
value << (63 - m_currBit -
length));
52 uint8_t remainingBits = 63 - m_currBit;
55 m_currBlock |= ((
value >> (
length - remainingBits)));
68 addBits64((
value & (0xFFFFFFFFFFFFFFFF >> (64 - leftoverBits))), leftoverBits);
81 uint32_t word2 = m_currBlock & 0xFFFFFFFF;
82 m_words.push_back(
word1);
83 m_words.push_back(word2);
100 std::vector<uint16_t> tots;
105 if (m_hitMap(pixCol, pixRow)){
106 lutIndex |= 0x1 <<
pix;
107 tots.push_back(m_hitMap(pixCol, pixRow) - 1);
123 for (
auto& tot : tots){
136 if (m_hitMap(pixCol, pixRow))
return true;
148 m_hitQCores = std::vector<std::vector<bool>>(
m_nCCol, std::vector<bool>(
m_nQRow,
false));
149 m_lastQRow = std::vector<unsigned> (
m_nCCol, 0);
151 for (
unsigned CCol = 0; CCol <
m_nCCol; CCol++){
152 for (
unsigned QRow = 0; QRow <
m_nQRow; QRow++){
154 m_hitQCores[CCol][QRow] =
hitInQCore(CCol, QRow);
160 if (m_hitQCores[CCol][QRow]) m_lastQRow[CCol] = QRow + 1;
174 for (
unsigned CCol = 0; CCol <
m_nCCol; CCol++){
176 if (m_lastQRow[CCol] == 0)
continue;
180 int previousQRow = -666;
181 for (
unsigned QRow = 0; QRow <
m_nQRow; QRow++){
183 if (!m_hitQCores[CCol][QRow])
continue;
189 if (QRow == (
uint)previousQRow + 1){
225 std::lock_guard<std::mutex> lock(
m_mutex);