31 mResponse.
set(configurations);
34void GBTUserLogicEncoder::addShort(std::vector<char>&
buffer, uint16_t shortWord)
const
37 buffer.emplace_back((shortWord >> 8) & 0xFF);
38 buffer.emplace_back(shortWord & 0xFF);
44 auto&
vec = mBoards[
ir];
46 vec.insert(
vec.end(), boards.begin(), boards.end());
54 std::vector<ROBoard> zsLocs;
55 for (
auto& loc :
data) {
57 zsLocs.emplace_back(loc);
61 auto&
vec = mBoards[
ir];
62 vec.insert(
vec.end(), zsLocs.begin(), zsLocs.end());
68 auto& vecReg = mBoards[irReg];
69 vecReg.insert(vecReg.end(), regs.begin(), regs.end());
75 std::map<InteractionRecord, std::vector<ROBoard>> tmpBoards;
76 for (
auto& item : mBoards) {
77 if (item.first <=
ir) {
78 for (
auto& loc : item.second) {
79 buffer.emplace_back(loc.statusWord);
80 buffer.emplace_back(loc.triggerWord);
81 addShort(
buffer, item.first.bc);
83 buffer.emplace_back(mCrateId << 4);
85 for (
int ich = 4; ich >= 0; --ich) {
86 if (loc.firedChambers & (1 << ich)) {
87 addShort(
buffer, loc.patternsBP[ich]);
88 addShort(
buffer, loc.patternsNBP[ich]);
94 tmpBoards[item.first] = item.second;
97 mBoards.swap(tmpBoards);
Raw data encoder for MID GBT user logic.
void process(gsl::span< const ROBoard > data, InteractionRecord ir)
void flush(std::vector< char > &buffer, const InteractionRecord &ir)
void processTrigger(const InteractionRecord &ir, uint8_t triggerWord)
void setConfig(uint16_t gbtUniqueId, const std::vector< ROBoardConfig > &configurations)
std::vector< ROBoard > getRegionalResponse(const std::vector< ROBoard > &locs) const
std::vector< ROBoard > getTriggerResponse(uint8_t triggerWord) const
bool isZeroSuppressed(const ROBoard &loc) const
Returns true if the local board has no fired digits after zero suppression.
void set(const std::vector< ROBoardConfig > &configurations)
uint8_t getCrateIdFromGBTUniqueId(uint16_t gbtUniqueId)
Gets the crate ID from the GBT unique ID.
uint8_t getGBTIdInCrate(uint16_t gbtUniqueId)
Gets the link ID in crate from the RO ID.
bool isLoc(uint8_t statusWord)
uint8_t getLocId(uint8_t uniqueLocId)
void applyElectronicsDelay(uint32_t &orbit, uint16_t &bc, int16_t delay, uint16_t maxBunches=constants::lhc::LHCMaxBunches)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
int16_t localToReg
Delay between regional board and local board answers.
std::vector< o2::ctf::BufferType > vec
o2::InteractionRecord ir(0, 0)