1 #ifndef RecoTracker_PixelSeeding_plugins_gpuPixelDoubletsAlgos_h 2 #define RecoTracker_PixelSeeding_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;
50 const std::vector<int>& phiCutsV)
72 const uint32_t mi =
hh[
i].detectorIndex();
74 bool innerB1 = mi < T::last_bpix1_detIndex;
81 const uint32_t
mo =
hh[
o].detectorIndex();
99 const uint32_t mi =
hh[
i].detectorIndex();
105 bool innerB1 = mi < T::last_bpix1_detIndex;
110 if (
mes > 0 &&
mes < T::minYsizeB1)
112 bool innerB2 = (mi >= T::last_bpix1_detIndex) && (mi < T::last_bpix2_detIndex);
114 if (
mes > 0 &&
mes < T::minYsizeB2)
121 template <
typename TrackerTraits>
128 HitsConstView<TrackerTraits>
hh,
130 CellCutsT<TrackerTraits>
const&
cuts) {
147 uint32_t
const* __restrict__
offsets =
hh.hitsLayerStart().data();
187 auto hoff = PhiBinner::histOff(
outer);
205 auto mez =
hh[
i].zGlobal();
213 auto mep =
hh[
i].iphi();
214 auto mer =
hh[
i].rGlobal();
216 auto ptcut = [&](
int j, int16_t idphi) {
219 auto ro =
hh[
j].rGlobal();
221 return dphi * dphi * (r2t4 - ri * ro) > (ro - ri) * (ro - ri);
223 auto z0cutoff = [&](
int j) {
224 auto zo =
hh[
j].zGlobal();
225 auto ro =
hh[
j].rGlobal();
244 for (
auto kk = kl;
kk != khh; incr(
kk)) {
246 if (
kk != kl &&
kk != kh)
249 auto const* __restrict__
p =
phiBinner.begin(
kk + hoff);
256 auto mo =
hh[oi].detectorIndex();
263 auto mop =
hh[oi].iphi();
290 if (tooMany > 0 ||
tot > 0)
291 printf(
"OuterHitOfCell for %d in layer %d/%d, %d,%d %d, %d %.3f %.3f %s\n",
301 tooMany > 0 ?
"FULL!!" :
"not full.");
308 #endif // RecoTracker_PixelSeeding_plugins_gpuPixelDoubletsAlgos_h
uint32_t CellNeighborsVector< TrackerTraits > CellTracksVector< TrackerTraits > HitsConstView< TrackerTraits > OuterHitOfCell< TrackerTraits > int const int maxNumOfDoublets
TrackingRecHitSoAConstView< TrackerTraits > HitsConstView
caStructures::CellNeighborsVectorT< TrackerTraits > CellNeighborsVector
T1 atomicSub(T1 *a, T2 b)
caStructures::CellNeighborsT< TrackerTraits > CellNeighbors
uint32_t CellNeighborsVector< TrackerTraits > CellTracksVector< TrackerTraits > HitsConstView< TrackerTraits > OuterHitOfCell< TrackerTraits > int const int CellCutsT< TrackerTraits > *const cuts
int CellNeighborsVector< TrackerTraits > CellNeighbors< TrackerTraits > CellTracksVector< TrackerTraits > * cellTracks
uint32_t const *__restrict__ offsets
GPUCACellT< TrackerTraits > * cells
CellCutsT(const bool doClusterCut, const bool doZ0Cut, const bool doPtCut, const bool idealConditions, const float z0Cut, const float ptCut, const std::vector< int > &phiCutsV)
__shared__ uint32_t innerLayerCumulativeSize[TrackerTraits::nPairs]
constexpr uint16_t last_barrel_layer
typename TrackingRecHitSoA< TrackerTraits >::PhiBinner PhiBinner
auto const &__restrict__ phiBinner
auto const isOuterHitOfCell
Abs< T >::type abs(const T &t)
GPUCACellT< TrackerTraits > uint32_t const *__restrict__ nCells
constexpr uint16_t maxNumModules
caStructures::CellTracksT< TrackerTraits > CellTracks
int CellNeighborsVector< TrackerTraits > * cellNeighbors
uint32_t CellNeighborsVector< TrackerTraits > CellTracksVector< TrackerTraits > HitsConstView< TrackerTraits > hh
constexpr float short2phi(short x)
constexpr float minz[nPairs]
HitsConstView< TrackerTraits > H
if(innerB1) if(mes > 0 &&mes< T bool innerB2
constexpr float maxz[nPairs]
caStructures::CellTracksVectorT< TrackerTraits > CellTracksVector
caStructures::OuterHitOfCellT< TrackerTraits > OuterHitOfCell
typename GPUCACellT< TrackerTraits >::HitsConstView HitsConstView
T1 atomicAdd(T1 *a, T2 b)
constexpr float maxr[nPairs]