Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
1 change: 1 addition & 0 deletions Detectors/ITSMFT/ITS/tracking/GPU/cuda/TimeFrameGPU.cu
Original file line number Diff line number Diff line change
Expand Up @@ -781,5 +781,6 @@ template class TimeFrameGPU<7>;
// ALICE3 upgrade
#ifdef ENABLE_UPGRADES
template class TimeFrameGPU<11>;
template class TimeFrameGPU<13>;
#endif
} // namespace o2::its::gpu
Original file line number Diff line number Diff line change
Expand Up @@ -452,5 +452,6 @@ void TrackerTraitsGPU<NLayers>::setBz(float bz)
template class TrackerTraitsGPU<7>;
#ifdef ENABLE_UPGRADES
template class TrackerTraitsGPU<11>;
template class TrackerTraitsGPU<13>;
#endif
} // namespace o2::its
200 changes: 200 additions & 0 deletions Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackingKernels.cu
Original file line number Diff line number Diff line change
Expand Up @@ -1633,5 +1633,205 @@ template void computeTrackSeedHandler(TrackSeed<11>* trackSeeds,
const o2::base::Propagator* propagator,
const o2::base::PropagatorF::MatCorrType matCorrType,
o2::its::ExternalAllocator* alloc);

template void countTrackletsInROFsHandler<13>(const IndexTableUtils<13>* utils,
const ROFMaskTable<13>::View& rofMask,
const int linkId,
const int fromLayer,
const int toLayer,
const ROFOverlapTable<13>::View& rofOverlaps,
const ROFVertexLookupTable<13>::View& vertexLUT,
const int vertexId,
const Vertex* vertices,
const int* rofPV,
const Cluster** clusters,
std::vector<unsigned int> nClusters,
const int** ROFClusters,
const unsigned char** usedClusters,
const int** clustersIndexTables,
int** trackletsLUTs,
gsl::span<int*> trackletsLUTsHost,
const bool selectUPCVertices,
const float NSigmaCut,
const TrackingTopology<13>::View topology,
bounded_vector<float>& linkPhiCuts,
const float resolutionPV,
std::array<float, 13>& minRs,
std::array<float, 13>& maxRs,
bounded_vector<float>& resolutions,
std::vector<float>& radii,
bounded_vector<float>& linkMSAngles,
o2::its::ExternalAllocator* alloc,
gpu::Streams& streams);

template void computeTrackletsInROFsHandler<13>(const IndexTableUtils<13>* utils,
const ROFMaskTable<13>::View& rofMask,
const int linkId,
const int fromLayer,
const int toLayer,
const ROFOverlapTable<13>::View& rofOverlaps,
const ROFVertexLookupTable<13>::View& vertexLUT,
const int vertexId,
const Vertex* vertices,
const int* rofPV,
const Cluster** clusters,
std::vector<unsigned int> nClusters,
const int** ROFClusters,
const unsigned char** usedClusters,
const int** clustersIndexTables,
Tracklet** tracklets,
gsl::span<Tracklet*> spanTracklets,
gsl::span<int> nTracklets,
int** trackletsLUTs,
gsl::span<int*> trackletsLUTsHost,
const bool selectUPCVertices,
const float NSigmaCut,
const TrackingTopology<13>::View topology,
bounded_vector<float>& linkPhiCuts,
const float resolutionPV,
std::array<float, 13>& minRs,
std::array<float, 13>& maxRs,
bounded_vector<float>& resolutions,
std::vector<float>& radii,
bounded_vector<float>& linkMSAngles,
o2::its::ExternalAllocator* alloc,
gpu::Streams& streams);

