1 #include <cuda_runtime.h>
22 #undef PIXVERTEX_DEBUG_PRODUCE
51 : onGPU_(conf.getParameter<bool>(
"onGPU")),
52 gpuAlgo_(conf.getParameter<bool>(
"oneKernel"),
53 conf.getParameter<bool>(
"useDensity"),
54 conf.getParameter<bool>(
"useDBSCAN"),
55 conf.getParameter<bool>(
"useIterative"),
56 conf.getParameter<int>(
"minT"),
57 conf.getParameter<double>(
"eps"),
58 conf.getParameter<double>(
"errmax"),
59 conf.getParameter<double>(
"chi2max")),
60 ptMin_(conf.getParameter<double>(
"PtMin")),
61 ptMax_(conf.getParameter<double>(
"PtMax"))
78 desc.
add<
bool>(
"onGPU",
true);
79 desc.
add<
bool>(
"oneKernel",
true);
80 desc.
add<
bool>(
"useDensity",
true);
81 desc.
add<
bool>(
"useDBSCAN",
false);
82 desc.
add<
bool>(
"useIterative",
false);
84 desc.
add<
int>(
"minT", 2);
85 desc.
add<
double>(
"eps", 0.07);
86 desc.
add<
double>(
"errmax", 0.01);
87 desc.
add<
double>(
"chi2max", 9.);
89 desc.
add<
double>(
"PtMin", 0.5);
90 desc.
add<
double>(
"PtMax", 75.);
93 auto label =
"pixelVerticesCUDA";
94 descriptions.
add(label, desc);
104 auto const*
tracks = ctx.get(*hTracks).get();
117 #ifdef PIXVERTEX_DEBUG_PRODUCE
118 auto const& tsoa = *
tracks;
123 for (int32_t it = 0; it <
maxTracks; ++it) {
124 auto nHits = tsoa.nHits(it);
130 std::cout <<
"found " << nt <<
" tracks in cpu SoA for Vertexing at " <<
tracks << std::endl;
131 #endif // PIXVERTEX_DEBUG_PRODUCE
PixelVertexProducerCUDA(const edm::ParameterSet &iConfig)
edm::EDPutTokenT< ZVertexCUDAProduct > tokenGPUVertex_
bool getByToken(EDGetToken token, Handle< PROD > &result) const
#define DEFINE_FWK_MODULE(type)
edm::EDPutTokenT< ZVertexHeterogeneous > tokenCPUVertex_
edm::EDGetTokenT< cms::cuda::Product< PixelTrackHeterogeneous > > tokenGPUTrack_
void produceOnCPU(edm::StreamID streamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const
auto const & tracks
cannot be loose
ptMin_(conf.getParameter< double >("ptMin"))
static void fillDescriptions(edm::ConfigurationDescriptions &descriptions)
bool get(ProductID const &oid, Handle< PROD > &result) const
void produce(edm::StreamID streamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const override
ParameterDescriptionBase * add(U const &iLabel, T const &value)
ZVertexHeterogeneous make(TkSoA const *tksoa, float ptMin, float ptMax) const
void produceOnGPU(edm::StreamID streamID, edm::Event &iEvent, const edm::EventSetup &iSetup) const
OrphanHandle< PROD > emplace(EDPutTokenT< PROD > token, Args &&...args)
puts a new product
T getParameter(std::string const &) const
void add(std::string const &label, ParameterSetDescription const &psetDescription)
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
~PixelVertexProducerCUDA() override=default
edm::EDGetTokenT< PixelTrackHeterogeneous > tokenCPUTrack_
ZVertexHeterogeneous makeAsync(cudaStream_t stream, TkSoA const *tksoa, float ptMin, float ptMax) const
const gpuVertexFinder::Producer gpuAlgo_