@@ -229,6 +229,20 @@ class ChipMappingITS
229229 return sid + ruOnLr;
230230 }
231231
232+ static constexpr int getLayer (int chipSW)
233+ {
234+ int i = 0 ;
235+ do {
236+ if (chipSW < FirstChipsOnLr[i]) {
237+ break ;
238+ }
239+ } while (++i < NLayers);
240+ return i;
241+ }
242+
243+ static constexpr int getNChipsOnLayer (int lr) { return NChipsOnLr[lr]; }
244+ static constexpr int getFirstChipsOnLayer (int lr) { return FirstChipsOnLr[lr]; }
245+
232246 // sub-barrel types, their number, N layers, Max N GBT Links per RU
233247 static constexpr int IB = 0 , MB = 1 , OB = 2 , NSubB = 3 , NLayers = 7 , NLinks = 3 ;
234248
@@ -256,6 +270,12 @@ class ChipMappingITS
256270 // /< number of staves per layer
257271 static constexpr std::array<int , NLayers> FirstStaveOnLr = {0 , 12 , 28 , 48 , 72 , 102 , 144 };
258272
273+ // /< number of chips per layer
274+ static constexpr std::array<int , NLayers> NChipsOnLr = {108 , 144 , 180 , 2688 , 3360 , 8232 , 144 };
275+
276+ // /< 1st chipID on layer
277+ static constexpr std::array<int , NLayers> FirstChipsOnLr = {0 , 108 , 252 , 432 , 3120 , 6480 , 9408 };
278+
259279 // /< RU types for each layer
260280 static constexpr std::array<uint8_t , NLayers> RUTypeLr = {IB , IB , IB , MB , MB , OB , OB };
261281
0 commit comments