Skip to content

Commit c2ca2d0

Browse files
mpucciof3sch
authored andcommitted
ITSMFT: add 13-layer tracking support
1 parent 9429beb commit c2ca2d0

7 files changed

Lines changed: 210 additions & 3 deletions

File tree

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TimeFrameGPU.cu

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -781,5 +781,6 @@ template class TimeFrameGPU<7>;
781781
// ALICE3 upgrade
782782
#ifdef ENABLE_UPGRADES
783783
template class TimeFrameGPU<11>;
784+
template class TimeFrameGPU<13>;
784785
#endif
785786
} // namespace o2::its::gpu

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackerTraitsGPU.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -452,5 +452,6 @@ void TrackerTraitsGPU<NLayers>::setBz(float bz)
452452
template class TrackerTraitsGPU<7>;
453453
#ifdef ENABLE_UPGRADES
454454
template class TrackerTraitsGPU<11>;
455+
template class TrackerTraitsGPU<13>;
455456
#endif
456457
} // namespace o2::its

Detectors/ITSMFT/ITS/tracking/GPU/cuda/TrackingKernels.cu

Lines changed: 200 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1633,5 +1633,205 @@ template void computeTrackSeedHandler(TrackSeed<11>* trackSeeds,
16331633
const o2::base::Propagator* propagator,
16341634
const o2::base::PropagatorF::MatCorrType matCorrType,
16351635
o2::its::ExternalAllocator* alloc);
1636+
1637+
template void countTrackletsInROFsHandler<13>(const IndexTableUtils<13>* utils,
1638+
const ROFMaskTable<13>::View& rofMask,
1639+
const int linkId,
1640+
const int fromLayer,
1641+
const int toLayer,
1642+
const ROFOverlapTable<13>::View& rofOverlaps,
1643+
const ROFVertexLookupTable<13>::View& vertexLUT,
1644+
const int vertexId,
1645+
const Vertex* vertices,
1646+
const int* rofPV,
1647+
const Cluster** clusters,
1648+
std::vector<unsigned int> nClusters,
1649+
const int** ROFClusters,
1650+
const unsigned char** usedClusters,
1651+
const int** clustersIndexTables,
1652+
int** trackletsLUTs,
1653+
gsl::span<int*> trackletsLUTsHost,
1654+
const bool selectUPCVertices,
1655+
const float NSigmaCut,
1656+
const TrackingTopology<13>::View topology,
1657+
bounded_vector<float>& linkPhiCuts,
1658+
const float resolutionPV,
1659+
std::array<float, 13>& minRs,
1660+
std::array<float, 13>& maxRs,
1661+
bounded_vector<float>& resolutions,
1662+
std::vector<float>& radii,
1663+
bounded_vector<float>& linkMSAngles,
1664+
o2::its::ExternalAllocator* alloc,
1665+
gpu::Streams& streams);
1666+
1667+
template void computeTrackletsInROFsHandler<13>(const IndexTableUtils<13>* utils,
1668+
const ROFMaskTable<13>::View& rofMask,
1669+
const int linkId,
1670+
const int fromLayer,
1671+
const int toLayer,
1672+
const ROFOverlapTable<13>::View& rofOverlaps,
1673+
const ROFVertexLookupTable<13>::View& vertexLUT,
1674+
const int vertexId,
1675+
const Vertex* vertices,
1676+
const int* rofPV,
1677+
const Cluster** clusters,
1678+
std::vector<unsigned int> nClusters,
1679+
const int** ROFClusters,
1680+
const unsigned char** usedClusters,
1681+
const int** clustersIndexTables,
1682+
Tracklet** tracklets,
1683+
gsl::span<Tracklet*> spanTracklets,
1684+
gsl::span<int> nTracklets,
1685+
int** trackletsLUTs,
1686+
gsl::span<int*> trackletsLUTsHost,
1687+
const bool selectUPCVertices,
1688+
const float NSigmaCut,
1689+
const TrackingTopology<13>::View topology,
1690+
bounded_vector<float>& linkPhiCuts,
1691+
const float resolutionPV,
1692+
std::array<float, 13>& minRs,
1693+
std::array<float, 13>& maxRs,
1694+
bounded_vector<float>& resolutions,
1695+
std::vector<float>& radii,
1696+
bounded_vector<float>& linkMSAngles,
1697+
o2::its::ExternalAllocator* alloc,
1698+
gpu::Streams& streams);
1699+
1700+
template void countCellsHandler<13>(const Cluster** sortedClusters,
1701+
const Cluster** unsortedClusters,
1702+
const TrackingFrameInfo** tfInfo,
1703+
Tracklet** tracklets,
1704+
int** trackletsLUT,
1705+
const int nTracklets,
1706+
const int cellTopologyId,
1707+
const TrackingTopology<13>::View topology,
1708+
CellSeed* cells,
1709+
int** cellsLUTsArrayDevice,
1710+
int* cellsLUTsHost,
1711+
const float bz,
1712+
const float maxChi2ClusterAttachment,
1713+
const float cellDeltaTanLambdaSigma,
1714+
const float nSigmaCut,
1715+
const std::vector<float>& layerxX0Host,
1716+
o2::its::ExternalAllocator* alloc,
1717+
gpu::Streams& streams);
1718+
1719+
template void computeCellsHandler<13>(const Cluster** sortedClusters,
1720+
const Cluster** unsortedClusters,
1721+
const TrackingFrameInfo** tfInfo,
1722+
Tracklet** tracklets,
1723+
int** trackletsLUT,
1724+
const int nTracklets,
1725+
const int cellTopologyId,
1726+
const TrackingTopology<13>::View topology,
1727+
CellSeed* cells,
1728+
int** cellsLUTsArrayDevice,
1729+
int* cellsLUTsHost,
1730+
const float bz,
1731+
const float maxChi2ClusterAttachment,
1732+
const float cellDeltaTanLambdaSigma,
1733+
const float nSigmaCut,
1734+
const std::vector<float>& layerxX0Host,
1735+
gpu::Streams& streams);
1736+
1737+
template void countCellNeighboursHandler<13>(CellSeed** cellsLayersDevice,
1738+
int* neighboursCursor,
1739+
int** cellsLUTs,
1740+
const int sourceCellTopologyId,
1741+
const int targetCellTopologyId,
1742+
const float maxChi2ClusterAttachment,
1743+
const float bz,
1744+
const unsigned int nCells,
1745+
gpu::Stream& stream);
1746+
1747+
template void computeCellNeighboursHandler<13>(CellSeed** cellsLayersDevice,
1748+
int* neighboursCursor,
1749+
int** cellsLUTs,
1750+
CellNeighbour* cellNeighbours,
1751+
const int sourceCellTopologyId,
1752+
const int targetCellTopologyId,
1753+
const float maxChi2ClusterAttachment,
1754+
const float bz,
1755+
const unsigned int nCells,
1756+
gpu::Stream& stream);
1757+
1758+
template void processNeighboursHandler<13>(const int startLevel,
1759+
const int defaultCellTopologyId,
1760+
CellSeed** allCellSeeds,
1761+
CellSeed* currentCellSeeds,
1762+
const int* currentCellTopologyIds,
1763+
const int* currentCellIds,
1764+
const int* nCells,
1765+
const unsigned char** usedClusters,
1766+
CellNeighbour** neighbours,
1767+
int** neighboursDeviceLUTs,
1768+
const TrackingFrameInfo** foundTrackingFrameInfo,
1769+
bounded_vector<TrackSeed<13>>& seedsHost,
1770+
const float bz,
1771+
const float maxChi2ClusterAttachment,
1772+
const float maxChi2NDF,
1773+
const int maxHoles,
1774+
const int minSeedingClusters,
1775+
const LayerMask holeLayerMask,
1776+
const LayerMask nonSeedingLayerMask,
1777+
const std::vector<float>& layerxX0Host,
1778+
const o2::base::Propagator* propagator,
1779+
const o2::base::PropagatorF::MatCorrType matCorrType,
1780+
o2::its::ExternalAllocator* alloc);
1781+
1782+
template void countTrackSeedHandler(TrackSeed<13>* trackSeeds,
1783+
const TrackingFrameInfo** foundTrackingFrameInfo,
1784+
const Cluster** unsortedClusters,
1785+
int* seedLUT,
1786+
const std::vector<float>& layerRadiiHost,
1787+
const std::vector<float>& minPtsHost,
1788+
const std::vector<float>& layerxX0Host,
1789+
const unsigned int nSeeds,
1790+
const float bz,
1791+
const float maxChi2ClusterAttachment,
1792+
const float maxChi2NDF,
1793+
const int reseedIfShorter,
1794+
const bool repeatRefitOut,
1795+
const bool shiftRefToCluster,
1796+
const o2::base::Propagator* propagator,
1797+
const o2::base::PropagatorF::MatCorrType matCorrType,
1798+
o2::its::ExternalAllocator* alloc);
1799+
1800+
template void computeTrackSeedHandler(TrackSeed<13>* trackSeeds,
1801+
const TrackingFrameInfo** foundTrackingFrameInfo,
1802+
const Cluster** unsortedClusters,
1803+
const IndexTableUtils<13>* utils,
1804+
const ROFMaskTable<13>::View& rofMask,
1805+
const ROFOverlapTable<13>::View& rofOverlaps,
1806+
const Cluster** clusters,
1807+
const unsigned char** usedClusters,
1808+
const int** clustersIndexTables,
1809+
const int** ROFClusters,
1810+
o2::its::TrackITSExt* tracks,
1811+
int* trackIndices,
1812+
const int* seedLUT,
1813+
TrackExtensionHypothesis<13>* activeHypotheses,
1814+
TrackExtensionHypothesis<13>* nextHypotheses,
1815+
const std::vector<float>& layerRadiiHost,
1816+
const std::vector<float>& minPtsHost,
1817+
const std::vector<float>& layerxX0Host,
1818+
const unsigned int nSeeds,
1819+
const unsigned int nTracks,
1820+
const float bz,
1821+
const float maxChi2ClusterAttachment,
1822+
const float maxChi2NDF,
1823+
const int reseedIfShorter,
1824+
const bool repeatRefitOut,
1825+
const bool shiftRefToCluster,
1826+
const int nLayers,
1827+
const int phiBins,
1828+
const int maxHypotheses,
1829+
const bool extendTop,
1830+
const bool extendBot,
1831+
const float nSigmaCutPhi,
1832+
const float nSigmaCutZ,
1833+
const o2::base::Propagator* propagator,
1834+
const o2::base::PropagatorF::MatCorrType matCorrType,
1835+
o2::its::ExternalAllocator* alloc);
16361836
#endif
16371837
} // namespace o2::its

