1 #ifndef RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h 2 #define RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h 33 int16_t
const* __restrict__
phicuts,
34 float const* __restrict__
minz,
35 float const* __restrict__
maxz,
36 float const* __restrict__
maxr,
44 constexpr
int minYsizeB1 = 36;
56 uint32_t
const* __restrict__
offsets =
hh.hitsLayerStart();
107 auto mi =
hh.detectorIndex(
i);
117 auto mez =
hh.zGlobal(
i);
133 if (mes > 0 && mes < minYsizeB1)
139 auto mep =
hh.iphi(
i);
140 auto mer =
hh.rGlobal(
i);
143 constexpr
float z0cut = 12.f;
144 constexpr
float hardPtCut = 0.5f;
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;
151 auto ro =
hh.rGlobal(
j);
153 return dphi * dphi * (r2t4 - ri * ro) > (ro - ri) * (ro - ri);
155 auto z0cutoff = [&](
int j) {
156 auto zo =
hh.zGlobal(
j);
157 auto ro =
hh.rGlobal(
j);
162 auto zsizeCut = [&](
int j) {
163 auto onlyBarrel =
outer < 4;
164 auto so =
hh.clusterSizeY(
j);
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 &&
190 for (
auto kk = kl;
kk != khh; incr(
kk)) {
192 if (
kk != kl &&
kk != kh)
195 auto const* __restrict__
p =
phiBinner.begin(
kk + hoff);
202 auto mo =
hh.detectorIndex(oi);
209 auto mop =
hh.iphi(oi);
236 printf(
"OuterHitOfCell full for %d in layer %d/%d, %d,%d %d\n",
i,
inner,
outer,
nmin,
tot, tooMany);
243 #endif // RecoPixelVertexing_PixelTriplets_plugins_gpuPixelDoubletsAlgos_h
uint32_t CellNeighborsVector CellTracksVector * cellTracks
cms::cuda::VecArray< tindex_type, maxCellTracks > CellTracks
static constexpr auto histOff(uint32_t nh)
__constant__ const uint8_t layerPairs[2 *nPairs]
cms::cuda::SimpleVector< CellNeighbors > CellNeighborsVector
__constant__ float const maxz[nPairs]
__constant__ float const minz[nPairs]
__device__ uint32_t GPUCACell * cells
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool doZ0Cut
caConstants::CellNeighborsVector CellNeighborsVector
T1 atomicSub(T1 *a, T2 b)
constexpr uint32_t maxNumberOfLayerPairs
uint32_t const *__restrict__ offsets
__constant__ float const maxr[nPairs]
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool doPtCut
caConstants::CellNeighbors CellNeighbors
caConstants::CellTracks CellTracks
caConstants::CellTracksVector CellTracksVector
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell isOuterHitOfCell
__device__ int push_back(const T &element)
cms::cuda::SimpleVector< CellTracks > CellTracksVector
auto const &__restrict__ phiBinner
cms::cuda::HistoContainer< int16_t, 256, -1, 8 *sizeof(int16_t), hindex_type, pixelTopology::maxLayers > PhiBinner
__shared__ uint32_t innerLayerCumulativeSize[nPairsMax]
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool doClusterCut
Abs< T >::type abs(const T &t)
constexpr uint16_t maxNumModules
constexpr int maxDYsize12
Quality *__restrict__ uint16_t nmin
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool ideal_cond
__constant__ const int16_t phicuts[nPairs]
static constexpr uint32_t nbins()
static constexpr UT bin(T t)
constexpr float short2phi(short x)
uint32_t CellNeighborsVector * cellNeighbors
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool uint32_t maxNumOfDoublets
__device__ uint32_t GPUCACell uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const &__restrict__ hh
T1 atomicAdd(T1 *a, T2 b)
doubletsFromHisto(layerPairs, nActualPairs, cells, nCells, cellNeighbors, cellTracks, hh, isOuterHitOfCell, phicuts, minz, maxz, maxr, ideal_cond, doClusterCut, doZ0Cut, doPtCut, maxNumOfDoublets)
cms::cuda::VecArray< uint32_t, maxCellNeighbors > CellNeighbors