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