1 #ifndef RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h 2 #define RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h 24 template <
typename TrackerTraits>
26 template <
typename TrackerTraits>
28 template <
typename TrackerTraits>
30 template <
typename TrackerTraits>
32 template <
typename TrackerTraits>
34 template <
typename TrackerTraits>
37 template <
typename TrackerTraits>
40 using T = TrackerTraits;
49 const uint32_t mi =
hh[
i].detectorIndex();
51 bool innerB1 = mi < T::last_bpix1_detIndex;
58 const uint32_t
mo =
hh[
o].detectorIndex();
76 const uint32_t mi =
hh[
i].detectorIndex();
82 bool innerB1 = mi < T::last_bpix1_detIndex;
87 if (
mes > 0 &&
mes < T::minYsizeB1)
89 bool innerB2 = (mi >= T::last_bpix1_detIndex) && (mi < T::last_bpix2_detIndex);
91 if (
mes > 0 &&
mes < T::minYsizeB2)
98 template <
typename TrackerTraits>
104 HitsConstView<TrackerTraits>
hh,
106 CellCutsT<TrackerTraits>
const&
cuts) {
118 uint32_t
const* __restrict__
offsets =
hh.hitsLayerStart().data();
158 auto hoff = PhiBinner::histOff(
outer);
176 auto mez =
hh[
i].zGlobal();
184 auto mep =
hh[
i].iphi();
185 auto mer =
hh[
i].rGlobal();
189 constexpr
float hardPtCut = TrackerTraits::doubletHardPt;
191 constexpr
float minRadius = hardPtCut * 87.78f;
192 constexpr
float minRadius2T4 = 4.f * minRadius * minRadius;
193 auto ptcut = [&](
int j, int16_t idphi) {
194 auto r2t4 = minRadius2T4;
196 auto ro =
hh[
j].rGlobal();
198 return dphi * dphi * (r2t4 - ri * ro) > (ro - ri) * (ro - ri);
200 auto z0cutoff = [&](
int j) {
201 auto zo =
hh[
j].zGlobal();
202 auto ro =
hh[
j].rGlobal();
221 for (
auto kk = kl;
kk != khh; incr(
kk)) {
223 if (
kk != kl &&
kk != kh)
226 auto const* __restrict__
p =
phiBinner.begin(
kk + hoff);
233 auto mo =
hh[oi].detectorIndex();
240 auto mop =
hh[oi].iphi();
268 printf(
"OuterHitOfCell full for %d in layer %d/%d, %d,%d %d, %d %.3f %.3f\n",
284 #endif // RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h
TrackingRecHitSoAConstView< TrackerTraits > HitsConstView
int CellNeighborsVector< TrackerTraits > * cellNeighbors
caStructures::CellNeighborsVectorT< TrackerTraits > CellNeighborsVector
T1 atomicSub(T1 *a, T2 b)
constexpr int16_t phicuts[nPairs]
caStructures::CellNeighborsT< TrackerTraits > CellNeighbors
uint32_t const *__restrict__ offsets
const uint32_t maxNumOfDoublets
__shared__ uint32_t innerLayerCumulativeSize[TrackerTraits::nPairs]
constexpr uint16_t last_barrel_layer
typename TrackingRecHitSoA< TrackerTraits >::PhiBinner PhiBinner
uint32_t CellNeighborsVector< TrackerTraits > CellTracksVector< TrackerTraits > HitsConstView< TrackerTraits > hh
auto const &__restrict__ phiBinner
Abs< T >::type abs(const T &t)
GPUCACellT< TrackerTraits > * cells
constexpr uint16_t maxNumModules
caStructures::CellTracksT< TrackerTraits > CellTracks
int CellNeighborsVector< TrackerTraits > CellNeighbors< TrackerTraits > CellTracksVector< TrackerTraits > * cellTracks
GPUCACellT< TrackerTraits > uint32_t const *__restrict__ nCells
auto const isOuterHitOfCell
constexpr float short2phi(short x)
constexpr float minz[nPairs]
HitsConstView< TrackerTraits > H
if(innerB1) if(mes > 0 &&mes< T bool innerB2
const uint32_t maxNumberOfDoublets_
uint32_t CellNeighborsVector< TrackerTraits > CellTracksVector< TrackerTraits > HitsConstView< TrackerTraits > OuterHitOfCell< TrackerTraits > int CellCutsT< TrackerTraits > cuts
constexpr float maxz[nPairs]
caStructures::CellTracksVectorT< TrackerTraits > CellTracksVector
caStructures::OuterHitOfCellT< TrackerTraits > OuterHitOfCell
const bool idealConditions_
typename GPUCACellT< TrackerTraits >::HitsConstView HitsConstView
T1 atomicAdd(T1 *a, T2 b)
constexpr float maxr[nPairs]