34 for (uint16_t icru = 0; icru < 2; ++icru) {
35 uint16_t
offset = 16 * icru;
36 add(
offset + 0, 6, 0, icru);
37 add(
offset + 1, 7, 0, icru);
38 add(
offset + 2, 4, 0, icru);
39 add(
offset + 3, 5, 0, icru);
40 add(
offset + 8, 2, 0, icru);
41 add(
offset + 9, 3, 0, icru);
42 add(
offset + 10, 0, 0, icru);
43 add(
offset + 11, 1, 0, icru);
45 add(
offset + 4, 0, 1, icru);
46 add(
offset + 5, 1, 1, icru);
47 add(
offset + 6, 2, 1, icru);
48 add(
offset + 7, 3, 1, icru);
49 add(
offset + 12, 6, 1, icru);
50 add(
offset + 13, 7, 1, icru);
51 add(
offset + 14, 4, 1, icru);
52 add(
offset + 15, 5, 1, icru);
62void FEEIdConfig::add(uint16_t gbtUniqueId, uint8_t linkId, uint8_t epId, uint16_t cruId, uint16_t feeId)
65 mLinkUniqueIdToGBTUniqueId[
getLinkUniqueId(linkId, epId, cruId)] = gbtUniqueId;
66 mGBTUniqueIdToFeeId[gbtUniqueId] = feeId;
67 mGBTUniqueIdsInLink[feeId].emplace_back(gbtUniqueId);
70void FEEIdConfig::add(uint16_t gbtUniqueId, uint8_t linkId, uint8_t epId, uint16_t cruId)
73 add(gbtUniqueId, linkId, epId, cruId, 2 * cruId + epId);
79 auto feeId = mLinkUniqueIdToGBTUniqueId.find(linkUniqueId);
80 if (feeId == mLinkUniqueIdToGBTUniqueId.end()) {
81 LOGF(error,
"No FeeId found for: CRUId: %i LinkId: %i EndPointId: %i",
getCRUId(linkUniqueId),
getLinkId(linkUniqueId),
getEndPointId(linkUniqueId));
90 std::vector<uint16_t> configIds;
91 for (
auto& item : mLinkUniqueIdToGBTUniqueId) {
92 configIds.emplace_back(item.second);
94 std::sort(configIds.begin(), configIds.end());
101 std::vector<uint32_t> configIds;
102 for (
auto& item : mLinkUniqueIdToGBTUniqueId) {
103 configIds.emplace_back(item.first);
105 std::sort(configIds.begin(), configIds.end());
112 std::vector<uint16_t> configIds;
113 for (
auto& item : mGBTUniqueIdsInLink) {
114 configIds.emplace_back(item.first);
116 std::sort(configIds.begin(), configIds.end());
120bool FEEIdConfig::load(
const char*
filename)
127 mLinkUniqueIdToGBTUniqueId.clear();
128 mGBTUniqueIdToFeeId.clear();
129 mGBTUniqueIdsInLink.clear();
131 if (!inFile.is_open()) {
134 std::string line, token;
135 while (std::getline(inFile, line)) {
136 int nSpaces = std::count(line.begin(), line.end(),
' ');
140 if (line.find(
'#') < line.find(
' ')) {
143 std::stringstream ss;
145 std::getline(ss, token,
' ');
146 uint16_t gbtUniqueId = std::atoi(token.c_str());
147 std::getline(ss, token,
' ');
148 uint8_t linkId = std::atoi(token.c_str());
149 std::getline(ss, token,
' ');
150 uint8_t epId = std::atoi(token.c_str());
151 std::getline(ss, token,
' ');
152 uint16_t cruId = std::atoi(token.c_str());
153 std::getline(ss, token,
' ');
155 uint16_t feeId = std::atoi(token.c_str());
156 add(gbtUniqueId, linkId, epId, cruId, feeId);
158 add(gbtUniqueId, linkId, epId, cruId);
167 auto feeId = mGBTUniqueIdToFeeId.find(gbtUniqueId);
168 if (feeId == mGBTUniqueIdToFeeId.end()) {
169 std::cout <<
"Error: GBT ID " << gbtUniqueId <<
"not found" << std::endl;
172 return feeId->second;
179 for (
auto&
id : mLinkUniqueIdToGBTUniqueId) {
Hardware Id to FeeId mapper.
uint16_t getFEEId(uint16_t gbtUniqueId) const
Gets the FEE ID from the GBT unique ID.
std::vector< uint32_t > getConfiguredLinkUniqueIDs() const
std::vector< uint16_t > getConfiguredGBTUniqueIDs() const
uint32_t getLinkUniqueId(uint8_t linkId, uint8_t endPointId, uint16_t cruId) const
Gets a uniqueID from the combination of linkId, endPointId and cruId;.
void write(const char *filename) const
uint16_t getCRUId(uint32_t linkUniqueId) const
Gets the CRU ID.
uint16_t getGBTUniqueId(uint32_t linkUniqueId) const
uint8_t getEndPointId(uint32_t linkUniqueId) const
Gets the end point id.
uint8_t getLinkId(uint32_t linkUniqueId) const
Gets the Link ID.
std::vector< uint16_t > getConfiguredFEEIDs() const
uint8_t itsSharedClusterMap uint8_t
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...