1 #ifndef RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
2 #define RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
11 namespace cAHitNtupletGenerator {
61 uint16_t minHitsForSharingCuts,
134 {0.68177776, 0.74609577, -0.08035491, 0.00315399},
156 template <
typename TTraits>
165 template <
typename T>
191 void cleanup(cudaStream_t cudaStream);
242 #endif // RecoPixelVertexing_PixelTriplets_plugins_CAHitNtupletGeneratorKernels_h
const bool useRiemannFit_
void launchKernels(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
unsigned long long nCells
const bool includeJumpingForwardDoublets_
unique_ptr< HitToTuple > device_hitToTuple_
const bool doSharedHitCut_
Params(bool onGPU, uint32_t minHitsPerNtuplet, uint32_t maxNumberOfDoublets, uint16_t minHitsForSharingCuts, bool useRiemannFit, bool fitNas4, 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)
uint32_t nQuadrupletBlocks(uint32_t blockSize)
Compute the number of quadruplet blocks for block size.
const uint32_t paramsMaxDoubletes3Quarters_
Intermediate result avoiding repeated computations.
unsigned long long nTuples
void buildDoublets(HitsOnCPU const &hh, cudaStream_t stream)
HitToTuple::View hitToTupleView_
unsigned long long nLooseTracks
unique_ptr< HitToTuple::Counter[]> device_hitToTupleStorage_
constexpr uint32_t maxNumberOfQuadruplets
void classifyTuples(HitsOnCPU const &hh, TkSoA *tuples_d, cudaStream_t cudaStream)
unsigned long long nZeroTrackCells
tuple useSimpleTripletCleaner
typename Traits::template unique_ptr< T > unique_ptr
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t stream
static void printCounters(Counters const *counters)
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t uint32_t CAHitNtupletGeneratorKernelsGPU::Counters * counters
unsigned long long nEmptyCells
const uint32_t minHitsPerNtuplet_
TkSoA const *__restrict__ CAHitNtupletGeneratorKernelsGPU::QualityCuts cuts
const bool useSimpleTripletCleaner_
TupleMultiplicity const * tupleMultiplicity() const
const float dcaCutInnerTriplet_
void allocateOnGPU(int32_t nHits, cudaStream_t stream)
~CAHitNtupletGeneratorKernels()=default
tuple includeJumpingForwardDoublets
unique_ptr< GPUCACell[]> device_theCells_
uint32_t nDoubletBlocks(uint32_t blockSize)
Compute the number of doublet blocks for block size.
const bool earlyFishbone_
TrackSoA::HitContainer HitContainer
const uint16_t minHitsForSharingCut_
const bool idealConditions_
unique_ptr< caConstants::CellNeighborsVector > device_theCellNeighbors_
TrackSoAHeterogeneousT< maxNumber()> TrackSoA
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t uint32_t maxNumberOfDoublets
unique_ptr< unsigned char[]> cellStorage_
const float CAThetaCutForward_
unsigned long long nDupHits
const float dcaCutOuterTriplet_
CAHitNtupletGeneratorKernels(Params const ¶ms)
caConstants::CellNeighbors * device_theCellNeighborsContainer_
uint32_t * device_nCells_
unsigned long long nFitTracks
cms::cuda::AtomicPairCounter * device_hitTuple_apc_
unique_ptr< GPUCACell::OuterHitOfCellContainer[]> device_isOuterHitOfCell_
void cleanup(cudaStream_t cudaStream)
caConstants::TupleMultiplicity const CAHitNtupletGeneratorKernelsGPU::HitToTuple const cms::cuda::AtomicPairCounter GPUCACell const *__restrict__ uint32_t const *__restrict__ gpuPixelDoublets::CellNeighborsVector const gpuPixelDoublets::CellTracksVector const GPUCACell::OuterHitOfCell const int32_t nHits
unsigned long long nFishCells
GPUCACell::OuterHitOfCell isOuterHitOfCell_
caConstants::CellTracks * device_theCellTracksContainer_
uint32_t const *__restrict__ TkSoA const *__restrict__ Quality bool dupPassThrough
unique_ptr< cms::cuda::AtomicPairCounter::c_type[]> device_storage_
void setCounters(Counters *counters)
const float CAThetaCutBarrel_
cAHitNtupletGenerator::Counters Counters
const bool dupPassThrough_
cms::cuda::OneToManyAssoc< tindex_type,-1, 4 *maxTuples > HitToTuple
const uint32_t maxNumberOfDoublets_
unsigned long long nGoodTracks
unsigned long long nEvents
unsigned long long nKilledCells
cms::cuda::OneToManyAssoc< tindex_type, maxHitsOnTrack+1, maxTuples > TupleMultiplicity
unique_ptr< caConstants::CellTracksVector > device_theCellTracks_
unique_ptr< TupleMultiplicity > device_tupleMultiplicity_
cms::cuda::AtomicPairCounter * device_hitToTuple_apc_
unsigned long long nUsedHits