Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:05:11

0001 #ifndef DataFormats_SiPixelClusterSoA_interface_SiPixelClustersDevice_h
0002 #define DataFormats_SiPixelClusterSoA_interface_SiPixelClustersDevice_h
0003 
0004 #include <cstdint>
0005 #include <alpaka/alpaka.hpp>
0006 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0007 #include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersHost.h"
0008 #include "DataFormats/Portable/interface/PortableDeviceCollection.h"
0009 #include "DataFormats/SiPixelClusterSoA/interface/SiPixelClustersSoA.h"
0010 #include "HeterogeneousCore/AlpakaInterface/interface/CopyToHost.h"
0011 
0012 template <typename TDev>
0013 class SiPixelClustersDevice : public PortableDeviceCollection<SiPixelClustersSoA, TDev> {
0014 public:
0015   SiPixelClustersDevice() = default;
0016 
0017   template <typename TQueue>
0018   explicit SiPixelClustersDevice(size_t maxModules, TQueue queue)
0019       : PortableDeviceCollection<SiPixelClustersSoA, TDev>(maxModules + 1, queue) {}
0020 
0021   // Constructor which specifies the SoA size
0022   explicit SiPixelClustersDevice(size_t maxModules, TDev const &device)
0023       : PortableDeviceCollection<SiPixelClustersSoA, TDev>(maxModules + 1, device) {}
0024 
0025   void setNClusters(uint32_t nClusters, int32_t offsetBPIX2) {
0026     nClusters_h = nClusters;
0027     offsetBPIX2_h = offsetBPIX2;
0028   }
0029 
0030   uint32_t nClusters() const { return nClusters_h; }
0031   int32_t offsetBPIX2() const { return offsetBPIX2_h; }
0032 
0033 private:
0034   uint32_t nClusters_h = 0;
0035   int32_t offsetBPIX2_h = 0;
0036 };
0037 
0038 #endif  // DataFormats_SiPixelClusterSoA_interface_SiPixelClustersDevice_h