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
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