File indexing completed on 2025-07-03 00:42:42
0001 #ifndef RecoTracker_PixelSeeding_plugins_alpaka_CAStructures_h
0002 #define RecoTracker_PixelSeeding_plugins_alpaka_CAStructures_h
0003
0004 #include "HeterogeneousCore/AlpakaInterface/interface/SimpleVector.h"
0005 #include "HeterogeneousCore/AlpakaInterface/interface/VecArray.h"
0006 #include "HeterogeneousCore/AlpakaInterface/interface/HistoContainer.h"
0007
0008 namespace caStructures {
0009
0010 using Quality = ::pixelTrack::Quality;
0011
0012
0013 struct AlgoParams {
0014
0015 float avgHitsPerTrack_;
0016 float avgCellsPerHit_;
0017 float avgCellsPerCell_;
0018 float avgTracksPerCell_;
0019
0020
0021 uint16_t minHitsPerNtuplet_;
0022 uint16_t minHitsForSharingCut_;
0023 float ptmin_;
0024 float hardCurvCut_;
0025 float cellZ0Cut_;
0026 float cellPtCut_;
0027
0028
0029 float dzdrFact_;
0030 int16_t minYsizeB1_;
0031 int16_t minYsizeB2_;
0032 int16_t maxDYsize12_;
0033 int16_t maxDYsize_;
0034 int16_t maxDYPred_;
0035
0036
0037 bool useRiemannFit_;
0038 bool fitNas4_;
0039 bool earlyFishbone_;
0040 bool lateFishbone_;
0041 bool doStats_;
0042 bool doSharedHitCut_;
0043 bool dupPassThrough_;
0044 bool useSimpleTripletCleaner_;
0045 };
0046
0047
0048 using HitsView = ::reco::TrackingRecHitView;
0049 using HitModulesConstView = ::reco::HitModuleSoAConstView;
0050 using HitsConstView = ::reco::TrackingRecHitConstView;
0051
0052
0053 using TkSoAView = ::reco::TrackSoAView;
0054 using TkHitsSoAView = ::reco::TrackHitSoAView;
0055
0056
0057 using hindex_type = uint32_t;
0058 using tindex_type = uint32_t;
0059 using cindex_type = uint32_t;
0060
0061 using GenericContainer = cms::alpakatools::OneToManyAssocRandomAccess<hindex_type, -1, -1>;
0062 using GenericContainerStorage = typename GenericContainer::index_type;
0063 using GenericContainerOffsets = typename GenericContainer::Counter;
0064 using GenericContainerView = typename GenericContainer::View;
0065
0066 using SequentialContainer = cms::alpakatools::OneToManyAssocSequential<hindex_type, -1, -1>;
0067 using SequentialContainerStorage = typename SequentialContainer::index_type;
0068 using SequentialContainerOffsets = typename SequentialContainer::Counter;
0069 using SequentialContainerView = typename SequentialContainer::View;
0070
0071 template <typename TrackerTraits>
0072 using PhiBinnerT =
0073 cms::alpakatools::HistoContainer<int16_t, 256, -1, 8 * sizeof(int16_t), hindex_type, TrackerTraits::numberOfLayers>;
0074
0075 template <typename TrackerTraits>
0076 using CellNeighborsT =
0077 cms::alpakatools::VecArray<typename TrackerTraits::cindex_type, TrackerTraits::maxCellNeighbors>;
0078
0079 template <typename TrackerTraits>
0080 using CellTracksT = cms::alpakatools::VecArray<tindex_type, TrackerTraits::maxCellTracks>;
0081
0082 template <typename TrackerTraits>
0083 using CellNeighborsVectorT = cms::alpakatools::SimpleVector<CellNeighborsT<TrackerTraits>>;
0084
0085 template <typename TrackerTraits>
0086 using CellTracksVectorT = cms::alpakatools::SimpleVector<CellTracksT<TrackerTraits>>;
0087
0088 template <typename TrackerTraits>
0089 using OuterHitOfCellContainerT = cms::alpakatools::VecArray<uint32_t, TrackerTraits::maxCellsPerHit>;
0090
0091 template <typename TrackerTraits>
0092 using TupleMultiplicityT = cms::alpakatools::
0093 OneToManyAssocRandomAccess<tindex_type, TrackerTraits::maxHitsOnTrack + 1, TrackerTraits::maxNumberOfTuples>;
0094
0095 template <typename TrackerTraits>
0096 using HitContainerT =
0097 cms::alpakatools::OneToManyAssocSequential<uint32_t,
0098 TrackerTraits::maxNumberOfTuples + 1,
0099 TrackerTraits::avgHitsPerTrack * TrackerTraits::maxNumberOfTuples>;
0100
0101 template <typename TrackerTraits>
0102 using HitToTupleT =
0103 cms::alpakatools::OneToManyAssocRandomAccess<tindex_type,
0104 -1,
0105 TrackerTraits::maxNumberOfTuples *
0106 TrackerTraits::avgHitsPerTrack>;
0107
0108 template <typename TrackerTraits>
0109 using TuplesContainerT = cms::alpakatools::OneToManyAssocRandomAccess<typename TrackerTraits::hindex_type,
0110 TrackerTraits::maxNumberOfTuples,
0111 TrackerTraits::maxHitsForContainers>;
0112
0113 template <typename TrackerTraits>
0114 struct OuterHitOfCellT {
0115 OuterHitOfCellContainerT<TrackerTraits>* container;
0116 int32_t offset;
0117 constexpr auto& operator[](int i) { return container[i - offset]; }
0118 constexpr auto const& operator[](int i) const { return container[i - offset]; }
0119 };
0120
0121 }
0122
0123 #endif