CMS 3D CMS Logo

SimplePixelTopology.h
Go to the documentation of this file.
1 #ifndef Geometry_CommonTopologies_SimplePixelTopology_h
2 #define Geometry_CommonTopologies_SimplePixelTopology_h
3 
4 #include <array>
5 #include <cstdint>
6 #include <type_traits>
8 
9 namespace pixelTopology {
10 
12  constexpr uint32_t maxLayers = 28;
13 
14  template <typename TrackerTraits>
16  //
17  float ladderZ[TrackerTraits::numberOfLaddersInBarrel];
18  float ladderX[TrackerTraits::numberOfLaddersInBarrel];
19  float ladderY[TrackerTraits::numberOfLaddersInBarrel];
20  float ladderR[TrackerTraits::numberOfLaddersInBarrel];
21  float ladderMinZ[TrackerTraits::numberOfLaddersInBarrel];
22  float ladderMaxZ[TrackerTraits::numberOfLaddersInBarrel];
23  float endCapZ[2]; // just for pos and neg Layer1
24  };
25 
26  constexpr int16_t phi0p05 = 522; // round(521.52189...) = phi2short(0.05);
27  constexpr int16_t phi0p06 = 626; // round(625.82270...) = phi2short(0.06);
28  constexpr int16_t phi0p07 = 730; // round(730.12648...) = phi2short(0.07);
29  constexpr int16_t phi0p09 = 900;
30 
31  constexpr uint16_t last_barrel_layer = 3; // this is common between all the topologies
32 
33  template <class Function, std::size_t... Indices>
34  constexpr auto map_to_array_helper(Function f, std::index_sequence<Indices...>)
35  -> std::array<std::invoke_result_t<Function, std::size_t>, sizeof...(Indices)> {
36  return {{f(Indices)...}};
37  }
38 
39  template <int N, class Function>
40  constexpr auto map_to_array(Function f) -> std::array<std::invoke_result_t<Function, std::size_t>, N> {
41  return map_to_array_helper(f, std::make_index_sequence<N>{});
42  }
43 
44  template <typename TrackerTraits>
46  bool go = true;
47  int n = 2;
48  while (go) {
49  for (uint8_t i = 1; i < TrackerTraits::numberOfLayers + 1; ++i) {
50  if (TrackerTraits::layerStart[i] % n != 0) {
51  go = false;
52  break;
53  }
54  }
55  if (!go)
56  break;
57  n *= 2;
58  }
59  return n / 2;
60  }
61 
62  template <typename TrackerTraits>
63  constexpr uint16_t maxModuleStride = findMaxModuleStride<TrackerTraits>();
64 
65  template <typename TrackerTraits>
66  constexpr uint8_t findLayer(uint32_t detId, uint8_t sl = 0) {
67  for (uint8_t i = sl; i < TrackerTraits::numberOfLayers + 1; ++i)
69  return i;
71  }
72 
73  template <typename TrackerTraits>
74  constexpr uint8_t findLayerFromCompact(uint32_t detId) {
75  detId *= maxModuleStride<TrackerTraits>;
76  for (uint8_t i = 0; i < TrackerTraits::numberOfLayers + 1; ++i)
78  return i;
80  }
81 
82  template <typename TrackerTraits>
83  constexpr uint32_t layerIndexSize = TrackerTraits::numberOfModules / maxModuleStride<TrackerTraits>;
84 
85  template <typename TrackerTraits>
86 #ifdef __CUDA_ARCH__
88 #endif
89  constexpr std::array<uint8_t, layerIndexSize<TrackerTraits>>
90  layer = map_to_array<layerIndexSize<TrackerTraits>>(findLayerFromCompact<TrackerTraits>);
91 
92  template <typename TrackerTraits>
93  constexpr uint8_t getLayer(uint32_t detId) {
94  return layer<TrackerTraits>[detId / maxModuleStride<TrackerTraits>];
95  }
96 
97  template <typename TrackerTraits>
99  bool res = true;
100  for (auto i = 0U; i < TrackerTraits::numberOfModules; ++i) {
101  auto j = i / maxModuleStride<TrackerTraits>;
102  res &= (layer<TrackerTraits>[j] < TrackerTraits::numberOfLayers);
103  res &= (i >= TrackerTraits::layerStart[layer<TrackerTraits>[j]]);
104  res &= (i < TrackerTraits::layerStart[layer<TrackerTraits>[j] + 1]);
105  }
106  return res;
107  }
108 
109  template <typename TrackerTraits>
110 #ifdef __CUDA_ARCH__
111  __device__
112 #endif
113  constexpr inline uint32_t
114  layerStart(uint32_t i) {
116  }
117 
118  constexpr inline uint16_t divu52(uint16_t n) {
119  n = n >> 2;
120  uint16_t q = (n >> 1) + (n >> 4);
121  q = q + (q >> 4) + (q >> 5);
122  q = q >> 3;
123  uint16_t r = n - q * 13;
124  return q + ((r + 3) >> 4);
125  }
126 } // namespace pixelTopology
127 
129 
133 
134  constexpr uint32_t numberOfLayers = 28;
135  constexpr int nPairs = 13 + 2 + 4;
136  constexpr uint16_t numberOfModules = 1856;
137 
139 
140  constexpr uint32_t max_ladder_bpx0 = 12;
143  constexpr float module_tolerance_bpx0 = 0.4f; // projection to cylinder is inaccurate on BPIX1
144  constexpr uint32_t max_ladder_bpx4 = 64;
146  constexpr float radius_even_ladder = 15.815f;
147  constexpr float radius_odd_ladder = 16.146f;
152 
154  0, 1, 0, 4, 0, 7, // BPIX1 (3)
155  1, 2, 1, 4, 1, 7, // BPIX2 (6)
156  4, 5, 7, 8, // FPIX1 (8)
157  2, 3, 2, 4, 2, 7, 5, 6, 8, 9, // BPIX3 & FPIX2 (13)
158  0, 2, 1, 3, // Jumping Barrel (15)
159  0, 5, 0, 8, // Jumping Forward (BPIX1,FPIX2)
160  4, 6, 7, 9 // Jumping Forward (19)
161  };
162 
164  phi0p07,
165  phi0p07,
166  phi0p05,
167  phi0p06,
168  phi0p06,
169  phi0p05,
170  phi0p05,
171  phi0p06,
172  phi0p06,
173  phi0p06,
174  phi0p05,
175  phi0p05,
176  phi0p05,
177  phi0p05,
178  phi0p05,
179  phi0p05,
180  phi0p05,
181  phi0p05};
183  -20., 0., -30., -22., 10., -30., -70., -70., -22., 15., -30, -70., -70., -20., -22., 0, -30., -70., -70.};
185  20., 30., 0., 22., 30., -10., 70., 70., 22., 30., -15., 70., 70., 20., 22., 30., 0., 70., 70.};
187  20., 9., 9., 20., 7., 7., 5., 5., 20., 6., 6., 5., 5., 20., 20., 9., 9., 9., 9.};
188 
189  static constexpr uint32_t layerStart[numberOfLayers + 1] = {0,
190  96,
191  320,
192  672, // barrel
193  1184,
194  1296,
195  1408, // positive endcap
196  1520,
197  1632,
198  1744, // negative endcap
200 } // namespace phase1PixelTopology
201 
203 
208 
209  constexpr uint32_t numberOfLayers = 28;
210  constexpr int nPairs = 23 + 6 + 14 + 8 + 4; // include far forward layer pairs
211  constexpr uint16_t numberOfModules = 4000;
212 
214 
216 
217  0, 1, 0, 4, 0, 16, // BPIX1 (3)
218  1, 2, 1, 4, 1, 16, // BPIX2 (6)
219  2, 3, 2, 4, 2, 16, // BPIX3 & Forward (9)
220 
221  4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, // POS (16)
222  16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, // NEG (23)
223 
224  0, 2, 0, 5, 0, 17, 0, 6, 0, 18, // BPIX1 Jump (28)
225  1, 3, 1, 5, 1, 17, 1, 6, 1, 18, // BPIX2 Jump (33)
226 
227  11, 12, 12, 13, 13, 14, 14, 15, // Late POS (37)
228  23, 24, 24, 25, 25, 26, 26, 27, // Late NEG (41)
229 
230  4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12, // POS Jump (48)
231  16, 18, 17, 19, 18, 20, 19, 21, 20, 22, 21, 23, 22, 24, // NEG Jump (55)
232  };
234  108,
235  324,
236  504, // Barrel
237  756,
238  864,
239  972,
240  1080,
241  1188,
242  1296,
243  1404,
244  1512,
245  1620,
246  1796,
247  1972,
248  2148, // Fp
249  2324,
250  2432,
251  2540,
252  2648,
253  2756,
254  2864,
255  2972,
256  3080,
257  3188,
258  3364,
259  3540,
260  3716, // Np
262 
269 
271  -16.0, 4.0, -22.0, -17.0, 6.0, -22.0, -18.0, 11.0, -22.0, 23.0, 30.0, 39.0, 50.0, 65.0,
272  82.0, 109.0, -28.0, -35.0, -44.0, -55.0, -70.0, -87.0, -113.0, -16., 7.0, -22.0, 11.0, -22.0,
273  -17.0, 9.0, -22.0, 13.0, -22.0, 137.0, 173.0, 199.0, 229.0, -142.0, -177.0, -203.0, -233.0, 23.0,
274  30.0, 39.0, 50.0, 65.0, 82.0, 109.0, -28.0, -35.0, -44.0, -55.0, -70.0, -87.0, -113.0};
275 
277 
278  17.0, 22.0, -4.0, 17.0, 22.0, -6.0, 18.0, 22.0, -11.0, 28.0, 35.0, 44.0, 55.0, 70.0,
279  87.0, 113.0, -23.0, -30.0, -39.0, -50.0, -65.0, -82.0, -109.0, 17.0, 22.0, -7.0, 22.0, -10.0,
280  17.0, 22.0, -9.0, 22.0, -13.0, 142.0, 177.0, 203.0, 233.0, -137.0, -173.0, -199.0, -229.0, 28.0,
281  35.0, 44.0, 55.0, 70.0, 87.0, 113.0, -23.0, -30.0, -39.0, -50.0, -65.0, -82.0, -109.0};
282 
283  HOST_DEVICE_CONSTANT float maxr[nPairs] = {5.0, 5.0, 5.0, 7.0, 8.0, 8.0, 7.0, 7.0, 7.0, 6.0, 6.0, 6.0, 6.0, 5.0,
284  6.0, 5.0, 6.0, 6.0, 6.0, 6.0, 5.0, 6.0, 5.0, 5.0, 5.0, 5.0, 5.0, 5.0,
285  5.0, 8.0, 8.0, 8.0, 8.0, 6.0, 5.0, 5.0, 5.0, 6.0, 5.0, 5.0, 5.0, 9.0,
286  9.0, 9.0, 8.0, 8.0, 8.0, 11.0, 9.0, 9.0, 9.0, 8.0, 8.0, 8.0, 11.0};
287 } // namespace phase2PixelTopology
288 
290  // Storing here the needed constants different w.r.t. pp Phase1 topology.
291  // All the other defined by inheritance in the HIon topology struct.
293 
295 
297  phi0p09,
298  phi0p09,
299  phi0p09,
300  phi0p09,
301  phi0p09,
302  phi0p09,
303  phi0p09,
304  phi0p09,
305  phi0p09,
306  phi0p09,
307  phi0p09,
308  phi0p09,
309  phi0p09,
310  phi0p09,
311  phi0p09,
312  phi0p09,
313  phi0p09,
314  phi0p09};
315 
316 } // namespace phase1HIonPixelTopology
317 
318 namespace pixelTopology {
319 
320  struct Phase2 {
321  // types
322  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
323  using tindex_type = uint32_t; // for tuples
324  using cindex_type = uint32_t; // for cells
325 
326  static constexpr uint32_t maxCellNeighbors = 64;
327  static constexpr uint32_t maxCellTracks = 302;
328  static constexpr uint32_t maxHitsOnTrack = 15;
329  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
330  static constexpr uint32_t avgHitsPerTrack = 7;
331  static constexpr uint32_t maxCellsPerHit = 256;
332  static constexpr uint32_t avgTracksPerHit = 10;
333  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
334  // this is well above thanks to maxNumberOfTuples
336  static constexpr uint32_t maxNumberOfDoublets = 5 * 512 * 1024;
339  static constexpr uint32_t maxDepth = 12;
340  static constexpr uint32_t numberOfLayers = 28;
341 
342  static constexpr uint32_t maxSizeCluster = 2047;
343 
344  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
346 
347  static constexpr uint16_t last_bpix1_detIndex = 108;
348  static constexpr uint16_t last_bpix2_detIndex = 324;
349  static constexpr uint16_t last_barrel_detIndex = 504;
350 
351  static constexpr uint32_t maxPixInModule = 6000;
354 
355  static constexpr float moduleLength = 4.345f;
356  static constexpr float endcapCorrection = 0.0f;
357 
358  static constexpr float xerr_barrel_l1_def = 0.00035f;
359  static constexpr float yerr_barrel_l1_def = 0.00125f;
360  static constexpr float xerr_barrel_ln_def = 0.00035f;
361  static constexpr float yerr_barrel_ln_def = 0.00125f;
362  static constexpr float xerr_endcap_def = 0.00060f;
363  static constexpr float yerr_endcap_def = 0.00180f;
364 
365  static constexpr float bigPixXCorrection = 0.0f;
366  static constexpr float bigPixYCorrection = 0.0f;
367 
368  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
369 
370  static constexpr int minYsizeB1 = 25;
371  static constexpr int minYsizeB2 = 15;
372 
373  static constexpr int nPairsMinimal = 33;
374  static constexpr int nPairsFarForwards = nPairsMinimal + 8; // include barrel "jumping" layer pairs
375  static constexpr int nPairs = phase2PixelTopology::nPairs; // include far forward layer pairs
376 
377  static constexpr int maxDYsize12 = 12;
378  static constexpr int maxDYsize = 10;
379  static constexpr int maxDYPred = 20;
380 
382 
383  // 1000 bins < 1024 bins (10 bits) must be:
384  // - < 32*32 (warpSize*warpSize for block prefix scan for CUDA)
385  // - > number of columns (y) in any module. This is due to the fact
386  // that in pixel clustering we give for granted that in each
387  // bin we only have the pixel belonging to the same column.
388  // See RecoLocalTracker/SiPixelClusterizer/plugins/alpaka/PixelClustering.h#L325-L347
389  static constexpr uint16_t clusterBinning = 1000;
390  static constexpr uint16_t clusterBits = 10;
391 
392  static constexpr uint16_t numberOfModulesInBarrel = 756;
393  static constexpr uint16_t numberOfModulesInLadder = 9;
395 
396  static constexpr uint16_t firstEndcapPos = 4;
397  static constexpr uint16_t firstEndcapNeg = 16;
398 
399  static constexpr int16_t xOffset = -1e4; // not used actually, to suppress static analyzer warnings
400 
401  static constexpr char const *nameModifier = "Phase2";
402 
404  static constexpr float const *minz = phase2PixelTopology::minz;
405  static constexpr float const *maxz = phase2PixelTopology::maxz;
406  static constexpr float const *maxr = phase2PixelTopology::maxr;
407 
410 
411  static constexpr inline bool isBigPixX(uint16_t px) { return false; }
412  static constexpr inline bool isBigPixY(uint16_t py) { return false; }
413 
414  static constexpr inline uint16_t localX(uint16_t px) { return px; }
415  static constexpr inline uint16_t localY(uint16_t py) { return py; }
416  };
417 
418  struct Phase1 {
419  // types
420  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
421  using tindex_type = uint16_t; // for tuples
422  using cindex_type = uint32_t; // for cells
423 
424  static constexpr uint32_t maxCellNeighbors = 36;
425  static constexpr uint32_t maxCellTracks = 48;
426  static constexpr uint32_t maxHitsOnTrack = 10;
427  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
428  static constexpr uint32_t avgHitsPerTrack = 5;
429  static constexpr uint32_t maxCellsPerHit = 256;
430  static constexpr uint32_t avgTracksPerHit = 6;
431  static constexpr uint32_t maxNumberOfTuples = 32 * 1024;
433  static constexpr uint32_t maxNumberOfDoublets = 512 * 1024;
436  static constexpr uint32_t maxDepth = 6;
437  static constexpr uint32_t numberOfLayers = 10;
438 
439  static constexpr uint32_t maxSizeCluster = 1023;
440 
441  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
443 
444  static constexpr uint16_t last_bpix1_detIndex = 96;
445  static constexpr uint16_t last_bpix2_detIndex = 320;
446  static constexpr uint16_t last_barrel_detIndex = 1184;
447 
448  static constexpr uint32_t maxPixInModule = 6000;
451 
452  static constexpr float moduleLength = 6.7f;
453  static constexpr float endcapCorrection = 1.5f;
454 
455  static constexpr float xerr_barrel_l1_def = 0.00200f;
456  static constexpr float yerr_barrel_l1_def = 0.00210f;
457  static constexpr float xerr_barrel_ln_def = 0.00200f;
458  static constexpr float yerr_barrel_ln_def = 0.00210f;
459  static constexpr float xerr_endcap_def = 0.0020f;
460  static constexpr float yerr_endcap_def = 0.00210f;
461 
462  static constexpr float bigPixXCorrection = 1.0f;
463  static constexpr float bigPixYCorrection = 8.0f;
464 
465  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
466 
467  static constexpr int minYsizeB1 = 36;
468  static constexpr int minYsizeB2 = 28;
469 
470  static constexpr int nPairsForQuadruplets = 13; // quadruplets require hits in all layers
471  static constexpr int nPairsForTriplets = nPairsForQuadruplets + 2; // include barrel "jumping" layer pairs
472  static constexpr int nPairs = nPairsForTriplets + 4; // include forward "jumping" layer pairs
473 
474  static constexpr int maxDYsize12 = 28;
475  static constexpr int maxDYsize = 20;
476  static constexpr int maxDYPred = 20;
477 
479 
480  static constexpr uint16_t numRowsInRoc = 80;
481  static constexpr uint16_t numColsInRoc = 52;
482  static constexpr uint16_t lastRowInRoc = numRowsInRoc - 1;
483  static constexpr uint16_t lastColInRoc = numColsInRoc - 1;
484 
485  static constexpr uint16_t numRowsInModule = 2 * numRowsInRoc;
486  static constexpr uint16_t numColsInModule = 8 * numColsInRoc;
489 
490  // 418 bins < 512, 9 bits are enough
491  static constexpr uint16_t clusterBinning = numColsInModule + 2;
492  static constexpr uint16_t clusterBits = 9;
493 
494  static constexpr uint16_t numberOfModulesInBarrel = 1184;
495  static constexpr uint16_t numberOfModulesInLadder = 8;
497 
498  static constexpr uint16_t firstEndcapPos = 4;
499  static constexpr uint16_t firstEndcapNeg = 7;
500 
501  static constexpr int16_t xOffset = -81;
502 
503  static constexpr char const *nameModifier = "";
504 
506  static constexpr float const *minz = phase1PixelTopology::minz;
507  static constexpr float const *maxz = phase1PixelTopology::maxz;
508  static constexpr float const *maxr = phase1PixelTopology::maxr;
509 
512 
513  static constexpr inline bool isEdgeX(uint16_t px) { return (px == 0) | (px == lastRowInModule); }
514 
515  static constexpr inline bool isEdgeY(uint16_t py) { return (py == 0) | (py == lastColInModule); }
516 
517  static constexpr inline uint16_t toRocX(uint16_t px) { return (px < numRowsInRoc) ? px : px - numRowsInRoc; }
518 
519  static constexpr inline uint16_t toRocY(uint16_t py) {
520  auto roc = divu52(py);
521  return py - 52 * roc;
522  }
523 
524  static constexpr inline bool isBigPixX(uint16_t px) { return (px == 79) | (px == 80); }
525  static constexpr inline bool isBigPixY(uint16_t py) {
526  auto ly = toRocY(py);
527  return (ly == 0) | (ly == lastColInRoc);
528  }
529 
530  static constexpr inline uint16_t localX(uint16_t px) {
531  auto shift = 0;
532  if (px > lastRowInRoc)
533  shift += 1;
534  if (px > numRowsInRoc)
535  shift += 1;
536  return px + shift;
537  }
538 
539  static constexpr inline uint16_t localY(uint16_t py) {
540  auto roc = divu52(py);
541  auto shift = 2 * roc;
542  auto yInRoc = py - 52 * roc;
543  if (yInRoc > 0)
544  shift += 1;
545  return py + shift;
546  }
547  };
548 
549  struct HIonPhase1 : public Phase1 {
550  // Storing here the needed constants different w.r.t. pp Phase1 topology.
551  // All the other defined by inheritance in the HIon topology struct.
552 
553  using tindex_type = uint32_t; // for tuples
554 
555  static constexpr uint32_t maxCellNeighbors = 90;
556  static constexpr uint32_t maxCellTracks = 90;
557  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
558  static constexpr uint32_t maxNumberOfDoublets = 6 * 512 * 1024;
561 
562  static constexpr uint32_t maxPixInModule = 10000;
563 
565  maxNumberOfDoublets / 4; // TODO need to think a better way to avoid this duplication
566  static constexpr uint32_t maxCellsPerHit = 256;
567 
570 
571  static constexpr char const *nameModifier = "HIonPhase1";
572  };
573 
574  template <typename T>
576 
577  template <typename T>
579 
580 } // namespace pixelTopology
581 
582 #endif // Geometry_CommonTopologies_SimplePixelTopology_h
static constexpr float yerr_barrel_l1_def
static constexpr bool isEdgeY(uint16_t py)
static constexpr float const * minz
constexpr float radius_odd_ladder
static constexpr int minYsizeB1
static constexpr float bigPixYCorrection
static constexpr uint32_t maxNumberOfQuadruplets
float ladderY[TrackerTraits::numberOfLaddersInBarrel]
static constexpr uint32_t maxNumClustersPerModules
static constexpr uint32_t maxNumOfActiveDoublets
static constexpr uint32_t maxPixInModule
static constexpr float yerr_endcap_def
static constexpr uint32_t maxNumberOfTuples
static constexpr uint32_t maxHitsForContainers
static constexpr uint16_t firstEndcapPos
static constexpr uint32_t maxCellsPerHit
constexpr int16_t phi0p05
static constexpr uint16_t last_bpix1_detIndex
constexpr int16_t phicuts[phase1PixelTopology::nPairs]
static constexpr uint32_t maxHitsInModule
constexpr uint16_t findMaxModuleStride()
static constexpr bool isBigPixX(uint16_t px)
static constexpr float xerr_barrel_ln_def
static constexpr float xerr_barrel_l1_def
static constexpr uint16_t last_bpix2_detIndex
constexpr int16_t phi0p09
static constexpr uint16_t numberOfModulesInLadder
constexpr auto maxNumberOfLadders
static constexpr uint16_t clusterBits
constexpr int16_t phi0p06
constexpr float module_length_bpx0
static constexpr uint16_t numColsInModule
constexpr int16_t phicuts[nPairs]
static constexpr float yerr_barrel_l1_def
float ladderMinZ[TrackerTraits::numberOfLaddersInBarrel]
static constexpr float xerr_endcap_def
constexpr uint32_t numberOfLayers
static constexpr uint32_t maxSizeCluster
static constexpr uint32_t maxSizeCluster
constexpr uint32_t layerStart[numberOfLayers+1]
static constexpr float dzdrFact
constexpr uint32_t maxLayers
static constexpr float const * maxr
static constexpr uint32_t maxNumberOfQuadruplets
static constexpr uint32_t avgTracksPerHit
typename std::enable_if< std::is_base_of< Phase2, T >::value >::type isPhase2Topology
static constexpr uint32_t maxCellTracks
static constexpr bool isBigPixX(uint16_t px)
constexpr int16_t phi0p07
static constexpr uint16_t numRowsInModule
static constexpr uint32_t maxNumberOfTuples
static constexpr uint32_t maxCellNeighbors
constexpr uint16_t divu52(uint16_t n)
static constexpr float moduleLength
constexpr float module_length_bpx4
constexpr float minz[nPairs]
static constexpr uint32_t maxDepth
static constexpr uint16_t firstEndcapNeg
float ladderX[TrackerTraits::numberOfLaddersInBarrel]
constexpr uint32_t maxNumClustersPerModules
static constexpr int16_t const * phicuts
static constexpr uint16_t last_bpix2_detIndex
static constexpr float xerr_barrel_l1_def
static constexpr uint16_t numRowsInRoc
static constexpr uint16_t numColsInRoc
static constexpr uint32_t maxNumOfActiveDoublets
static constexpr int nPairsForQuadruplets
Definition: Electron.h:6
static constexpr uint16_t numberOfModules
constexpr uint16_t numberOfModules
static constexpr float yerr_endcap_def
static constexpr uint16_t lastColInModule
constexpr uint32_t maxNumClustersPerModules
static constexpr int16_t xOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
static constexpr uint32_t maxPixInModule
static constexpr uint16_t localX(uint16_t px)
static constexpr uint16_t clusterBinning
constexpr uint32_t maxNumClustersPerModules
static constexpr float xerr_barrel_ln_def
static constexpr uint16_t clusterBinning
static constexpr uint32_t maxHitsInModule
constexpr uint32_t first_ladder_bpx4
static constexpr uint32_t const * layerStart
constexpr uint16_t last_barrel_layer
static constexpr bool isBigPixY(uint16_t py)
float ladderZ[TrackerTraits::numberOfLaddersInBarrel]
static constexpr int nPairs
constexpr uint8_t getLayer(uint32_t detId)
constexpr auto map_to_array(Function f) -> std::array< std::invoke_result_t< Function, std::size_t >, N >
constexpr float module_tolerance_bpx0
static constexpr uint16_t firstEndcapPos
Indices
Definition: EdmEventSize.cc:28
static constexpr uint32_t maxNumOfActiveDoublets
float ladderMaxZ[TrackerTraits::numberOfLaddersInBarrel]
constexpr auto map_to_array_helper(Function f, std::index_sequence< Indices... >) -> std::array< std::invoke_result_t< Function, std::size_t >, sizeof...(Indices)>
static constexpr uint32_t maxNumClustersPerModules
float ladderR[TrackerTraits::numberOfLaddersInBarrel]
static constexpr int maxDYsize12
static constexpr int nPairsMinimal
static constexpr uint32_t maxHitsOnTrack
static constexpr uint32_t maxHitsOnTrack
constexpr uint32_t max_ladder_bpx4
static constexpr uint32_t maxCellsPerHit
constexpr float radius_even_ladder
static constexpr uint16_t toRocY(uint16_t py)
double f[11][100]
static constexpr uint16_t localX(uint16_t px)
static constexpr uint32_t maxNumberOfQuadruplets
typename std::enable_if< std::is_base_of< Phase1, T >::value >::type isPhase1Topology
static constexpr uint32_t maxCellNeighbors
static constexpr uint32_t maxHitsOnTrackForFullFit
static constexpr float const * minz
constexpr int16_t phicuts[nPairs]
static constexpr uint32_t maxHitsForContainers
static constexpr uint32_t avgHitsPerTrack
constexpr float maxz[nPairs]
constexpr bool validateLayerIndex()
static constexpr int16_t xOffset
static constexpr uint32_t maxNumberOfDoublets
static constexpr uint16_t lastRowInRoc
static constexpr bool isBigPixY(uint16_t py)
static constexpr uint32_t avgHitsPerTrack
static constexpr uint16_t firstEndcapNeg
static constexpr float endcapCorrection
constexpr uint32_t max_ladder_bpx0
static constexpr uint32_t maxCellNeighbors
static constexpr uint32_t maxHitsOnTrackForFullFit
static constexpr char const * nameModifier
static constexpr int16_t const * phicuts
static constexpr float dzdrFact
#define N
Definition: blowfish.cc:9
static constexpr int nPairsForTriplets
static constexpr uint16_t numberOfModulesInBarrel
static constexpr float yerr_barrel_ln_def
static constexpr float bigPixYCorrection
static constexpr uint32_t maxCellTracks
static constexpr float endcapCorrection
static constexpr int minYsizeB1
static constexpr uint32_t maxCellsPerHit
static constexpr char const * nameModifier
static constexpr uint32_t maxHitsForContainers
static constexpr int maxDYPred
static constexpr uint32_t const * layerStart
static constexpr uint16_t numberOfModulesInBarrel
constexpr float minz[nPairs]
constexpr uint8_t layerPairs[2 *nPairs]
static constexpr char const * nameModifier
constexpr uint8_t layerPairs[2 *nPairs]
static constexpr uint16_t clusterBits
static constexpr uint32_t maxCellTracks
static constexpr bool isEdgeX(uint16_t px)
static constexpr float moduleLength
constexpr uint8_t findLayerFromCompact(uint32_t detId)
static constexpr int nPairs
constexpr float maxr[nPairs]
static constexpr uint16_t last_barrel_detIndex
constexpr float barrel_z_length
static constexpr uint32_t maxNumberOfDoublets
static constexpr uint32_t numberOfLayers
constexpr uint32_t layerStart(uint32_t i)
static constexpr int minYsizeB2
static constexpr int maxDYPred
static constexpr uint16_t toRocX(uint16_t px)
static constexpr uint32_t maxNumberOfDoublets
static constexpr uint32_t maxPixInModule
static constexpr uint32_t layerStart[numberOfLayers+1]
static constexpr uint32_t numberOfLayers
static constexpr float bigPixXCorrection
static constexpr int maxDYsize12
static constexpr uint32_t getDoubletsFromHistoMaxBlockSize
static constexpr uint32_t maxNumberOfTuples
static constexpr int minYsizeB2
constexpr uint16_t maxModuleStride
static unsigned int const shift
constexpr uint32_t numberOfLayers
static constexpr uint16_t numberOfLaddersInBarrel
static constexpr uint32_t getDoubletsFromHistoMaxBlockSize
static constexpr float const * maxz
constexpr uint16_t numberOfModules
static constexpr float xerr_endcap_def
static constexpr int maxDYsize
constexpr float module_tolerance_bpx4
constexpr uint32_t layerIndexSize
static constexpr uint16_t localY(uint16_t py)
static constexpr float yerr_barrel_ln_def
static constexpr float const * maxz
constexpr float maxz[nPairs]
static constexpr uint16_t last_barrel_detIndex
static constexpr int maxDYsize
constexpr uint8_t findLayer(uint32_t detId, uint8_t sl=0)
static constexpr uint16_t numberOfModulesInLadder
static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP
static constexpr int nPairsFarForwards
constexpr float forward_z_begin
static constexpr uint16_t numberOfLaddersInBarrel
constexpr uint32_t first_ladder_bpx0
#define __device__
static constexpr uint16_t lastColInRoc
static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP
static constexpr uint32_t maxNumClustersPerModules
static constexpr uint8_t const * layerPairs
static constexpr uint32_t maxDepth
static constexpr float const * maxr
static constexpr uint32_t maxHitsInModule
static constexpr uint16_t lastRowInModule
#define HOST_DEVICE_CONSTANT
static constexpr float bigPixXCorrection
static constexpr uint16_t last_bpix1_detIndex
static constexpr uint8_t const * layerPairs
static constexpr uint16_t numberOfModules
constexpr float maxr[nPairs]
static constexpr uint16_t localY(uint16_t py)
static constexpr uint32_t avgTracksPerHit