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 = 3892;
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 maxNumberOfHits = 256 * 1024;
327  static constexpr uint32_t maxCellNeighbors = 64;
328  static constexpr uint32_t maxCellTracks = 302;
329  static constexpr uint32_t maxHitsOnTrack = 15;
330  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
331  static constexpr uint32_t avgHitsPerTrack = 7;
332  static constexpr uint32_t maxCellsPerHit = 256;
333  static constexpr uint32_t avgTracksPerHit = 10;
334  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
335  // this is well above thanks to maxNumberOfTuples
337  static constexpr uint32_t maxNumberOfDoublets = 5 * 512 * 1024;
340  static constexpr uint32_t maxDepth = 12;
341  static constexpr uint32_t numberOfLayers = 28;
342 
343  static constexpr uint32_t maxSizeCluster = 2047;
344 
345  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
347 
348  static constexpr uint16_t last_bpix1_detIndex = 108;
349  static constexpr uint16_t last_bpix2_detIndex = 324;
350  static constexpr uint16_t last_barrel_detIndex = 504;
351 
352  static constexpr uint32_t maxPixInModule = 6000;
355 
356  static constexpr float moduleLength = 4.345f;
357  static constexpr float endcapCorrection = 0.0f;
358 
359  static constexpr float xerr_barrel_l1_def = 0.00035f;
360  static constexpr float yerr_barrel_l1_def = 0.00125f;
361  static constexpr float xerr_barrel_ln_def = 0.00035f;
362  static constexpr float yerr_barrel_ln_def = 0.00125f;
363  static constexpr float xerr_endcap_def = 0.00060f;
364  static constexpr float yerr_endcap_def = 0.00180f;
365 
366  static constexpr float bigPixXCorrection = 0.0f;
367  static constexpr float bigPixYCorrection = 0.0f;
368 
369  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
370 
371  static constexpr int minYsizeB1 = 25;
372  static constexpr int minYsizeB2 = 15;
373 
374  static constexpr int nPairsMinimal = 33;
375  static constexpr int nPairsFarForwards = nPairsMinimal + 8; // include barrel "jumping" layer pairs
376  static constexpr int nPairs = phase2PixelTopology::nPairs; // include far forward layer pairs
377 
378  static constexpr int maxDYsize12 = 12;
379  static constexpr int maxDYsize = 10;
380  static constexpr int maxDYPred = 20;
381 
382  static constexpr uint16_t numberOfModules = 3892;
383 
384  // 1024 bins, 10 bits
385  static constexpr uint16_t clusterBinning = 1024;
386  static constexpr uint16_t clusterBits = 10;
387 
388  static constexpr uint16_t numberOfModulesInBarrel = 756;
389  static constexpr uint16_t numberOfModulesInLadder = 9;
391 
392  static constexpr uint16_t firstEndcapPos = 4;
393  static constexpr uint16_t firstEndcapNeg = 16;
394 
395  static constexpr int16_t xOffset = -1e4; // not used actually, to suppress static analyzer warnings
396 
397  static constexpr char const *nameModifier = "Phase2";
398 
400  static constexpr float const *minz = phase2PixelTopology::minz;
401  static constexpr float const *maxz = phase2PixelTopology::maxz;
402  static constexpr float const *maxr = phase2PixelTopology::maxr;
403 
406 
407  static constexpr inline bool isBigPixX(uint16_t px) { return false; }
408  static constexpr inline bool isBigPixY(uint16_t py) { return false; }
409 
410  static constexpr inline uint16_t localX(uint16_t px) { return px; }
411  static constexpr inline uint16_t localY(uint16_t py) { return py; }
412  };
413 
414  struct Phase1 {
415  // types
416  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
417  using tindex_type = uint16_t; // for tuples
418  using cindex_type = uint32_t; // for cells
419 
420  static constexpr uint32_t maxNumberOfHits = 48 * 1024;
421  static constexpr uint32_t maxCellNeighbors = 36;
422  static constexpr uint32_t maxCellTracks = 48;
423  static constexpr uint32_t maxHitsOnTrack = 10;
424  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
425  static constexpr uint32_t avgHitsPerTrack = 5;
426  static constexpr uint32_t maxCellsPerHit = 256;
427  static constexpr uint32_t avgTracksPerHit = 6;
428  static constexpr uint32_t maxNumberOfTuples = 32 * 1024;
430  static constexpr uint32_t maxNumberOfDoublets = 512 * 1024;
433  static constexpr uint32_t maxDepth = 6;
434  static constexpr uint32_t numberOfLayers = 10;
435 
436  static constexpr uint32_t maxSizeCluster = 1023;
437 
438  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
440 
441  static constexpr uint16_t last_bpix1_detIndex = 96;
442  static constexpr uint16_t last_bpix2_detIndex = 320;
443  static constexpr uint16_t last_barrel_detIndex = 1184;
444 
445  static constexpr uint32_t maxPixInModule = 6000;
448 
449  static constexpr float moduleLength = 6.7f;
450  static constexpr float endcapCorrection = 1.5f;
451 
452  static constexpr float xerr_barrel_l1_def = 0.00200f;
453  static constexpr float yerr_barrel_l1_def = 0.00210f;
454  static constexpr float xerr_barrel_ln_def = 0.00200f;
455  static constexpr float yerr_barrel_ln_def = 0.00210f;
456  static constexpr float xerr_endcap_def = 0.0020f;
457  static constexpr float yerr_endcap_def = 0.00210f;
458 
459  static constexpr float bigPixXCorrection = 1.0f;
460  static constexpr float bigPixYCorrection = 8.0f;
461 
462  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
463 
464  static constexpr int minYsizeB1 = 36;
465  static constexpr int minYsizeB2 = 28;
466 
467  static constexpr int nPairsForQuadruplets = 13; // quadruplets require hits in all layers
468  static constexpr int nPairsForTriplets = nPairsForQuadruplets + 2; // include barrel "jumping" layer pairs
469  static constexpr int nPairs = nPairsForTriplets + 4; // include forward "jumping" layer pairs
470 
471  static constexpr int maxDYsize12 = 28;
472  static constexpr int maxDYsize = 20;
473  static constexpr int maxDYPred = 20;
474 
475  static constexpr uint16_t numberOfModules = 1856;
476 
477  static constexpr uint16_t numRowsInRoc = 80;
478  static constexpr uint16_t numColsInRoc = 52;
479  static constexpr uint16_t lastRowInRoc = numRowsInRoc - 1;
480  static constexpr uint16_t lastColInRoc = numColsInRoc - 1;
481 
482  static constexpr uint16_t numRowsInModule = 2 * numRowsInRoc;
483  static constexpr uint16_t numColsInModule = 8 * numColsInRoc;
486 
487  // 418 bins < 512, 9 bits are enough
488  static constexpr uint16_t clusterBinning = numColsInModule + 2;
489  static constexpr uint16_t clusterBits = 9;
490 
491  static constexpr uint16_t numberOfModulesInBarrel = 1184;
492  static constexpr uint16_t numberOfModulesInLadder = 8;
494 
495  static constexpr uint16_t firstEndcapPos = 4;
496  static constexpr uint16_t firstEndcapNeg = 7;
497 
498  static constexpr int16_t xOffset = -81;
499 
500  static constexpr char const *nameModifier = "";
501 
503  static constexpr float const *minz = phase1PixelTopology::minz;
504  static constexpr float const *maxz = phase1PixelTopology::maxz;
505  static constexpr float const *maxr = phase1PixelTopology::maxr;
506 
509 
510  static constexpr inline bool isEdgeX(uint16_t px) { return (px == 0) | (px == lastRowInModule); }
511 
512  static constexpr inline bool isEdgeY(uint16_t py) { return (py == 0) | (py == lastColInModule); }
513 
514  static constexpr inline uint16_t toRocX(uint16_t px) { return (px < numRowsInRoc) ? px : px - numRowsInRoc; }
515 
516  static constexpr inline uint16_t toRocY(uint16_t py) {
517  auto roc = divu52(py);
518  return py - 52 * roc;
519  }
520 
521  static constexpr inline bool isBigPixX(uint16_t px) { return (px == 79) | (px == 80); }
522  static constexpr inline bool isBigPixY(uint16_t py) {
523  auto ly = toRocY(py);
524  return (ly == 0) | (ly == lastColInRoc);
525  }
526 
527  static constexpr inline uint16_t localX(uint16_t px) {
528  auto shift = 0;
529  if (px > lastRowInRoc)
530  shift += 1;
531  if (px > numRowsInRoc)
532  shift += 1;
533  return px + shift;
534  }
535 
536  static constexpr inline uint16_t localY(uint16_t py) {
537  auto roc = divu52(py);
538  auto shift = 2 * roc;
539  auto yInRoc = py - 52 * roc;
540  if (yInRoc > 0)
541  shift += 1;
542  return py + shift;
543  }
544  };
545 
546  struct HIonPhase1 : public Phase1 {
547  // Storing here the needed constants different w.r.t. pp Phase1 topology.
548  // All the other defined by inheritance in the HIon topology struct.
549 
550  using tindex_type = uint32_t; // for tuples
551 
552  static constexpr uint32_t maxCellNeighbors = 90;
553  static constexpr uint32_t maxCellTracks = 90;
554  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
555  static constexpr uint32_t maxNumberOfDoublets = 6 * 512 * 1024;
558 
559  static constexpr uint32_t maxPixInModule = 10000;
560 
562  maxNumberOfDoublets / 4; // TODO need to think a better way to avoid this duplication
563  static constexpr uint32_t maxCellsPerHit = 256;
564 
567 
568  static constexpr char const *nameModifier = "HIonPhase1";
569  };
570 
571  template <typename T>
573 
574  template <typename T>
576 
577 } // namespace pixelTopology
578 
579 #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
static constexpr uint32_t maxNumberOfHits
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 uint32_t maxNumberOfHits
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