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 maxCellNeighbors = 64;
294  static constexpr uint32_t maxCellTracks = 302;
295  static constexpr uint32_t maxHitsOnTrack = 15;
296  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
297  static constexpr uint32_t avgHitsPerTrack = 7;
298  static constexpr uint32_t maxCellsPerHit = 256;
299  static constexpr uint32_t avgTracksPerHit = 10;
300  static constexpr uint32_t maxNumberOfTuples = 256 * 1024;
301  //this is well above thanks to maxNumberOfTuples
303  static constexpr uint32_t maxNumberOfDoublets = 5 * 512 * 1024;
304  static constexpr uint32_t maxNumOfActiveDoublets = maxNumberOfDoublets / 8;
305  static constexpr uint32_t maxNumberOfQuadruplets = maxNumberOfTuples;
306  static constexpr uint32_t maxDepth = 12;
307  static constexpr uint32_t numberOfLayers = 28;
308 
309  static constexpr uint32_t maxSizeCluster = 2047;
310 
311  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
312  static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP = 16;
313 
314  static constexpr uint16_t last_bpix1_detIndex = 108;
315  static constexpr uint16_t last_bpix2_detIndex = 324;
316  static constexpr uint16_t last_barrel_detIndex = 504;
317 
318  static constexpr uint32_t maxPixInModule = 6000;
319 
320  static constexpr float moduleLength = 4.345f;
321  static constexpr float endcapCorrection = 0.0f;
322 
323  static constexpr float xerr_barrel_l1_def = 0.00035f;
324  static constexpr float yerr_barrel_l1_def = 0.00125f;
325  static constexpr float xerr_barrel_ln_def = 0.00035f;
326  static constexpr float yerr_barrel_ln_def = 0.00125f;
327  static constexpr float xerr_endcap_def = 0.00060f;
328  static constexpr float yerr_endcap_def = 0.00180f;
329 
330  static constexpr float bigPixXCorrection = 0.0f;
331  static constexpr float bigPixYCorrection = 0.0f;
332 
333  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
334  static constexpr float z0Cut = 7.5f;
335  static constexpr float doubletHardPt = 0.8f;
336 
337  static constexpr int minYsizeB1 = 25;
338  static constexpr int minYsizeB2 = 15;
339 
340  static constexpr int nPairsMinimal = 33;
341  static constexpr int nPairsFarForwards = nPairsMinimal + 8; // include barrel "jumping" layer pairs
342  static constexpr int nPairs = phase2PixelTopology::nPairs; // include far forward layer pairs
343 
344  static constexpr int maxDYsize12 = 12;
345  static constexpr int maxDYsize = 10;
346  static constexpr int maxDYPred = 20;
347 
348  static constexpr uint16_t numberOfModules = 3892;
349 
350  static constexpr uint16_t clusterBinning = 1024;
351  static constexpr uint16_t clusterBits = 10;
352 
353  static constexpr uint16_t numberOfModulesInBarrel = 756;
354  static constexpr uint16_t numberOfModulesInLadder = 9;
356 
357  static constexpr uint16_t firstEndcapPos = 4;
358  static constexpr uint16_t firstEndcapNeg = 16;
359 
360  static constexpr int16_t xOffset = -1e4; //not used actually, to suppress static analyzer warnings
361 
362  static constexpr char const *nameModifier = "Phase2";
363 
364  static constexpr uint32_t const *layerStart = phase2PixelTopology::layerStart;
365  static constexpr float const *minz = phase2PixelTopology::minz;
366  static constexpr float const *maxz = phase2PixelTopology::maxz;
367  static constexpr float const *maxr = phase2PixelTopology::maxr;
368 
369  static constexpr uint8_t const *layerPairs = phase2PixelTopology::layerPairs;
370  static constexpr int16_t const *phicuts = phase2PixelTopology::phicuts;
371 
372  static constexpr inline bool isBigPixX(uint16_t px) { return false; }
373  static constexpr inline bool isBigPixY(uint16_t py) { return false; }
374 
375  static constexpr inline uint16_t localX(uint16_t px) { return px; }
376  static constexpr inline uint16_t localY(uint16_t py) { return py; }
377  };
378 
379  struct Phase1 {
380  // types
381  using hindex_type = uint32_t; // FIXME from siPixelRecHitsHeterogeneousProduct
382  using tindex_type = uint16_t; // for tuples
383  using cindex_type = uint32_t; // for cells
384 
385  static constexpr uint32_t maxCellNeighbors = 36;
386  static constexpr uint32_t maxCellTracks = 48;
387  static constexpr uint32_t maxHitsOnTrack = 10;
388  static constexpr uint32_t maxHitsOnTrackForFullFit = 6;
389  static constexpr uint32_t avgHitsPerTrack = 5;
390  static constexpr uint32_t maxCellsPerHit = 256;
391  static constexpr uint32_t avgTracksPerHit = 6;
392  static constexpr uint32_t maxNumberOfTuples = 32 * 1024;
394  static constexpr uint32_t maxNumberOfDoublets = 512 * 1024;
395  static constexpr uint32_t maxNumOfActiveDoublets = maxNumberOfDoublets / 8;
396  static constexpr uint32_t maxNumberOfQuadruplets = maxNumberOfTuples;
397  static constexpr uint32_t maxDepth = 6;
398  static constexpr uint32_t numberOfLayers = 10;
399 
400  static constexpr uint32_t maxSizeCluster = 1023;
401 
402  static constexpr uint32_t getDoubletsFromHistoMaxBlockSize = 64; // for both x and y
403  static constexpr uint32_t getDoubletsFromHistoMinBlocksPerMP = 16;
404 
405  static constexpr uint16_t last_bpix1_detIndex = 96;
406  static constexpr uint16_t last_bpix2_detIndex = 320;
407  static constexpr uint16_t last_barrel_detIndex = 1184;
408 
409  static constexpr uint32_t maxPixInModule = 6000;
410 
411  static constexpr float moduleLength = 6.7f;
412  static constexpr float endcapCorrection = 1.5f;
413 
414  static constexpr float xerr_barrel_l1_def = 0.00200f;
415  static constexpr float yerr_barrel_l1_def = 0.00210f;
416  static constexpr float xerr_barrel_ln_def = 0.00200f;
417  static constexpr float yerr_barrel_ln_def = 0.00210f;
418  static constexpr float xerr_endcap_def = 0.0020f;
419  static constexpr float yerr_endcap_def = 0.00210f;
420 
421  static constexpr float bigPixXCorrection = 1.0f;
422  static constexpr float bigPixYCorrection = 8.0f;
423 
424  static constexpr float dzdrFact = 8 * 0.0285 / 0.015; // from dz/dr to "DY"
425  static constexpr float z0Cut = 12.f;
426  static constexpr float doubletHardPt = 0.5f;
427 
428  static constexpr int minYsizeB1 = 36;
429  static constexpr int minYsizeB2 = 28;
430 
431  static constexpr int nPairsForQuadruplets = 13; // quadruplets require hits in all layers
432  static constexpr int nPairsForTriplets = nPairsForQuadruplets + 2; // include barrel "jumping" layer pairs
433  static constexpr int nPairs = nPairsForTriplets + 4; // include forward "jumping" layer pairs
434 
435  static constexpr int maxDYsize12 = 28;
436  static constexpr int maxDYsize = 20;
437  static constexpr int maxDYPred = 20;
438 
439  static constexpr uint16_t numberOfModules = 1856;
440 
441  static constexpr uint16_t numRowsInRoc = 80;
442  static constexpr uint16_t numColsInRoc = 52;
443  static constexpr uint16_t lastRowInRoc = numRowsInRoc - 1;
444  static constexpr uint16_t lastColInRoc = numColsInRoc - 1;
445 
446  static constexpr uint16_t numRowsInModule = 2 * numRowsInRoc;
447  static constexpr uint16_t numColsInModule = 8 * numColsInRoc;
448  static constexpr uint16_t lastRowInModule = numRowsInModule - 1;
449  static constexpr uint16_t lastColInModule = numColsInModule - 1;
450 
451  static constexpr uint16_t clusterBinning = numColsInModule + 2;
452  static constexpr uint16_t clusterBits = 9;
453 
454  static constexpr uint16_t numberOfModulesInBarrel = 1184;
455  static constexpr uint16_t numberOfModulesInLadder = 8;
457 
458  static constexpr uint16_t firstEndcapPos = 4;
459  static constexpr uint16_t firstEndcapNeg = 7;
460 
461  static constexpr int16_t xOffset = -81;
462 
463  static constexpr char const *nameModifier = "";
464 
465  static constexpr uint32_t const *layerStart = phase1PixelTopology::layerStart;
466  static constexpr float const *minz = phase1PixelTopology::minz;
467  static constexpr float const *maxz = phase1PixelTopology::maxz;
468  static constexpr float const *maxr = phase1PixelTopology::maxr;
469 
470  static constexpr uint8_t const *layerPairs = phase1PixelTopology::layerPairs;
471  static constexpr int16_t const *phicuts = phase1PixelTopology::phicuts;
472 
473  static constexpr inline bool isEdgeX(uint16_t px) { return (px == 0) | (px == lastRowInModule); }
474 
475  static constexpr inline bool isEdgeY(uint16_t py) { return (py == 0) | (py == lastColInModule); }
476 
477  static constexpr inline uint16_t toRocX(uint16_t px) { return (px < numRowsInRoc) ? px : px - numRowsInRoc; }
478 
479  static constexpr inline uint16_t toRocY(uint16_t py) {
480  auto roc = divu52(py);
481  return py - 52 * roc;
482  }
483 
484  static constexpr inline bool isBigPixX(uint16_t px) { return (px == 79) | (px == 80); }
485  static constexpr inline bool isBigPixY(uint16_t py) {
486  auto ly = toRocY(py);
487  return (ly == 0) | (ly == lastColInRoc);
488  }
489 
490  static constexpr inline uint16_t localX(uint16_t px) {
491  auto shift = 0;
492  if (px > lastRowInRoc)
493  shift += 1;
494  if (px > numRowsInRoc)
495  shift += 1;
496  return px + shift;
497  }
498 
499  static constexpr inline uint16_t localY(uint16_t py) {
500  auto roc = divu52(py);
501  auto shift = 2 * roc;
502  auto yInRoc = py - 52 * roc;
503  if (yInRoc > 0)
504  shift += 1;
505  return py + shift;
506  }
507  };
508 
509  template <typename T>
511 
512  template <typename T>
514 
515  // struct HIonPhase1 : public Phase1 {
516  // static constexpr uint32_t maxNumberOfDoublets=3*1024*1024;};
517 
518 } // namespace pixelTopology
519 
520 #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
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 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