Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:27:34

0001 #ifndef RecoParticleFlow_PFRecHitProducer_plugins_alpaka_PFRecHitProducerKernel_h
0002 #define RecoParticleFlow_PFRecHitProducer_plugins_alpaka_PFRecHitProducerKernel_h
0003 
0004 #include "DataFormats/ParticleFlowReco/interface/alpaka/PFRecHitDeviceCollection.h"
0005 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0006 #include "CalorimeterDefinitions.h"
0007 
0008 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0009 
0010   template <typename CAL>
0011   class PFRecHitProducerKernel {
0012   public:
0013     PFRecHitProducerKernel(Queue& queue, const uint32_t num_recHits);
0014 
0015     // Run kernel: apply filters to rec hits and construct PF rec hits
0016     // This may be executed multiple times per event
0017     void processRecHits(Queue& queue,
0018                         const typename CAL::CaloRecHitSoATypeDevice& recHits,
0019                         const typename CAL::ParameterType& params,
0020                         const typename CAL::TopologyTypeDevice& topology,
0021                         reco::PFRecHitDeviceCollection& pfRecHits);
0022 
0023     // Run kernel: Associate topology information (position, neighbours)
0024     void associateTopologyInfo(Queue& queue,
0025                                const typename CAL::TopologyTypeDevice& topology,
0026                                reco::PFRecHitDeviceCollection& pfRecHits);
0027 
0028   private:
0029     cms::alpakatools::device_buffer<Device, uint32_t[]> denseId2pfRecHit_;
0030     cms::alpakatools::device_buffer<Device, uint32_t> num_pfRecHits_;
0031     WorkDiv<Dim1D> work_div_;
0032   };
0033 
0034 }  // namespace ALPAKA_ACCELERATOR_NAMESPACE
0035 
0036 #endif  // RecoParticleFlow_PFRecHitProducer_plugins_alpaka_PFRecHitProducerKernel_h