Back to home page

Project CMSSW displayed by LXR

 
 

    


File indexing completed on 2025-07-03 00:42:41

0001 #ifndef RecoTracker_PixelSeeding_plugins_alpaka_CAHitNtupletGenerator_h
0002 #define RecoTracker_PixelSeeding_plugins_alpaka_CAHitNtupletGenerator_h
0003 
0004 #include <alpaka/alpaka.hpp>
0005 
0006 #include "DataFormats/SiPixelDetId/interface/PixelSubdetector.h"
0007 #include "DataFormats/TrackSoA/interface/TrackDefinitions.h"
0008 #include "DataFormats/TrackSoA/interface/alpaka/TracksSoACollection.h"
0009 #include "DataFormats/TrackSoA/interface/TracksHost.h"
0010 #include "DataFormats/TrackSoA/interface/TracksDevice.h"
0011 #include "DataFormats/TrackingRecHitSoA/interface/TrackingRecHitsSoA.h"
0012 #include "DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h"
0013 #include "FWCore/Framework/interface/EventSetup.h"
0014 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0015 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0016 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0017 #include "RecoTracker/PixelSeeding/interface/alpaka/CAGeometrySoACollection.h"
0018 
0019 #include "CACell.h"
0020 #include "CAHitNtupletGeneratorKernels.h"
0021 #include "HelixFit.h"
0022 
0023 namespace edm {
0024   class ParameterSetDescription;
0025 }  // namespace edm
0026 
0027 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0028 
0029   template <typename TrackerTraits>
0030   class CAHitNtupletGenerator {
0031   public:
0032     using HitsView = ::reco::TrackingRecHitView;
0033     using HitsConstView = ::reco::TrackingRecHitConstView;
0034     using HitsOnDevice = reco::TrackingRecHitsSoACollection;
0035     using HitsOnHost = ::reco::TrackingRecHitHost;
0036 
0037     using TkSoADevice = reco::TracksSoACollection;
0038     using Quality = ::pixelTrack::Quality;
0039 
0040     using QualityCuts = ::pixelTrack::QualityCutsT<TrackerTraits>;
0041     using Params = caHitNtupletGenerator::ParamsT<TrackerTraits>;
0042     using Counters = caHitNtupletGenerator::Counters;
0043 
0044     using CAGeometryOnDevice = reco::CAGeometrySoACollection;
0045 
0046   public:
0047     CAHitNtupletGenerator(const edm::ParameterSet& cfg);
0048 
0049     static void fillPSetDescription(edm::ParameterSetDescription& desc);
0050 
0051     // NOTE: beginJob and endJob were meant to be used
0052     // to fill the statistics. This is still not implemented in Alpaka
0053     // since we are missing the begin/endJob functionality for the Alpaka
0054     // producers.
0055     //
0056     // void beginJob();
0057     // void endJob();
0058 
0059     TkSoADevice makeTuplesAsync(HitsOnDevice const& hits_d,
0060                                 CAGeometryOnDevice const& params_d,
0061                                 float bfield,
0062                                 uint32_t maxDoublets,
0063                                 uint32_t maxTuples,
0064                                 Queue& queue) const;
0065 
0066   private:
0067     Params m_params;
0068   };
0069 
0070 }  // namespace ALPAKA_ACCELERATOR_NAMESPACE
0071 
0072 #endif  // RecoTracker_PixelSeeding_plugins_alpaka_CAHitNtupletGenerator_h