11 #include <framework/logging/Logger.h>
13 #include <arich/dbobjects/ARICHBiasChannelsMapping.h>
19 ARICHBiasChannelsMapping::ARICHBiasChannelsMapping()
23 int ARICHBiasChannelsMapping::getPinID(std::vector<int> channel)
const
25 std::tuple<int, int, int, std::string> pinProp = m_channel2type.find(channel)->second;
26 return std::get<0>(pinProp);
28 int ARICHBiasChannelsMapping::getConnectionID(std::vector<int> channel)
const
30 std::tuple<int, int, int, std::string> pinProp = m_channel2type.find(channel)->second;
31 return std::get<1>(pinProp);
33 int ARICHBiasChannelsMapping::getInnerID(std::vector<int> channel)
const
35 std::tuple<int, int, int, std::string> pinProp = m_channel2type.find(channel)->second;
36 return std::get<2>(pinProp);
38 std::string ARICHBiasChannelsMapping::getType(std::vector<int> channel)
const
40 std::tuple<int, int, int, std::string> pinProp = m_channel2type.find(channel)->second;
41 return std::get<3>(pinProp);
45 std::tuple<int, int, std::string> ARICHBiasChannelsMapping::getInnerConnection(std::vector<int> channel)
const
49 std::tuple<int, int, int, std::string> pinProp = m_channel2type.find(channel)->second;
50 return std::make_tuple(std::get<1>(pinProp), std::get<2>(pinProp), std::get<3>(pinProp));
53 int ARICHBiasChannelsMapping::getChannelID(
int crate,
int slot,
int connectionID,
int innerID,
const std::string& type)
const
55 if (innerID > 9 || innerID < -2 || innerID == 0) { B2WARNING(
"ARICHBiasChannelsMapping::getChannelID: Inner ID " << innerID <<
" not valid!"); }
57 vector<int> channel{ -2, -2, -2};
58 for (
auto& i : m_channel2type) {
59 if ((std::get<1>(i.second) == connectionID) && (std::get<2>(i.second) == innerID) && (std::get<3>(i.second) == type)
60 && ((i.first)[0] == crate) && ((i.first)[1] == slot)) channel = i.first;
64 std::vector<int> ARICHBiasChannelsMapping::getChannelValues(
int connectionID,
int innerID,
const std::string& type)
const
66 if (innerID > 9 || innerID < -2 || innerID == 0) { B2WARNING(
"ARICHBiasChannelsMapping::getChannelID: Inner ID " << innerID <<
" not valid!"); }
68 vector<int> channel{ -2, -2, -2};
69 for (
auto& i : m_channel2type) {
70 if ((std::get<1>(i.second) == connectionID) && (std::get<2>(i.second) == innerID)
71 && (std::get<3>(i.second) == type)) channel = i.first;
77 void ARICHBiasChannelsMapping::addMapping(
int crate,
int slot,
int channelID,
int pinID,
int connectionID,
int innerID,
78 const std::string& type)
81 if (channelID > 47 || channelID < 0) { B2WARNING(
"ARICHBiasChannelsMapping::addMapping: Channel ID number " << channelID <<
" not valid!"); }
82 if (pinID > 46 || pinID < -2 || pinID == 0) { B2WARNING(
"ARICHBiasChannelsMapping::addMapping: Pin ID number " << pinID <<
" not valid!"); }
83 if (innerID > 9 || innerID < -2 || innerID == 0) { B2WARNING(
"ARICHBiasChannelsMapping::addMapping: Inner ID " << innerID <<
" not valid!"); }
85 auto pinProp = std::make_tuple(pinID, connectionID, innerID, type);
86 std::vector<int> channelMap{crate, slot, channelID};
87 m_channel2type.insert(std::pair<std::vector<int>, std::tuple<int, int, int, std::string>>(channelMap, pinProp));
91 void ARICHBiasChannelsMapping::print()
const
94 for (
int crate = 0; crate < 3 ; crate++) {
95 for (
int slot = 0; slot < 15 ; slot++) {
96 for (
int channelID = 0; channelID < N_BIASCHANNELS; channelID++) {
97 std::vector<int> channel{crate, slot, channelID};
98 cout <<
" Channel " << channelID <<
" (crate " << crate <<
", slot " << slot <<
"): pinID " << getPinID(
99 channel) <<
", inner pin " << std::get<0>(getInnerConnection(channel)) <<
", inner type " << std::get<1>(getInnerConnection(