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 
11  constexpr auto maxNumberOfLadders = 160;
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>
45  constexpr uint16_t findMaxModuleStride() {
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)
68  if (detId < TrackerTraits::layerStart[i + 1])
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)
77  if (detId < TrackerTraits::layerStart[i + 1])
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>
98  constexpr bool validateLayerIndex() {
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 
138  constexpr uint32_t max_ladder_bpx0 = 12;
139  constexpr uint32_t first_ladder_bpx0 = 0;
140  constexpr float module_length_bpx0 = 6.7f;
141  constexpr float module_tolerance_bpx0 = 0.4f; // projection to cylinder is inaccurate on BPIX1
142  constexpr uint32_t max_ladder_bpx4 = 64;
143  constexpr uint32_t first_ladder_bpx4 = 84;
144  constexpr float radius_even_ladder = 15.815f;
145  constexpr float radius_odd_ladder = 16.146f;
146  constexpr float module_length_bpx4 = 6.7f;
147  constexpr float module_tolerance_bpx4 = 0.2f;
148  constexpr float barrel_z_length = 26.f;
149  constexpr float forward_z_begin = 32.f;
150 
152  0, 1, 0, 4, 0, 7, // BPIX1 (3)
153  1, 2, 1, 4, 1, 7, // BPIX2 (6)
154  4, 5, 7, 8, // FPIX1 (8)
155  2, 3, 2, 4, 2, 7, 5, 6, 8, 9, // BPIX3 & FPIX2 (13)
156  0, 2, 1, 3, // Jumping Barrel (15)
157  0, 5, 0, 8, // Jumping Forward (BPIX1,FPIX2)
158  4, 6, 7, 9 // Jumping Forward (19)
159  };
160 
162  phi0p07,
163  phi0p07,
164  phi0p05,
165  phi0p06,
166  phi0p06,
167  phi0p05,
168  phi0p05,
169  phi0p06,
170  phi0p06,
171  phi0p06,
172  phi0p05,
173  phi0p05,
174  phi0p05,
175  phi0p05,
176  phi0p05,
177  phi0p05,
178  phi0p05,
179  phi0p05};
181  -20., 0., -30., -22., 10., -30., -70., -70., -22., 15., -30, -70., -70., -20., -22., 0, -30., -70., -70.};
183  20., 30., 0., 22., 30., -10., 70., 70., 22., 30., -15., 70., 70., 20., 22., 30., 0., 70., 70.};
185  20., 9., 9., 20., 7., 7., 5., 5., 20., 6., 6., 5., 5., 20., 20., 9., 9., 9., 9.};
186 
187  static constexpr uint32_t layerStart[numberOfLayers + 1] = {0,
188  96,
189  320,
190  672, // barrel
191  1184,
192  1296,
193  1408, // positive endcap
194  1520,
195  1632,
196  1744, // negative endcap
198 } // namespace phase1PixelTopology
199 
201 
206 
207  constexpr uint32_t numberOfLayers = 28;
208  constexpr int nPairs = 23 + 6 + 14 + 8 + 4; // include far forward layer pairs
209  constexpr uint16_t numberOfModules = 3892;
210 
212 
213  0, 1, 0, 4, 0, 16, //BPIX1 (3)
214  1, 2, 1, 4, 1, 16, //BPIX2 (6)
215  2, 3, 2, 4, 2, 16, //BPIX3 & Forward (9)
216 
217  4, 5, 5, 6, 6, 7, 7, 8, 8, 9, 9, 10, 10, 11, //POS (16)
218  16, 17, 17, 18, 18, 19, 19, 20, 20, 21, 21, 22, 22, 23, //NEG (23)
219 
220  0, 2, 0, 5, 0, 17, 0, 6, 0, 18, // BPIX1 Jump (28)
221  1, 3, 1, 5, 1, 17, 1, 6, 1, 18, // BPIX2 Jump (33)
222 
223  11, 12, 12, 13, 13, 14, 14, 15, //Late POS (37)
224  23, 24, 24, 25, 25, 26, 26, 27, //Late NEG (41)
225 
226  4, 6, 5, 7, 6, 8, 7, 9, 8, 10, 9, 11, 10, 12, //POS Jump (48)
227  16, 18, 17, 19, 18, 20, 19, 21, 20, 22, 21, 23, 22, 24, //NEG Jump (55)
228  };
230  108,
231  324,
232  504, //Barrel
233  756,
234  864,
235  972,
236  1080,
237  1188,
238  1296,
239  1404,
240  1512,
241  1620,
242  1796,
243  1972,
244  2148, //Fp
245  2324,
246  2432,
247  2540,
248  2648,
249  2756,
250  2864,
251  2972,
252  3080,
253  3188,
254  3364,
255  3540,
256  3716, //Np
258 
265 
267  -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,
268  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,
269  -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,
270  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};
271 
273 
274  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,
275  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,
276  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,
277  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};
278 
279  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,
280  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,
281  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,
282  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};
283 } // namespace phase2PixelTopology
284 
285 namespace pixelTopology {
286 
287  struct Phase2 {
288  // types
289  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
290  using tindex_type = uint32_t; // for tuples
291  using cindex_type = uint32_t; // for cells
292 
293  static constexpr uint32_t maxNumberOfHits = 256 * 1024;
294  static constexpr uint32_t maxCellNeighbors = 64;
295  static constexpr uint32_t maxCellTracks = 302;
296  static constexpr uint32_t maxHitsOnTrack = 15;
297  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
298  static constexpr uint32_t avgHitsPerTrack = 7;
299  static constexpr uint32_t maxCellsPerHit = 256;
300  static constexpr uint32_t avgTracksPerHit = 10;
301  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
302  //this is well above thanks to maxNumberOfTuples
304  static constexpr uint32_t maxNumberOfDoublets = 5 * 512 * 1024;
305  static constexpr uint32_t maxNumOfActiveDoublets = maxNumberOfDoublets / 8;
306  static constexpr uint32_t maxNumberOfQuadruplets = maxNumberOfTuples;
307  static constexpr uint32_t maxDepth = 12;
308  static constexpr uint32_t numberOfLayers = 28;
309 
310  static constexpr uint32_t maxSizeCluster = 2047;
311 
312  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
313  static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP = 16;
314 
315  static constexpr uint16_t last_bpix1_detIndex = 108;
316  static constexpr uint16_t last_bpix2_detIndex = 324;
317  static constexpr uint16_t last_barrel_detIndex = 504;
318 
319  static constexpr uint32_t maxPixInModule = 6000;
320 
321  static constexpr float moduleLength = 4.345f;
322  static constexpr float endcapCorrection = 0.0f;
323 
324  static constexpr float xerr_barrel_l1_def = 0.00035f;
325  static constexpr float yerr_barrel_l1_def = 0.00125f;
326  static constexpr float xerr_barrel_ln_def = 0.00035f;
327  static constexpr float yerr_barrel_ln_def = 0.00125f;
328  static constexpr float xerr_endcap_def = 0.00060f;
329  static constexpr float yerr_endcap_def = 0.00180f;
330 
331  static constexpr float bigPixXCorrection = 0.0f;
332  static constexpr float bigPixYCorrection = 0.0f;
333 
334  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
335  static constexpr float z0Cut = 7.5f;
336  static constexpr float doubletHardPt = 0.8f;
337 
338  static constexpr int minYsizeB1 = 25;
339  static constexpr int minYsizeB2 = 15;
340 
341  static constexpr int nPairsMinimal = 33;
342  static constexpr int nPairsFarForwards = nPairsMinimal + 8; // include barrel "jumping" layer pairs
343  static constexpr int nPairs = phase2PixelTopology::nPairs; // include far forward layer pairs
344 
345  static constexpr int maxDYsize12 = 12;
346  static constexpr int maxDYsize = 10;
347  static constexpr int maxDYPred = 20;
348 
349  static constexpr uint16_t numberOfModules = 3892;
350 
351  static constexpr uint16_t clusterBinning = 1024;
352  static constexpr uint16_t clusterBits = 10;
353 
354  static constexpr uint16_t numberOfModulesInBarrel = 756;
355  static constexpr uint16_t numberOfModulesInLadder = 9;
357 
358  static constexpr uint16_t firstEndcapPos = 4;
359  static constexpr uint16_t firstEndcapNeg = 16;
360 
361  static constexpr int16_t xOffset = -1e4; //not used actually, to suppress static analyzer warnings
362 
363  static constexpr char const *nameModifier = "Phase2";
364 
365  static constexpr uint32_t const *layerStart = phase2PixelTopology::layerStart;
366  static constexpr float const *minz = phase2PixelTopology::minz;
367  static constexpr float const *maxz = phase2PixelTopology::maxz;
368  static constexpr float const *maxr = phase2PixelTopology::maxr;
369 
370  static constexpr uint8_t const *layerPairs = phase2PixelTopology::layerPairs;
371  static constexpr int16_t const *phicuts = phase2PixelTopology::phicuts;
372 
373  static constexpr inline bool isBigPixX(uint16_t px) { return false; }
374  static constexpr inline bool isBigPixY(uint16_t py) { return false; }
375 
376  static constexpr inline uint16_t localX(uint16_t px) { return px; }
377  static constexpr inline uint16_t localY(uint16_t py) { return py; }
378  };
379 
380  struct Phase1 {
381  // types
382  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
383  using tindex_type = uint16_t; // for tuples
384  using cindex_type = uint32_t; // for cells
385 
386  static constexpr uint32_t maxNumberOfHits = 48 * 1024;
387  static constexpr uint32_t maxCellNeighbors = 36;
388  static constexpr uint32_t maxCellTracks = 48;
389  static constexpr uint32_t maxHitsOnTrack = 10;
390  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
391  static constexpr uint32_t avgHitsPerTrack = 5;
392  static constexpr uint32_t maxCellsPerHit = 256;
393  static constexpr uint32_t avgTracksPerHit = 6;
394  static constexpr uint32_t maxNumberOfTuples = 32 * 1024;
396  static constexpr uint32_t maxNumberOfDoublets = 512 * 1024;
397  static constexpr uint32_t maxNumOfActiveDoublets = maxNumberOfDoublets / 8;
398  static constexpr uint32_t maxNumberOfQuadruplets = maxNumberOfTuples;
399  static constexpr uint32_t maxDepth = 6;
400  static constexpr uint32_t numberOfLayers = 10;
401 
402  static constexpr uint32_t maxSizeCluster = 1023;
403 
404  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
405  static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP = 16;
406 
407  static constexpr uint16_t last_bpix1_detIndex = 96;
408  static constexpr uint16_t last_bpix2_detIndex = 320;
409  static constexpr uint16_t last_barrel_detIndex = 1184;
410 
411  static constexpr uint32_t maxPixInModule = 6000;
412 
413  static constexpr float moduleLength = 6.7f;
414  static constexpr float endcapCorrection = 1.5f;
415 
416  static constexpr float xerr_barrel_l1_def = 0.00200f;
417  static constexpr float yerr_barrel_l1_def = 0.00210f;
418  static constexpr float xerr_barrel_ln_def = 0.00200f;
419  static constexpr float yerr_barrel_ln_def = 0.00210f;
420  static constexpr float xerr_endcap_def = 0.0020f;
421  static constexpr float yerr_endcap_def = 0.00210f;
422 
423  static constexpr float bigPixXCorrection = 1.0f;
424  static constexpr float bigPixYCorrection = 8.0f;
425 
426  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
427  static constexpr float z0Cut = 12.f;
428  static constexpr float doubletHardPt = 0.5f;
429 
430  static constexpr int minYsizeB1 = 36;
431  static constexpr int minYsizeB2 = 28;
432 
433  static constexpr int nPairsForQuadruplets = 13; // quadruplets require hits in all layers
434  static constexpr int nPairsForTriplets = nPairsForQuadruplets + 2; // include barrel "jumping" layer pairs
435  static constexpr int nPairs = nPairsForTriplets + 4; // include forward "jumping" layer pairs
436 
437  static constexpr int maxDYsize12 = 28;
438  static constexpr int maxDYsize = 20;
439  static constexpr int maxDYPred = 20;
440 
441  static constexpr uint16_t numberOfModules = 1856;
442 
443  static constexpr uint16_t numRowsInRoc = 80;
444  static constexpr uint16_t numColsInRoc = 52;
445  static constexpr uint16_t lastRowInRoc = numRowsInRoc - 1;
446  static constexpr uint16_t lastColInRoc = numColsInRoc - 1;
447 
448  static constexpr uint16_t numRowsInModule = 2 * numRowsInRoc;
449  static constexpr uint16_t numColsInModule = 8 * numColsInRoc;
450  static constexpr uint16_t lastRowInModule = numRowsInModule - 1;
451  static constexpr uint16_t lastColInModule = numColsInModule - 1;
452 
453  static constexpr uint16_t clusterBinning = numColsInModule + 2;
454  static constexpr uint16_t clusterBits = 9;
455 
456  static constexpr uint16_t numberOfModulesInBarrel = 1184;
457  static constexpr uint16_t numberOfModulesInLadder = 8;
459 
460  static constexpr uint16_t firstEndcapPos = 4;
461  static constexpr uint16_t firstEndcapNeg = 7;
462 
463  static constexpr int16_t xOffset = -81;
464 
465  static constexpr char const *nameModifier = "";
466 
467  static constexpr uint32_t const *layerStart = phase1PixelTopology::layerStart;
468  static constexpr float const *minz = phase1PixelTopology::minz;
469  static constexpr float const *maxz = phase1PixelTopology::maxz;
470  static constexpr float const *maxr = phase1PixelTopology::maxr;
471 
472  static constexpr uint8_t const *layerPairs = phase1PixelTopology::layerPairs;
473  static constexpr int16_t const *phicuts = phase1PixelTopology::phicuts;
474 
475  static constexpr inline bool isEdgeX(uint16_t px) { return (px == 0) | (px == lastRowInModule); }
476 
477  static constexpr inline bool isEdgeY(uint16_t py) { return (py == 0) | (py == lastColInModule); }
478 
479  static constexpr inline uint16_t toRocX(uint16_t px) { return (px < numRowsInRoc) ? px : px - numRowsInRoc; }
480 
481  static constexpr inline uint16_t toRocY(uint16_t py) {
482  auto roc = divu52(py);
483  return py - 52 * roc;
484  }
485 
486  static constexpr inline bool isBigPixX(uint16_t px) { return (px == 79) | (px == 80); }
487  static constexpr inline bool isBigPixY(uint16_t py) {
488  auto ly = toRocY(py);
489  return (ly == 0) | (ly == lastColInRoc);
490  }
491 
492  static constexpr inline uint16_t localX(uint16_t px) {
493  auto shift = 0;
494  if (px > lastRowInRoc)
495  shift += 1;
496  if (px > numRowsInRoc)
497  shift += 1;
498  return px + shift;
499  }
500 
501  static constexpr inline uint16_t localY(uint16_t py) {
502  auto roc = divu52(py);
503  auto shift = 2 * roc;
504  auto yInRoc = py - 52 * roc;
505  if (yInRoc > 0)
506  shift += 1;
507  return py + shift;
508  }
509  };
510 
511  template <typename T>
513 
514  template <typename T>
516 
517  // struct HIonPhase1 : public Phase1 {
518  // static constexpr uint32_t maxNumberOfDoublets=3*1024*1024;};
519 
520 } // namespace pixelTopology
521 
522 #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 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 uint16_t findMaxModuleStride()
static constexpr bool isBigPixX(uint16_t px)
static constexpr float doubletHardPt
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 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]
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 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
static constexpr float doubletHardPt
static constexpr int16_t xOffset
constexpr std::array< uint8_t, layerIndexSize< TrackerTraits > > layer
static constexpr uint16_t localX(uint16_t px)
static constexpr uint16_t clusterBinning
static constexpr float xerr_barrel_ln_def
static constexpr uint16_t clusterBinning
constexpr uint32_t first_ladder_bpx4
static constexpr uint32_t const * layerStart
static constexpr float z0Cut
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)>
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 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 maxHitsOnTrackForFullFit
static constexpr float const * minz
constexpr int16_t phicuts[nPairs]
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]
constexpr uint8_t layerPairs[2 *nPairs]
static constexpr uint16_t clusterBits
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 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 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 uint8_t const * layerPairs
static constexpr uint32_t maxDepth
static constexpr float const * maxr
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 float z0Cut
static constexpr uint32_t avgTracksPerHit