40 std::map<uint32_t, std::vector<uint16_t>> crobMap;
42 std::map<size_t, std::map<size_t, std::map<size_t, std::tuple<int32_t, bool, uint8_t, uint16_t>>>> channelMap;
45 for (
auto entry : digiparset.GetModuleMap()) {
47 const auto moduleId = entry.first;
51 if (!setDet)
continue;
53 auto digipar = entry.second;
56 for (
int icrob(0); icrob <
NCROBMOD; icrob++) {
57 crobMap[moduleId].emplace_back(crobs[icrob] & 0xffff);
59 uint16_t eq_id = (crobs[icrob] >> 16) & 0xffff;
60 if (eq_id) crobMap[moduleId].emplace_back(eq_id);
63 std::vector<int32_t> addresses;
65 for (
auto add : addresses) {
67 const int32_t fasp_in_mod = add - 1000 * moduleId;
68 const int32_t fasp_in_eq = fasp_in_mod % (
NFASPCROB);
69 const int32_t crob_in_mod = fasp_in_mod / (
NFASPCROB);
70 const uint16_t eq_id = crobMap[moduleId][crob_in_mod];
76 for (
int chan = 0; chan < fasppar->
GetNchannels(); chan++) {
79 const bool isMasked = faspch->
IsMasked();
80 uint8_t daq_offset = 0;
83 channelMap[eq_id][fasp_in_eq][chan] = std::make_tuple(pad, isMasked, daq_offset, thres);
98 std::ofstream(
"Trd2dReadoutSetup.yaml") <<
yaml::Dump{}(trd2dConfig);
106 FairParamList parlist;
107 asicparset.putParams(&parlist);
109 std::vector<int> moduleIds(asicparset.GetNrOfModules());
110 parlist.fill(
"ModuleId", moduleIds.data(), moduleIds.size());
112 std::map<size_t, std::map<size_t, std::map<size_t, size_t>>> addressMap;
113 std::map<size_t, std::map<size_t, std::map<size_t, std::map<size_t, size_t>>>>
116 for (
auto module : moduleIds) {
122 std::vector<int> asicAddresses;
125 for (
auto address : asicAddresses) {
127 const uint16_t criId = asicPar->
GetCriId();
128 const uint8_t crobId = asicPar->
GetCrobId();
129 const uint8_t elinkId = asicPar->
GetElinkId(0);
133 addressMap[criId][crobId][elinkId] = address;
134 addressMap[criId][crobId][elinkId + 1] = address;
136 const uint8_t numChans = 16;
137 for (uint8_t chan = 0; chan < numChans; chan++) {
138 auto asicChannelId = (elinkId % 2) == 0 ? chan : chan + numChans;
140 channelMap[criId][crobId][elinkId][chan] = chanAddr;
142 for (uint8_t chan = 0; chan < numChans; chan++) {
143 auto asicChannelId = (elinkId + 1 % 2) == 0 ? chan : chan + numChans;
145 channelMap[criId][crobId][elinkId + 1][chan] = chanAddr;
148 <<
"address " << address <<
" key " << criId <<
" " << unsigned(crobId) <<
" " << unsigned(elinkId);
151 trdConfig.
Init(addressMap, channelMap);
164 for (
int elinkId = 0; elinkId < 36; ++elinkId) {
181 std::ofstream(
"TrdReadoutSetup.yaml") <<
yaml::Dump{}(trdConfig);
void InitChannelMap(const std::map< size_t, std::map< size_t, std::map< size_t, std::tuple< int32_t, bool, uint8_t, uint16_t > > > > &channelMap)
Initialisation of channel map.
void Init(const std::map< size_t, std::map< size_t, std::map< size_t, size_t > > > &addressMap, std::map< size_t, std::map< size_t, std::map< size_t, std::map< size_t, size_t > > > > &channelMap)
Initialisation of readout map.