Go to the documentation of this file. 1 #ifndef RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
2 #define RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
58 uint32_t minHitsPerNtuplet,
60 uint16_t minHitsForSharingCuts,
63 bool includeJumpingForwardDoublets,
73 bool useSimpleTripletCleaner,
75 float CAThetaCutBarrel,
76 float CAThetaCutForward,
78 float dcaCutInnerTriplet,
79 float dcaCutOuterTriplet,
133 {0.68177776, 0.74609577, -0.08035491, 0.00315399},
155 template <
typename TTraits>
164 template <
typename T>
192 void cleanup(cudaStream_t cudaStream);
242 #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
void allocateOnGPU(int32_t nHits, cudaStream_t stream)
void setCounters(Counters *counters)
const uint32_t *__restrict__ HitContainer Quality bool dupPassThrough
const uint16_t minHitsForSharingCut_
cAHitNtupletGenerator::Counters Counters
unsigned long long nLooseTracks
uint32_t const T *__restrict__ const uint32_t *__restrict__ int32_t int Histo::index_type cudaStream_t stream
unique_ptr< caConstants::CellTracksVector > device_theCellTracks_
const float dcaCutInnerTriplet_
unique_ptr< caConstants::CellNeighborsVector > device_theCellNeighbors_
~CAHitNtupletGeneratorKernels()=default
cms::cuda::OneToManyAssoc< tindex_type, -1, 4 *maxTuples > HitToTuple
unique_ptr< GPUCACell[]> device_theCells_
uint32_t nDoubletBlocks(uint32_t blockSize)
Compute the number of doublet blocks for block size.
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, bool dupPassThrough, bool useSimpleTripletCleaner, float ptmin, float CAThetaCutBarrel, float CAThetaCutForward, float hardCurvCut, float dcaCutInnerTriplet, float dcaCutOuterTriplet, QualityCuts const &cuts)
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 dupPassThrough_
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__ int32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
const uint32_t maxNumberOfDoublets_
caConstants::CellNeighbors * device_theCellNeighborsContainer_
const uint32_t minHitsPerNtuplet_
const caConstants::TupleMultiplicity *__restrict__ const HitsOnGPU *__restrict__ double *__restrict__ float *__restrict__ double *__restrict__ uint32_t nHits
const bool useSimpleTripletCleaner_
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__ int32_t uint32_t maxNumberOfDoublets
HitToTuple::View hitToTupleView_
unique_ptr< HitToTuple::Counter[]> device_hitToTupleStorage_
const bool useRiemannFit_
unique_ptr< unsigned char[]> cellStorage_
void buildDoublets(HitsOnCPU const &hh, cudaStream_t stream)
TrackSoA::HitContainer HitContainer
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_