CMS 3D CMS Logo

Typedefs | Functions | Variables
gpuPixelDoublets Namespace Reference

Typedefs

using CellNeighbors = caConstants::CellNeighbors
 
using CellNeighborsVector = caConstants::CellNeighborsVector
 
using CellTracks = caConstants::CellTracks
 
using CellTracksVector = caConstants::CellTracksVector
 
using PhiBinner = TrackingRecHit2DSOAView::PhiBinner
 

Functions

 __attribute__ ((always_inline)) void fishbone(GPUCACell
 
 __syncthreads ()
 
 assert (offsets)
 
 assert (nPairs<=nPairsMax)
 
 doubletsFromHisto (layerPairs, nActualPairs, cells, nCells, cellNeighbors, cellTracks, hh, isOuterHitOfCell, phicuts, minz, maxz, maxr, ideal_cond, doClusterCut, doZ0Cut, doPtCut, maxNumOfDoublets)
 
 for (auto j=idy;j< ntot;j+=blockDim.y *gridDim.y)
 
 if (threadIdx.y==0 &&threadIdx.x==0)
 

Variables

uint32_t CellNeighborsVectorcellNeighbors
 
__device__ uint32_t GPUCACellcells
 
uint32_t CellNeighborsVector CellTracksVectorcellTracks
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool doClusterCut
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool doPtCut
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool doZ0Cut
 
constexpr float dzdrFact = 8 * 0.0285 / 0.015
 
auto first = threadIdx.x
 
constexpr auto getDoubletsFromHistoMaxBlockSize = 64
 
constexpr auto getDoubletsFromHistoMinBlocksPerMP = 16
 
__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ hh
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ hhp
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool ideal_cond
 
auto idy = blockIdx.y * blockDim.y + threadIdx.y
 
__shared__ uint32_t innerLayerCumulativeSize [nPairsMax]
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell isOuterHitOfCell
 
bool isOuterLadder = ideal_cond
 
__constant__ const uint8_t layerPairs [2 *nPairs]
 
auto layerSize = [=](uint8_t li) { return offsets[li + 1] - offsets[li]; }
 
constexpr int maxDYPred = 20
 
constexpr int maxDYsize = 20
 
constexpr int maxDYsize12 = 28
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool uint32_t maxNumOfDoublets
 
__constant__ float const maxr [nPairs]
 
__constant__ float const maxz [nPairs]
 
constexpr int minYsizeB2 = 28
 
__constant__ float const minz [nPairs]
 
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int nActualPairs
 
uint32_t * nCells
 
constexpr int nPairs = nPairsForTriplets + 4
 
constexpr int nPairsForQuadruplets = 13
 
constexpr int nPairsForTriplets = nPairsForQuadruplets + 2
 
const int nPairsMax = caConstants::maxNumberOfLayerPairs
 
__shared__ uint32_t ntot
 
uint32_t const *__restrict__ offsets = hh.hitsLayerStart()
 
uint32_t pairLayerId = 0
 
constexpr int16_t phi0p05 = 522
 
constexpr int16_t phi0p06 = 626
 
constexpr int16_t phi0p07 = 730
 
auto const &__restrict__ phiBinner = hh.phiBinner()
 
__constant__ const int16_t phicuts [nPairs]
 
auto stride = blockDim.x
 

Typedef Documentation

◆ CellNeighbors

Definition at line 63 of file gpuPixelDoublets.h.

◆ CellNeighborsVector

Definition at line 65 of file gpuPixelDoublets.h.

◆ CellTracks

Definition at line 64 of file gpuPixelDoublets.h.

◆ CellTracksVector

Definition at line 66 of file gpuPixelDoublets.h.

◆ PhiBinner

Definition at line 53 of file gpuPixelDoubletsAlgos.h.

Function Documentation

◆ __attribute__()

__device__ gpuPixelDoublets::__attribute__ ( (always_inline)  )
inline

Definition at line 19 of file gpuFishbone.h.

References cms::cudacompat::blockDim, cms::cudacompat::blockIdx, fftjetpileupestimator_calo_uncalib_cfi::c0, cells, caConstants::OuterHitOfCell::container, ztail::d, f, cms::cudacompat::gridDim, hh, hhp, idy, isOuterHitOfCell, MainPageGenerator::l, GPUCACell::maxCellsPerHit, caConstants::maxCellsPerHit, dqmiodumpmetadata::n, nHits, nt, hltrates_dqm_sourceclient-live_cfg::offset, caConstants::OuterHitOfCell::offset, findQualityFiles::size, cms::cudacompat::threadIdx, and x.

24  {
26 
27  auto const& hh = *hhp;
28 
29  auto const isOuterHitOfCell = isOuterHitOfCellWrap.container;
30  int32_t offset = isOuterHitOfCellWrap.offset;
31 
32  // x runs faster...
33  auto firstY = threadIdx.y + blockIdx.y * blockDim.y;
34  auto firstX = threadIdx.x;
35 
37  uint32_t cc[maxCellsPerHit];
38  uint16_t d[maxCellsPerHit];
39  uint8_t l[maxCellsPerHit];
40 
41  for (int idy = firstY, nt = nHits - offset; idy < nt; idy += gridDim.y * blockDim.y) {
42  auto const& vc = isOuterHitOfCell[idy];
43  auto size = vc.size();
44  if (size < 2)
45  continue;
46  // if alligned kill one of the two.
47  // in principle one could try to relax the cut (only in r-z?) for jumping-doublets
48  auto const& c0 = cells[vc[0]];
49  auto xo = c0.outer_x(hh);
50  auto yo = c0.outer_y(hh);
51  auto zo = c0.outer_z(hh);
52  auto sg = 0;
53  for (int32_t ic = 0; ic < size; ++ic) {
54  auto& ci = cells[vc[ic]];
55  if (ci.unused())
56  continue; // for triplets equivalent to next
57  if (checkTrack && ci.tracks().empty())
58  continue;
59  cc[sg] = vc[ic];
60  l[sg] = ci.layerPairId();
61  d[sg] = ci.inner_detIndex(hh);
62  x[sg] = ci.inner_x(hh) - xo;
63  y[sg] = ci.inner_y(hh) - yo;
64  z[sg] = ci.inner_z(hh) - zo;
65  n[sg] = x[sg] * x[sg] + y[sg] * y[sg] + z[sg] * z[sg];
66  ++sg;
67  }
68  if (sg < 2)
69  continue;
70  // here we parallelize
71  for (int32_t ic = firstX; ic < sg - 1; ic += blockDim.x) {
72  auto& ci = cells[cc[ic]];
73  for (auto jc = ic + 1; jc < sg; ++jc) {
74  auto& cj = cells[cc[jc]];
75  // must be different detectors
76  // if (d[ic]==d[jc]) continue;
77  auto cos12 = x[ic] * x[jc] + y[ic] * y[jc] + z[ic] * z[jc];
78  if (d[ic] != d[jc] && cos12 * cos12 >= 0.99999f * (n[ic] * n[jc])) {
79  // alligned: kill farthest (prefer consecutive layers)
80  // if same layer prefer farthest (longer level arm) and make space for intermediate hit
81  bool sameLayer = l[ic] == l[jc];
82  if (n[ic] > n[jc]) {
83  if (sameLayer) {
84  cj.kill(); // closest
85  ci.setFishbone(cj.inner_hit_id(), cj.inner_z(hh), hh);
86  } else {
87  ci.kill(); // farthest
88  // break; // removed to improve reproducibility. keep it for reference and tests
89  }
90  } else {
91  if (!sameLayer) {
92  cj.kill(); // farthest
93  } else {
94  ci.kill(); // closest
95  cj.setFishbone(ci.inner_hit_id(), ci.inner_z(hh), hh);
96  // break; // removed to improve reproducibility. keep it for reference and tests
97  }
98  }
99  }
100  } // cj
101  } // ci
102  } // hits
103  }
const dim3 threadIdx
Definition: cudaCompat.h:29
size
Write out results.
const dim3 gridDim
Definition: cudaCompat.h:33
auto const & hh
const dim3 blockDim
Definition: cudaCompat.h:30
float float float z
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const isOuterHitOfCell
double f[11][100]
const dim3 blockIdx
Definition: cudaCompat.h:32
d
Definition: ztail.py:151
int nt
Definition: AMPTWrapper.h:42
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
static constexpr auto maxCellsPerHit
Definition: GPUCACell.h:24
caConstants::TupleMultiplicity const *__restrict__ HitsOnGPU const *__restrict__ hhp
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
float x
constexpr uint32_t maxCellsPerHit
Definition: CAConstants.h:38

◆ __syncthreads()

gpuPixelDoublets::__syncthreads ( )
inline

Definition at line 132 of file cudaCompat.h.

132 {}

◆ assert() [1/2]

gpuPixelDoublets::assert ( offsets  )

Referenced by for().

◆ assert() [2/2]

gpuPixelDoublets::assert ( nPairs<=  nPairsMax)

◆ doubletsFromHisto()

gpuPixelDoublets::doubletsFromHisto ( layerPairs  ,
nActualPairs  ,
cells  ,
nCells  ,
cellNeighbors  ,
cellTracks  ,
hh  ,
isOuterHitOfCell  ,
phicuts  ,
minz  ,
maxz  ,
maxr  ,
ideal_cond  ,
doClusterCut  ,
doZ0Cut  ,
doPtCut  ,
maxNumOfDoublets   
)

◆ for()

gpuPixelDoublets::for ( )

Definition at line 83 of file gpuPixelDoubletsAlgos.h.

References cms::cudacompat::__ldg(), funct::abs(), assert(), cms::cudacompat::atomicAdd(), cms::cudacompat::atomicSub(), cms::cuda::HistoContainer< T, NBINS, SIZE, S, I, NHISTS >::bin(), cellNeighbors, cells, cellTracks, doClusterCut, doPtCut, doZ0Cut, flavorHistoryFilter_cfi::dr, PVValHelper::dy, dzdrFact, MillePedeFileConverter_cfg::e, f, first, full, hh, cms::cuda::HistoContainer< T, NBINS, SIZE, S, I, NHISTS >::histOff(), mps_fire::i, ideal_cond, SurfaceOrientation::inner, innerLayerCumulativeSize, isOuterHitOfCell, isOuterLadder, dqmiolumiharvest::j, dqmdumpme::k, GetRecoTauVFromDQM_MC_cff::kk, layerPairs, maxDYPred, maxDYsize, maxDYsize12, gpuClustering::maxNumModules, maxNumOfDoublets, maxr, maxz, SiStripPI::min, minYsizeB2, minz, cms::cuda::HistoContainer< T, NBINS, SIZE, S, I, NHISTS >::nbins(), nCells, nmin, nPairs, offsets, SurfaceOrientation::outer, AlCaHLTBitMon_ParallelJobs::p, pairLayerId, phiBinner, phicuts, submitPVValidationJobs::ptcut, cms::cuda::SimpleVector< T >::push_back(), short2phi(), stride, compareTotals::tot, and funct::true.

83  {
85  ;
86  --pairLayerId; // move to lower_bound ??
87 
91 
92  uint8_t inner = layerPairs[2 * pairLayerId];
93  uint8_t outer = layerPairs[2 * pairLayerId + 1];
94  assert(outer > inner);
95 
96  auto hoff = PhiBinner::histOff(outer);
97 
98  auto i = (0 == pairLayerId) ? j : j - innerLayerCumulativeSize[pairLayerId - 1];
99  i += offsets[inner];
100 
101  // printf("Hit in Layer %d %d %d %d\n", i, inner, pairLayerId, j);
102 
103  assert(i >= offsets[inner]);
104  assert(i < offsets[inner + 1]);
105 
106  // found hit corresponding to our cuda thread, now do the job
107  auto mi = hh.detectorIndex(i);
109  continue; // invalid
110 
111  /* maybe clever, not effective when zoCut is on
112  auto bpos = (mi%8)/4; // if barrel is 1 for z>0
113  auto fpos = (outer>3) & (outer<7);
114  if ( ((inner<3) & (outer>3)) && bpos!=fpos) continue;
115  */
116 
117  auto mez = hh.zGlobal(i);
118 
119  if (mez < minz[pairLayerId] || mez > maxz[pairLayerId])
120  continue;
121 
122  int16_t mes = -1; // make compiler happy
123  if (doClusterCut) {
124  // if ideal treat inner ladder as outer
125  if (inner == 0)
126  assert(mi < 96);
127  isOuterLadder = ideal_cond ? true : 0 == (mi / 8) % 2; // only for B1/B2/B3 B4 is opposite, FPIX:noclue...
128 
129  // in any case we always test mes>0 ...
130  mes = inner > 0 || isOuterLadder ? hh.clusterSizeY(i) : -1;
131 
132  if (inner == 0 && outer > 3) // B1 and F1
133  if (mes > 0 && mes < minYsizeB1)
134  continue; // only long cluster (5*8)
135  if (inner == 1 && outer > 3) // B2 and F1
136  if (mes > 0 && mes < minYsizeB2)
137  continue;
138  }
139  auto mep = hh.iphi(i);
140  auto mer = hh.rGlobal(i);
141 
142  // all cuts: true if fails
143  constexpr float z0cut = 12.f; // cm
144  constexpr float hardPtCut = 0.5f; // GeV
145  // cm (1 GeV track has 1 GeV/c / (e * 3.8T) ~ 87 cm radius in a 3.8T field)
146  constexpr float minRadius = hardPtCut * 87.78f;
147  constexpr float minRadius2T4 = 4.f * minRadius * minRadius;
148  auto ptcut = [&](int j, int16_t idphi) {
149  auto r2t4 = minRadius2T4;
150  auto ri = mer;
151  auto ro = hh.rGlobal(j);
152  auto dphi = short2phi(idphi);
153  return dphi * dphi * (r2t4 - ri * ro) > (ro - ri) * (ro - ri);
154  };
155  auto z0cutoff = [&](int j) {
156  auto zo = hh.zGlobal(j);
157  auto ro = hh.rGlobal(j);
158  auto dr = ro - mer;
159  return dr > maxr[pairLayerId] || dr < 0 || std::abs((mez * ro - mer * zo)) > z0cut * dr;
160  };
161 
162  auto zsizeCut = [&](int j) {
163  auto onlyBarrel = outer < 4;
164  auto so = hh.clusterSizeY(j);
165  auto dy = inner == 0 ? maxDYsize12 : maxDYsize;
166  // in the barrel cut on difference in size
167  // in the endcap on the prediction on the first layer (actually in the barrel only: happen to be safe for endcap as well)
168  // FIXME move pred cut to z0cutoff to optmize loading of and computaiton ...
169  auto zo = hh.zGlobal(j);
170  auto ro = hh.rGlobal(j);
171  return onlyBarrel ? mes > 0 && so > 0 && std::abs(so - mes) > dy
172  : (inner < 4) && mes > 0 &&
173  std::abs(mes - int(std::abs((mez - zo) / (mer - ro)) * dzdrFact + 0.5f)) > maxDYPred;
174  };
175 
176  auto iphicut = phicuts[pairLayerId];
177 
178  auto kl = PhiBinner::bin(int16_t(mep - iphicut));
179  auto kh = PhiBinner::bin(int16_t(mep + iphicut));
180  auto incr = [](auto& k) { return k = (k + 1) % PhiBinner::nbins(); };
181 
182 #ifdef GPU_DEBUG
183  int tot = 0;
184  int nmin = 0;
185  int tooMany = 0;
186 #endif
187 
188  auto khh = kh;
189  incr(khh);
190  for (auto kk = kl; kk != khh; incr(kk)) {
191 #ifdef GPU_DEBUG
192  if (kk != kl && kk != kh)
193  nmin += phiBinner.size(kk + hoff);
194 #endif
195  auto const* __restrict__ p = phiBinner.begin(kk + hoff);
196  auto const* __restrict__ e = phiBinner.end(kk + hoff);
197  p += first;
198  for (; p < e; p += stride) {
199  auto oi = __ldg(p);
200  assert(oi >= offsets[outer]);
201  assert(oi < offsets[outer + 1]);
202  auto mo = hh.detectorIndex(oi);
204  continue; // invalid
205 
206  if (doZ0Cut && z0cutoff(oi))
207  continue;
208 
209  auto mop = hh.iphi(oi);
210  uint16_t idphi = std::min(std::abs(int16_t(mop - mep)), std::abs(int16_t(mep - mop)));
211  if (idphi > iphicut)
212  continue;
213 
214  if (doClusterCut && zsizeCut(oi))
215  continue;
216  if (doPtCut && ptcut(oi, idphi))
217  continue;
218 
219  auto ind = atomicAdd(nCells, 1);
220  if (ind >= maxNumOfDoublets) {
221  atomicSub(nCells, 1);
222  break;
223  } // move to SimpleVector??
224  // int layerPairId, int doubletId, int innerHitId, int outerHitId)
225  cells[ind].init(*cellNeighbors, *cellTracks, hh, pairLayerId, i, oi);
226  isOuterHitOfCell[oi].push_back(ind);
227 #ifdef GPU_DEBUG
228  if (isOuterHitOfCell[oi].full())
229  ++tooMany;
230  ++tot;
231 #endif
232  }
233  }
234 #ifdef GPU_DEBUG
235  if (tooMany > 0)
236  printf("OuterHitOfCell full for %d in layer %d/%d, %d,%d %d\n", i, inner, outer, nmin, tot, tooMany);
237 #endif
238  } // loop in block...
__constant__ float const maxz[nPairs]
__constant__ float const minz[nPairs]
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const * cellNeighbors
T1 atomicSub(T1 *a, T2 b)
Definition: cudaCompat.h:73
auto const & hh
__constant__ float const maxr[nPairs]
uint32_t const *__restrict__ offsets
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ nCells
constexpr int nPairs
auto const &__restrict__ phiBinner
Definition: GenABIO.cc:168
__shared__ uint32_t innerLayerCumulativeSize[nPairsMax]
Abs< T >::type abs(const T &t)
Definition: Abs.h:22
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const isOuterHitOfCell
double f[11][100]
constexpr uint16_t maxNumModules
constexpr int maxDYsize12
assert(nPairs<=nPairsMax)
Quality *__restrict__ uint16_t nmin
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool ideal_cond
__constant__ const int16_t phicuts[nPairs]
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ cells
constexpr float dzdrFact
T __ldg(T const *x)
Definition: cudaCompat.h:137
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const * cellTracks
constexpr float short2phi(short x)
Definition: approx_atan2.h:285
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool uint32_t maxNumOfDoublets
constexpr int minYsizeB2
T1 atomicAdd(T1 *a, T2 b)
Definition: cudaCompat.h:61

◆ if()

gpuPixelDoublets::if ( threadIdx.  y = = 0 && threadIdx.x == 0)

Definition at line 68 of file gpuPixelDoubletsAlgos.h.

References mps_fire::i, innerLayerCumulativeSize, layerPairs, layerSize, nPairs, and ntot.

68  {
70  for (uint32_t i = 1; i < nPairs; ++i) {
72  }
74  }
constexpr int nPairs
__shared__ uint32_t innerLayerCumulativeSize[nPairsMax]
__shared__ uint32_t ntot

Variable Documentation

◆ cellNeighbors

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector * gpuPixelDoublets::cellNeighbors

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ cells

__device__ uint32_t GPUCACell* gpuPixelDoublets::cells

Definition at line 26 of file gpuPixelDoubletsAlgos.h.

Referenced by __attribute__(), and for().

◆ cellTracks

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector * gpuPixelDoublets::cellTracks

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ doClusterCut

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ bool bool gpuPixelDoublets::doClusterCut

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ doPtCut

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ bool bool bool bool gpuPixelDoublets::doPtCut

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ doZ0Cut

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ bool bool bool gpuPixelDoublets::doZ0Cut

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ dzdrFact

constexpr float gpuPixelDoublets::dzdrFact = 8 * 0.0285 / 0.015

Definition at line 49 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ first

auto gpuPixelDoublets::first = threadIdx.x

Definition at line 79 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ getDoubletsFromHistoMaxBlockSize

constexpr auto gpuPixelDoublets::getDoubletsFromHistoMaxBlockSize = 64

Definition at line 91 of file gpuPixelDoublets.h.

◆ getDoubletsFromHistoMinBlocksPerMP

constexpr auto gpuPixelDoublets::getDoubletsFromHistoMinBlocksPerMP = 16

Definition at line 92 of file gpuPixelDoublets.h.

◆ hh

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const& __restrict__ gpuPixelDoublets::hh

Definition at line 26 of file gpuPixelDoubletsAlgos.h.

Referenced by __attribute__(), and for().

◆ hhp

uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const* __restrict__ gpuPixelDoublets::hhp

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by __attribute__().

◆ ideal_cond

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ bool gpuPixelDoublets::ideal_cond

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ idy

auto gpuPixelDoublets::idy = blockIdx.y * blockDim.y + threadIdx.y

Definition at line 78 of file gpuPixelDoubletsAlgos.h.

Referenced by __attribute__(), and TTUTrackingAlg::runSeedBuster().

◆ innerLayerCumulativeSize

__shared__ uint32_t gpuPixelDoublets::innerLayerCumulativeSize[nPairsMax]

Definition at line 66 of file gpuPixelDoubletsAlgos.h.

Referenced by for(), and if().

◆ isOuterHitOfCell

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell gpuPixelDoublets::isOuterHitOfCell

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by __attribute__(), and for().

◆ isOuterLadder

bool gpuPixelDoublets::isOuterLadder = ideal_cond

Definition at line 51 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ layerPairs

__constant__ const uint8_t gpuPixelDoublets::layerPairs[2 *nPairs]
Initial value:
= {
0, 1, 0, 4, 0, 7,
1, 2, 1, 4, 1, 7,
4, 5, 7, 8,
2, 3, 2, 4, 2, 7, 5, 6, 8, 9,
0, 2, 1, 3,
0, 5, 0, 8,
4, 6, 7, 9
}

Definition at line 18 of file gpuPixelDoublets.h.

Referenced by for(), and if().

◆ layerSize

auto gpuPixelDoublets::layerSize = [=](uint8_t li) { return offsets[li + 1] - offsets[li]; }

Definition at line 59 of file gpuPixelDoubletsAlgos.h.

Referenced by if().

◆ maxDYPred

constexpr int gpuPixelDoublets::maxDYPred = 20

Definition at line 48 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ maxDYsize

constexpr int gpuPixelDoublets::maxDYsize = 20

Definition at line 47 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ maxDYsize12

constexpr int gpuPixelDoublets::maxDYsize12 = 28

Definition at line 46 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ maxNumOfDoublets

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ bool bool bool bool uint32_t gpuPixelDoublets::maxNumOfDoublets
Initial value:
{
auto const& __restrict__ hh = *hhp
auto const & hh
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ hhp

Definition at line 109 of file gpuPixelDoublets.h.

Referenced by for().

◆ maxr

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ float const *__restrict__ gpuPixelDoublets::maxr
Initial value:
= {
20., 9., 9., 20., 7., 7., 5., 5., 20., 6., 6., 5., 5., 20., 20., 9., 9., 9., 9.}

Definition at line 57 of file gpuPixelDoublets.h.

Referenced by for(), and SiPixelDQMRocLevelAnalyzer::RocSumOneModule().

◆ maxz

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ float const *__restrict__ gpuPixelDoublets::maxz
Initial value:
= {
20., 30., 0., 22., 30., -10., 70., 70., 22., 30., -15., 70., 70., 20., 22., 30., 0., 70., 70.}

Definition at line 55 of file gpuPixelDoublets.h.

Referenced by for(), MultiHitGeneratorFromChi2::hitSets(), reco::modules::ParameterAdapter< CalIsolationAlgo< T, C > >::make(), and PixelRegion::PixelRegion().

◆ minYsizeB2

constexpr int gpuPixelDoublets::minYsizeB2 = 28

Definition at line 45 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ minz

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ float const *__restrict__ gpuPixelDoublets::minz
Initial value:
= {
-20., 0., -30., -22., 10., -30., -70., -70., -22., 15., -30, -70., -70., -20., -22., 0, -30., -70., -70.}

Definition at line 53 of file gpuPixelDoublets.h.

Referenced by for(), MultiHitGeneratorFromChi2::hitSets(), reco::modules::ParameterAdapter< CalIsolationAlgo< T, C > >::make(), TrackExtrapolator::propagateTrackToVolume(), and CalibrationScanAlgorithm::tuneSimultaneously().

◆ nActualPairs

uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const* __restrict__ GPUCACell::OuterHitOfCell int gpuPixelDoublets::nActualPairs

◆ nCells

__device__ uint32_t GPUCACell uint32_t * gpuPixelDoublets::nCells

Definition at line 99 of file gpuPixelDoublets.h.

Referenced by for().

◆ nPairs

__device__ uint32_t gpuPixelDoublets::nPairs = nPairsForTriplets + 4

◆ nPairsForQuadruplets

constexpr int gpuPixelDoublets::nPairsForQuadruplets = 13

◆ nPairsForTriplets

constexpr int gpuPixelDoublets::nPairsForTriplets = nPairsForQuadruplets + 2

◆ nPairsMax

const int gpuPixelDoublets::nPairsMax = caConstants::maxNumberOfLayerPairs

Definition at line 64 of file gpuPixelDoubletsAlgos.h.

◆ ntot

__shared__ uint32_t gpuPixelDoublets::ntot

◆ offsets

uint32_t const* __restrict__ gpuPixelDoublets::offsets = hh.hitsLayerStart()

Definition at line 56 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ pairLayerId

uint32_t gpuPixelDoublets::pairLayerId = 0

Definition at line 82 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ phi0p05

constexpr int16_t gpuPixelDoublets::phi0p05 = 522

Definition at line 28 of file gpuPixelDoublets.h.

◆ phi0p06

constexpr int16_t gpuPixelDoublets::phi0p06 = 626

Definition at line 29 of file gpuPixelDoublets.h.

◆ phi0p07

constexpr int16_t gpuPixelDoublets::phi0p07 = 730

Definition at line 30 of file gpuPixelDoublets.h.

◆ phiBinner

auto const& __restrict__ gpuPixelDoublets::phiBinner = hh.phiBinner()

Definition at line 55 of file gpuPixelDoubletsAlgos.h.

Referenced by for().

◆ phicuts

__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ GPUCACell::OuterHitOfCell int16_t const *__restrict__ gpuPixelDoublets::phicuts
Initial value:

Definition at line 32 of file gpuPixelDoublets.h.

Referenced by for().

◆ stride

auto gpuPixelDoublets::stride = blockDim.x