File indexing completed on 2024-04-06 12:02:09
0001 #ifndef CondFormats_EcalObjects_interface_EcalTimeBiasCorrectionsGPU_h
0002 #define CondFormats_EcalObjects_interface_EcalTimeBiasCorrectionsGPU_h
0003
0004 #include "CondFormats/EcalObjects/interface/EcalTimeBiasCorrections.h"
0005 #include "FWCore/Utilities/interface/propagate_const_array.h"
0006 #include "HeterogeneousCore/CUDAUtilities/interface/device_unique_ptr.h"
0007
0008 #ifndef __CUDACC__
0009 #include "HeterogeneousCore/CUDAUtilities/interface/HostAllocator.h"
0010 #include "HeterogeneousCore/CUDACore/interface/ESProduct.h"
0011 #endif
0012
0013 class EcalTimeBiasCorrectionsGPU {
0014 public:
0015 struct Product {
0016 edm::propagate_const_array<cms::cuda::device::unique_ptr<float[]>> ebTimeCorrAmplitudeBins;
0017 edm::propagate_const_array<cms::cuda::device::unique_ptr<float[]>> ebTimeCorrShiftBins;
0018 edm::propagate_const_array<cms::cuda::device::unique_ptr<float[]>> eeTimeCorrAmplitudeBins;
0019 edm::propagate_const_array<cms::cuda::device::unique_ptr<float[]>> eeTimeCorrShiftBins;
0020 int ebTimeCorrAmplitudeBinsSize, eeTimeCorrAmplitudeBinsSize;
0021 };
0022
0023
0024 EcalTimeBiasCorrectionsGPU(EcalTimeBiasCorrections const&);
0025
0026 #ifndef __CUDACC__
0027
0028
0029 ~EcalTimeBiasCorrectionsGPU() = default;
0030
0031
0032 Product const& getProduct(cudaStream_t) const;
0033
0034
0035 static std::string name() { return std::string{"ecalTimeBiasCorrectionsGPU"}; }
0036 #endif
0037
0038 private:
0039 std::vector<float, cms::cuda::HostAllocator<float>> ebTimeCorrAmplitudeBins_;
0040 std::vector<float, cms::cuda::HostAllocator<float>> ebTimeCorrShiftBins_;
0041 std::vector<float, cms::cuda::HostAllocator<float>> eeTimeCorrAmplitudeBins_;
0042 std::vector<float, cms::cuda::HostAllocator<float>> eeTimeCorrShiftBins_;
0043
0044 #ifndef __CUDACC__
0045 cms::cuda::ESProduct<Product> product_;
0046 #endif
0047 };
0048
0049 #endif