17 for (
const auto& range : ranges) {
20 int increment = chanLast >= chanFirst ? 1 : -1;
22 if ( (chan - chanFirst)*(chan - chanLast) <= 0 ) {
23 uint16_t offline_channel = counter + increment*(chan - chanFirst);
27 counter += increment*(chanLast - chanFirst) + 1;
41 for (
const auto& range : ranges) {
44 int increment = chanLast >= chanFirst ? 1 : -1;
45 counter += increment*(chanLast - chanFirst) + 1;
63 for (
const auto& range : ranges) {
66 int increment = chanLast >= chanFirst ? 1 : -1;
67 int nchan = increment*(chanLast - chanFirst) + 1;
69 if (AB_channel < counter + nchan) {
70 int chan = chanFirst + increment*(AB_channel - counter);
85 if(mod_radius>0) {elink = 0;
return true;}
86 uint16_t vmm{0}, vmm_chan{0};
113 constexpr uint16_t vmmRemap[8] = { 2, 3, 0, 1, 5, 4, 6, 7 };
114 return vmmRemap[VMM];
129 bool isPivot = (sector_type == 0)^(layer < 4);
141 uint16_t padRow_ATH = pad_grid.first - padRow_AB + 1;
142 uint16_t padCol_ATH = (layer%2==0) ? pad_grid.second - padCol_AB + 1 : padCol_AB;
164 bool isPivot = (sector_type == 0)^(layer < 4);
177 uint16_t padRow_AB = pad_grid.first - padRow_ATH + 1;
178 uint16_t padCol_AB = (layer%2==0) ? pad_grid.second - padCol_ATH + 1 : padCol_ATH;
211 uint16_t padCol_ATH = (sideA) ? pad_grid.second - padCol_NSW + 1 : padCol_NSW;
246 uint16_t padCol_NSW = (sideA) ? pad_grid.second - padCol_ATH + 1 : padCol_ATH;
uint16_t nchannels(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer) const
static uint16_t private_id(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer)
uint16_t Athena_to_AB_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const
uint16_t channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t vmm, uint16_t vmm_chan) const
bool vmm_info(uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint16_t &vmm, uint16_t &vmm_chan) const
bool elink_info(uint8_t channel_type, uint8_t sector_type, uint8_t mod_radius, uint8_t layer, uint16_t channel_number, uint &elink) const
uint16_t geoVmmToRocVmm(uint16_t geoVMM) const
uint16_t Athena_to_NSWID_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const
uint16_t NSWID_to_Athena_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number, bool sideA) const
uint16_t AB_to_Athena_channel_number(uint8_t channel_type, uint8_t sector_type, uint8_t feb_radius, uint8_t layer, uint16_t channel_number) const
static const std::map< uint16_t, std::pair< uint16_t, uint16_t > > s_stgc_pad_grid
static const std::map< uint16_t, std::vector< std::vector< uint8_t > > > s_stgc_channel_map
@ OFFLINE_CHANNEL_TYPE_STRIP
@ OFFLINE_CHANNEL_TYPE_PAD
@ OFFLINE_CHANNEL_TYPE_WIRE