Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2024-04-06 12:26:22

0001 #ifndef RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsHost_h
0002 #define RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsHost_h
0003 
0004 #include <alpaka/alpaka.hpp>
0005 
0006 #include "CondFormats/SiPixelTransient/interface/SiPixelGenError.h"
0007 #include "DataFormats/GeometrySurface/interface/SOARotation.h"
0008 #include "DataFormats/SiPixelClusterSoA/interface/ClusteringConstants.h"
0009 #include "DataFormats/TrackingRecHitSoA/interface/SiPixelHitStatus.h"
0010 #include "Geometry/CommonTopologies/interface/SimplePixelTopology.h"
0011 #include "HeterogeneousCore/AlpakaInterface/interface/CopyToDevice.h"
0012 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0013 #include "HeterogeneousCore/AlpakaInterface/interface/memory.h"
0014 #include "RecoLocalTracker/SiPixelRecHits/interface/PixelCPEGenericBase.h"
0015 #include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforDevice.h"
0016 
0017 template <typename TrackerTraits>
0018 class PixelCPEFastParamsHost : public PixelCPEGenericBase {
0019 public:
0020   using Buffer = cms::alpakatools::host_buffer<pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>>;
0021   using ConstBuffer = cms::alpakatools::const_host_buffer<pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>>;
0022 
0023   PixelCPEFastParamsHost(edm::ParameterSet const& conf,
0024                          const MagneticField* mag,
0025                          const TrackerGeometry& geom,
0026                          const TrackerTopology& ttopo,
0027                          const SiPixelLorentzAngle* lorentzAngle,
0028                          const SiPixelGenErrorDBObject* genErrorDBObject,
0029                          const SiPixelLorentzAngle* lorentzAngleWidth);
0030 
0031   // non-copyable
0032   PixelCPEFastParamsHost(PixelCPEFastParamsHost const&) = delete;
0033   PixelCPEFastParamsHost& operator=(PixelCPEFastParamsHost const&) = delete;
0034 
0035   // movable
0036   PixelCPEFastParamsHost(PixelCPEFastParamsHost&&) = default;
0037   PixelCPEFastParamsHost& operator=(PixelCPEFastParamsHost&&) = default;
0038 
0039   // default destructor
0040   ~PixelCPEFastParamsHost() override = default;
0041 
0042   // access the buffer
0043   Buffer buffer() { return buffer_; }
0044   ConstBuffer buffer() const { return buffer_; }
0045   ConstBuffer const_buffer() const { return buffer_; }
0046 
0047   auto size() const { return alpaka::getExtentProduct(buffer_); }
0048 
0049   pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits> const* data() const { return buffer_.data(); }
0050 
0051   static void fillPSetDescription(edm::ParameterSetDescription& desc);
0052 
0053 private:
0054   LocalPoint localPosition(DetParam const& theDetParam, ClusterParam& theClusterParam) const override;
0055   LocalError localError(DetParam const& theDetParam, ClusterParam& theClusterParam) const override;
0056 
0057   void errorFromTemplates(DetParam const& theDetParam, ClusterParamGeneric& theClusterParam, float qclus) const;
0058 
0059   std::vector<SiPixelGenErrorStore> thePixelGenError_;
0060 
0061   void fillParamsForDevice();
0062 
0063   Buffer buffer_;
0064 };
0065 
0066 #endif  // RecoLocalTracker_SiPixelRecHits_interface_PixelCPEFastParamsHost_h