22#include "fmt/format.h"
38void CrateMapper::init()
62 for (
int icrate = 0; icrate < 2; ++icrate) {
63 uint8_t crateId = (icrate == 0) ? 1 : 3;
64 uint8_t columnId = (icrate == 0) ? 1 : 2;
104 for (
int icrate = 0; icrate < 3; ++icrate) {
105 uint16_t crateId = icrate + 4;
106 uint8_t columnId = icrate + 3;
128 uint8_t rpcLineId = 0;
129 for (uint8_t iboard = 0; iboard < 9; ++iboard) {
134 for (
auto& item : mROToDEMap) {
135 mDEToROMap.emplace(item.second, item.first);
139 for (
auto& item : mROToDEMap) {
147 if ((crateId == 0 && locId == 8) ||
148 (crateId == 2 && (locId == 0 || locId == 8))) {
153 mLocIdsWithDirectInputY.emplace(item.first);
161 if (item == mDEToROMap.end()) {
162 throw std::runtime_error(fmt::format(
"Non-existent deId: {:d} columnId: {:d} lineId: {:d}", deId, columnId, lineId));
169 auto item = mROToDEMap.find(getROBoardIdRight(uniqueLocId));
170 if (item == mROToDEMap.end()) {
171 throw std::runtime_error(fmt::format(
"Non-existent crateId: {:d} boardId: {:d}",
raw::getCrateId(uniqueLocId),
raw::getLocId(uniqueLocId)));
178 std::vector<uint8_t> roBoardIds;
179 std::array<uint8_t, 2>
offsets{0, 0x80};
180 for (
auto& item : mROToDEMap) {
184 auto locId = item.first + off;
185 if (gbtUniqueId != 0xFFFF) {
190 roBoardIds.emplace_back(locId);
193 std::sort(roBoardIds.begin(), roBoardIds.end());
Mapper to convert the RO Ids to a format suitable for O2.
Useful detector parameters for MID.
Structure to store the readout board information.
std::vector< uint8_t > getROBoardIds(uint16_t gbtUniqueId=0xFFFF) const
Returns the list of local board IDs (RO convention)
bool hasDirectInputY(uint8_t uniqueLocId) const
Checks if local board ID (RO convention) has direct input from FEE y strips.
uint8_t deLocalBoardToRO(uint8_t deId, uint8_t columnId, uint8_t lineId) const
Converts the LOC ID expressed in the offline convention into the readout convention.
uint16_t roLocalBoardToDE(uint8_t uniqueLocId) const
Converts the LOC ID expressed in readout convention into the LOC ID in MT11 right in the offline conv...
GLuint GLsizei const GLuint const GLintptr * offsets
uint16_t makeUniqueFEEId(int deId, int columnId, int lineId)
bool isRightSide(int deId)
int getLineIdFromFEEId(uint16_t uniqueFEEId)
bool isBoardInGBT(uint8_t uniqueLocId, uint16_t gbtUniqueId)
uint8_t getCrateId(uint8_t uniqueLocId)
uint8_t makeUniqueLocID(uint8_t crateId, uint8_t locId)
uint8_t getLocId(uint8_t uniqueLocId)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...