template void countCellsHandler<13>(const Cluster** sortedClusters,
const Cluster** unsortedClusters,
const TrackingFrameInfo** tfInfo,
Tracklet** tracklets,
int** trackletsLUT,
const int nTracklets,
const int cellTopologyId,
const TrackingTopology<13>::View topology,
CellSeed* cells,
int** cellsLUTsArrayDevice,
int* cellsLUTsHost,
const float bz,
const float maxChi2ClusterAttachment,
const float cellDeltaTanLambdaSigma,
const float nSigmaCut,
const std::vector<float>& layerxX0Host,
o2::its::ExternalAllocator* alloc,
gpu::Streams& streams);

template void computeCellsHandler<13>(const Cluster** sortedClusters,
const Cluster** unsortedClusters,
const TrackingFrameInfo** tfInfo,
Tracklet** tracklets,
int** trackletsLUT,
const int nTracklets,
const int cellTopologyId,
const TrackingTopology<13>::View topology,
CellSeed* cells,
int** cellsLUTsArrayDevice,
int* cellsLUTsHost,
const float bz,
const float maxChi2ClusterAttachment,
const float cellDeltaTanLambdaSigma,
const float nSigmaCut,
const std::vector<float>& layerxX0Host,
gpu::Streams& streams);

template void countCellNeighboursHandler<13>(CellSeed** cellsLayersDevice,
int* neighboursCursor,
int** cellsLUTs,
const int sourceCellTopologyId,
const int targetCellTopologyId,
const float maxChi2ClusterAttachment,
const float bz,
const unsigned int nCells,
gpu::Stream& stream);

template void computeCellNeighboursHandler<13>(CellSeed** cellsLayersDevice,
int* neighboursCursor,
int** cellsLUTs,
CellNeighbour* cellNeighbours,
const int sourceCellTopologyId,
const int targetCellTopologyId,
const float maxChi2ClusterAttachment,
const float bz,
const unsigned int nCells,
gpu::Stream& stream);

template void processNeighboursHandler<13>(const int startLevel,
const int defaultCellTopologyId,
CellSeed** allCellSeeds,
CellSeed* currentCellSeeds,
const int* currentCellTopologyIds,
const int* currentCellIds,
const int* nCells,
const unsigned char** usedClusters,
CellNeighbour** neighbours,
int** neighboursDeviceLUTs,
const TrackingFrameInfo** foundTrackingFrameInfo,
bounded_vector<TrackSeed<13>>& seedsHost,
const float bz,
const float maxChi2ClusterAttachment,
const float maxChi2NDF,
const int maxHoles,
const int minSeedingClusters,
const LayerMask holeLayerMask,
const LayerMask nonSeedingLayerMask,
const std::vector<float>& layerxX0Host,
const o2::base::Propagator* propagator,
const o2::base::PropagatorF::MatCorrType matCorrType,
o2::its::ExternalAllocator* alloc);

template void countTrackSeedHandler(TrackSeed<13>* trackSeeds,
const TrackingFrameInfo** foundTrackingFrameInfo,
const Cluster** unsortedClusters,
int* seedLUT,
const std::vector<float>& layerRadiiHost,
const std::vector<float>& minPtsHost,
const std::vector<float>& layerxX0Host,
const unsigned int nSeeds,
const float bz,
const float maxChi2ClusterAttachment,
const float maxChi2NDF,
const int reseedIfShorter,
const bool repeatRefitOut,
const bool shiftRefToCluster,
const o2::base::Propagator* propagator,
const o2::base::PropagatorF::MatCorrType matCorrType,
o2::its::ExternalAllocator* alloc);

