Go to the documentation of this file. 1 #ifndef RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
2 #define RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
55 uint32_t minHitsPerNtuplet,
57 uint16_t minHitsForSharingCuts,
60 bool includeJumpingForwardDoublets,
70 float CAThetaCutBarrel,
71 float CAThetaCutForward,
73 float dcaCutInnerTriplet,
74 float dcaCutOuterTriplet,
124 {0.68177776, 0.74609577, -0.08035491, 0.00315399},
146 template <
typename TTraits>
155 template <
typename T>
183 void cleanup(cudaStream_t cudaStream);
230 #endif // RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
const bool earlyFishbone_
unsigned long long nEvents
caConstants::CellTracks * device_theCellTracksContainer_
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool bool doPtCut
cms::cuda::AtomicPairCounter * device_hitTuple_apc_
const TkSoA *__restrict__ CAHitNtupletGeneratorKernelsGPU::QualityCuts cuts
Params(bool onGPU, uint32_t minHitsPerNtuplet, uint32_t maxNumberOfDoublets, uint16_t minHitsForSharingCuts, bool useRiemannFit, bool fit5as4, bool includeJumpingForwardDoublets, bool earlyFishbone, bool lateFishbone, bool idealConditions, bool doStats, bool doClusterCut, bool doZ0Cut, bool doPtCut, bool doSharedHitCut, float ptmin, float CAThetaCutBarrel, float CAThetaCutForward, float hardCurvCut, float dcaCutInnerTriplet, float dcaCutOuterTriplet, QualityCuts const &cuts)
void setCounters(Counters *counters)
const uint16_t minHitsForSharingCut_
cAHitNtupletGenerator::Counters Counters
void allocateOnGPU(cudaStream_t stream)
unique_ptr< caConstants::CellTracksVector > device_theCellTracks_
const float dcaCutInnerTriplet_
unique_ptr< caConstants::CellNeighborsVector > device_theCellNeighbors_
~CAHitNtupletGeneratorKernels()=default
unique_ptr< GPUCACell[]> device_theCells_
uint32_t nDoubletBlocks(uint32_t blockSize)
Compute the number of doublet blocks for block size.
constexpr uint32_t maxNumberOfQuadruplets
CAHitNtupletGeneratorKernels(Params const ¶ms)
void launchKernels(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
uint32_t * device_nCells_
unique_ptr< TupleMultiplicity > device_tupleMultiplicity_
cms::cuda::AtomicPairCounter * device_hitToTuple_apc_
const bool idealConditions_
const bool doSharedHitCut_
const caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple cms::cuda::AtomicPairCounter const GPUCACell *__restrict__ const uint32_t *__restrict__ const gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell *__restrict__ uint32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
const uint32_t maxNumberOfDoublets_
caConstants::CellNeighbors * device_theCellNeighborsContainer_
const uint32_t minHitsPerNtuplet_
cms::cuda::OneToManyAssoc< tindex_type, 8, maxTuples > TupleMultiplicity
unique_ptr< HitToTuple > device_hitToTuple_
void classifyTuples(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
uint32_t nQuadrupletBlocks(uint32_t blockSize)
Compute the number of quadruplet blocks for block size.
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool bool doZ0Cut
const float dcaCutOuterTriplet_
unsigned long long nDupHits
unique_ptr< GPUCACell::OuterHitOfCell[]> device_isOuterHitOfCell_
unique_ptr< cms::cuda::AtomicPairCounter::c_type[]> device_storage_
unsigned long long nZeroTrackCells
unsigned long long nEmptyCells
TrackingRecHit2DSOAView HitsView
unsigned long long nGoodTracks
const bool includeJumpingForwardDoublets_
const float CAThetaCutForward_
typename Traits::template unique_ptr< T > unique_ptr
unsigned long long nKilledCells
void fillHitDetIndices(HitsView const *hv, TkSoA *tuples_d, cudaStream_t cudaStream)
def template(fileName, svg, replaceme="REPLACEME")
unsigned long long nFitTracks
static void printCounters(Counters const *counters)
const uint32_t paramsMaxDoubletes3Quarters_
Intermediate result avoiding repeated computations.
TupleMultiplicity const * tupleMultiplicity() const
const caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple cms::cuda::AtomicPairCounter const GPUCACell *__restrict__ const uint32_t *__restrict__ const gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell *__restrict__ uint32_t uint32_t maxNumberOfDoublets
const bool useRiemannFit_
unique_ptr< unsigned char[]> cellStorage_
void buildDoublets(HitsOnCPU const &hh, cudaStream_t stream)
TrackSoA::HitContainer HitContainer
cms::cuda::OneToManyAssoc< tindex_type, pixelGPUConstants::maxNumberOfHits, 4 *maxTuples > HitToTuple
TrackSoAHeterogeneousT< maxNumber()> TrackSoA
uint32_t CellNeighborsVector CellTracksVector TrackingRecHit2DSOAView const *__restrict__ GPUCACell::OuterHitOfCell int bool bool doClusterCut
unsigned long long nCells
unsigned long long nUsedHits
unsigned long long nTuples
void cleanup(cudaStream_t cudaStream)
const float CAThetaCutBarrel_