File indexing completed on 2024-04-06 12:28:31
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/TrackingRecHitSoA/interface/TrackingRecHitsSoA.h"
0010 #include "DataFormats/TrackingRecHitSoA/interface/alpaka/TrackingRecHitsSoACollection.h"
0011 #include "FWCore/Framework/interface/EventSetup.h"
0012 #include "FWCore/ParameterSet/interface/ParameterSet.h"
0013 #include "FWCore/ParameterSet/interface/ParameterSetDescription.h"
0014 #include "HeterogeneousCore/AlpakaInterface/interface/config.h"
0015 #include "RecoLocalTracker/SiPixelRecHits/interface/pixelCPEforDevice.h"
0016
0017 #include "CACell.h"
0018 #include "CAHitNtupletGeneratorKernels.h"
0019 #include "HelixFit.h"
0020
0021 namespace edm {
0022 class ParameterSetDescription;
0023 }
0024
0025 namespace ALPAKA_ACCELERATOR_NAMESPACE {
0026
0027 template <typename TrackerTraits>
0028 class CAHitNtupletGenerator {
0029 public:
0030 using HitsView = TrackingRecHitSoAView<TrackerTraits>;
0031 using HitsConstView = TrackingRecHitSoAConstView<TrackerTraits>;
0032 using HitsOnDevice = TrackingRecHitsSoACollection<TrackerTraits>;
0033 using HitsOnHost = TrackingRecHitHost<TrackerTraits>;
0034 using hindex_type = typename TrackingRecHitSoA<TrackerTraits>::hindex_type;
0035
0036 using HitToTuple = caStructures::HitToTupleT<TrackerTraits>;
0037 using TupleMultiplicity = caStructures::TupleMultiplicityT<TrackerTraits>;
0038 using OuterHitOfCell = caStructures::OuterHitOfCellT<TrackerTraits>;
0039
0040 using CACell = CACellT<TrackerTraits>;
0041 using TkSoAHost = TracksHost<TrackerTraits>;
0042 using TkSoADevice = TracksSoACollection<TrackerTraits>;
0043 using HitContainer = typename reco::TrackSoA<TrackerTraits>::HitContainer;
0044 using Tuple = HitContainer;
0045
0046 using CellNeighborsVector = caStructures::CellNeighborsVectorT<TrackerTraits>;
0047 using CellTracksVector = caStructures::CellTracksVectorT<TrackerTraits>;
0048
0049 using Quality = ::pixelTrack::Quality;
0050
0051 using QualityCuts = ::pixelTrack::QualityCutsT<TrackerTraits>;
0052 using Params = caHitNtupletGenerator::ParamsT<TrackerTraits>;
0053 using Counters = caHitNtupletGenerator::Counters;
0054
0055 using ParamsOnDevice = pixelCPEforDevice::ParamsOnDeviceT<TrackerTraits>;
0056
0057 public:
0058 CAHitNtupletGenerator(const edm::ParameterSet& cfg);
0059
0060 static void fillPSetDescription(edm::ParameterSetDescription& desc);
0061
0062
0063
0064
0065
0066
0067
0068
0069
0070 TkSoADevice makeTuplesAsync(HitsOnDevice const& hits_d,
0071 ParamsOnDevice const* cpeParams,
0072 float bfield,
0073 Queue& queue) const;
0074
0075 private:
0076 void buildDoublets(const HitsConstView& hh, Queue& queue) const;
0077
0078 void hitNtuplets(const HitsConstView& hh, const edm::EventSetup& es, bool useRiemannFit, Queue& queue);
0079
0080 void launchKernels(const HitsConstView& hh, bool useRiemannFit, Queue& queue) const;
0081
0082 Params m_params;
0083 };
0084
0085 }
0086
0087 #endif