template void computeTrackSeedHandler(TrackSeed<13>* trackSeeds,
const TrackingFrameInfo** foundTrackingFrameInfo,
const Cluster** unsortedClusters,
const IndexTableUtils<13>* utils,
const ROFMaskTable<13>::View& rofMask,
const ROFOverlapTable<13>::View& rofOverlaps,
const Cluster** clusters,
const unsigned char** usedClusters,
const int** clustersIndexTables,
const int** ROFClusters,
o2::its::TrackITSExt* tracks,
int* trackIndices,
const int* seedLUT,
TrackExtensionHypothesis<13>* activeHypotheses,
TrackExtensionHypothesis<13>* nextHypotheses,
const std::vector<float>& layerRadiiHost,
const std::vector<float>& minPtsHost,
const std::vector<float>& layerxX0Host,
const unsigned int nSeeds,
const unsigned int nTracks,
const float bz,
const float maxChi2ClusterAttachment,
const float maxChi2NDF,
const int reseedIfShorter,
const bool repeatRefitOut,
const bool shiftRefToCluster,
const int nLayers,
const int phiBins,
const int maxHypotheses,
const bool extendTop,
const bool extendBot,
const float nSigmaCutPhi,
const float nSigmaCutZ,
const o2::base::Propagator* propagator,
const o2::base::PropagatorF::MatCorrType matCorrType,
o2::its::ExternalAllocator* alloc);
#endif
} // namespace o2::its
Original file line number Diff line number Diff line change
Expand Up @@ -35,11 +35,11 @@ template <int NLayers>
class TrackingTopology
{
public:
using Id = uint8_t;
using Mask = LayerMask;
using Range = o2::dataformats::RangeReference<Id, Id>;
static constexpr int MaxLinks = (NLayers * (NLayers - 1)) / 2;
static constexpr int MaxCells = (NLayers * (NLayers - 1) * (NLayers - 2)) / 6;
using Id = std::conditional_t<MaxCells <= std::numeric_limits<uint8_t>::max(), uint8_t, uint16_t>;
using Mask = LayerMask;
using Range = o2::dataformats::RangeReference<Id, Id>;
static_assert(NLayers < std::numeric_limits<Id>::max());
static_assert(MaxLinks <= std::numeric_limits<Id>::max());
static_assert(MaxCells <= std::numeric_limits<Id>::max());
Expand Down
1 change: 1 addition & 0 deletions Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -530,6 +530,7 @@ template class TimeFrame<7>;
// ALICE3 upgrade
#ifdef ENABLE_UPGRADES
template class TimeFrame<11>;
template class TimeFrame<13>;
#endif

} // namespace o2::its
1 change: 1 addition & 0 deletions Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -266,6 +266,7 @@ template class Tracker<7>;
// ALICE3 upgrade
#ifdef ENABLE_UPGRADES
template class Tracker<11>;
template class Tracker<13>;
#endif

} // namespace o2::its
3 changes: 3 additions & 0 deletions Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx
Original file line number Diff line number Diff line change
Expand Up @@ -1017,6 +1017,9 @@ template void TrackerTraits<7>::processNeighbours<TrackSeed<7>>(int, int, int, c
template class TrackerTraits<11>;
template void TrackerTraits<11>::processNeighbours<CellSeed>(int, int, int, const bounded_vector<CellSeed>&, const bounded_vector<int>&, const bounded_vector<int>&, bounded_vector<TrackSeed<11>>&, bounded_vector<int>&, bounded_vector<int>&);
template void TrackerTraits<11>::processNeighbours<TrackSeed<11>>(int, int, int, const bounded_vector<TrackSeed<11>>&, const bounded_vector<int>&, const bounded_vector<int>&, bounded_vector<TrackSeed<11>>&, bounded_vector<int>&, bounded_vector<int>&);
template class TrackerTraits<13>;
template void TrackerTraits<13>::processNeighbours<CellSeed>(int, int, int, const bounded_vector<CellSeed>&, const bounded_vector<int>&, const bounded_vector<int>&, bounded_vector<TrackSeed<13>>&, bounded_vector<int>&, bounded_vector<int>&);
template void TrackerTraits<13>::processNeighbours<TrackSeed<13>>(int, int, int, const bounded_vector<TrackSeed<13>>&, const bounded_vector<int>&, const bounded_vector<int>&, bounded_vector<TrackSeed<13>>&, bounded_vector<int>&, bounded_vector<int>&);
#endif

} // namespace o2::its
Loading