Detectors/ITSMFT/ITS/tracking/include/ITStracking/TrackingTopology.h

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -35,11 +35,11 @@ template <int NLayers>
3535
class TrackingTopology
3636
{
3737
public:
38-
using Id = uint8_t;
39-
using Mask = LayerMask;
40-
using Range = o2::dataformats::RangeReference<Id, Id>;
4138
static constexpr int MaxLinks = (NLayers * (NLayers - 1)) / 2;
4239
static constexpr int MaxCells = (NLayers * (NLayers - 1) * (NLayers - 2)) / 6;
40+
using Id = std::conditional_t<MaxCells <= std::numeric_limits<uint8_t>::max(), uint8_t, uint16_t>;
41+
using Mask = LayerMask;
42+
using Range = o2::dataformats::RangeReference<Id, Id>;
4343
static_assert(NLayers < std::numeric_limits<Id>::max());
4444
static_assert(MaxLinks <= std::numeric_limits<Id>::max());
4545
static_assert(MaxCells <= std::numeric_limits<Id>::max());

Detectors/ITSMFT/ITS/tracking/src/TimeFrame.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -530,6 +530,7 @@ template class TimeFrame<7>;
530530
// ALICE3 upgrade
531531
#ifdef ENABLE_UPGRADES
532532
template class TimeFrame<11>;
533+
template class TimeFrame<13>;
533534
#endif
534535

535536
} // namespace o2::its

Detectors/ITSMFT/ITS/tracking/src/Tracker.cxx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -266,6 +266,7 @@ template class Tracker<7>;
266266
// ALICE3 upgrade
267267
#ifdef ENABLE_UPGRADES
268268
template class Tracker<11>;
269+
template class Tracker<13>;
269270
#endif
270271

271272
} // namespace o2::its

Detectors/ITSMFT/ITS/tracking/src/TrackerTraits.cxx

Lines changed: 3 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1017,6 +1017,9 @@ template void TrackerTraits<7>::processNeighbours<TrackSeed<7>>(int, int, int, c
10171017
template class TrackerTraits<11>;
10181018
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>&);
10191019
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>&);
1020+
template class TrackerTraits<13>;
1021+
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>&);
1022+
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>&);
10201023
#endif
10211024

10221025
} // namespace o2::its

0 commit comments

Comments
 (0)