16#ifndef TRACKINGITSU_INCLUDE_TRACKERTRAITS_H_
17#define TRACKINGITSU_INCLUDE_TRACKERTRAITS_H_
48 virtual void findRoads(
const int iteration);
56 virtual void processNeighbours(
int iLayer,
int iLevel,
const std::vector<CellSeed>& currentCellSeed,
const std::vector<int>& currentCellId, std::vector<CellSeed>& updatedCellSeed, std::vector<int>& updatedCellId);
61 virtual void setBz(
float bz);
65 virtual const char*
getName() const noexcept {
return "CPU"; }
66 virtual bool isGPU() const noexcept {
return false; }
69 GPUhd() static consteval
int4 getEmptyBinsRect() {
return int4{0, 0, 0, 0}; }
71 const int4 getBinsRect(
int layer,
float phi,
float maxdeltaphi,
float z,
float maxdeltaz)
const noexcept;
72 const int4 getBinsRect(
int layer,
float phi,
float maxdeltaphi,
float z1,
float z2,
float maxdeltaz)
const noexcept;
93 bool mApplySmoothing =
false;
119 return getBinsRect(layerIndex, phi, maxdeltaphi,
z,
z, maxdeltaz);
124 return getBinsRect(layerIndex, currentCluster.phi, maxdeltaphi, z1, z2, maxdeltaz);
129 const float zRangeMin = o2::gpu::GPUCommonMath::Min(z1, z2) - maxdeltaz;
131 const float zRangeMax = o2::gpu::GPUCommonMath::Max(z1, z2) + maxdeltaz;
134 if (zRangeMax < -mTrkParams[0].LayerZ[layerIndex] ||
135 zRangeMin > mTrkParams[0].LayerZ[layerIndex] || zRangeMin > zRangeMax) {
136 return getEmptyBinsRect();
140 return int4{o2::gpu::GPUCommonMath::Max(0,
utils.getZBinIndex(layerIndex, zRangeMin)),
141 utils.getPhiBinIndex(math_utils::getNormalizedPhi(phiRangeMin)),
142 o2::gpu::GPUCommonMath::Min(mTrkParams[0].ZBins - 1,
utils.getZBinIndex(layerIndex, zRangeMax)),
143 utils.getPhiBinIndex(math_utils::getNormalizedPhi(phiRangeMax))};
void initialise(const int iteration, const TrackingParameters &trkParam, const int maxLayers=7, bool resetVertices=true)
virtual void findRoads(const int iteration)
virtual void processNeighbours(int iLayer, int iLevel, const std::vector< CellSeed > ¤tCellSeed, const std::vector< int > ¤tCellId, std::vector< CellSeed > &updatedCellSeed, std::vector< int > &updatedCellId)
virtual void extendTracks(const int iteration)
void setSmoothing(bool v)
virtual int getTFNumberOfCells() const
o2::gpu::GPUChainITS * getChain() const
virtual void adoptTimeFrame(TimeFrame *tf)
virtual void computeLayerTracklets(const int iteration, int iROFslice, int iVertex)
virtual void setBz(float bz)
virtual bool supportsFindShortPrimaries() const noexcept
o2::gpu::GPUChainITS * mChain
virtual int getTFNumberOfTracklets() const
virtual bool isGPU() const noexcept
void SetRecoChain(o2::gpu::GPUChainITS *chain)
virtual void findCellsNeighbours(const int iteration)
virtual int getTFNumberOfClusters() const
virtual void findShortPrimaries()
virtual void initialiseTimeFrame(const int iteration)
virtual ~TrackerTraits()=default
void UpdateTrackingParameters(const std::vector< TrackingParameters > &trkPars)
TimeFrame * getTimeFrame()
const int4 getBinsRect(const Cluster &, int layer, float z1, float z2, float maxdeltaz, float maxdeltaphi) const noexcept
std::vector< TrackingParameters > mTrkParams
o2::base::PropagatorImpl< float >::MatCorrType mCorrType
bool getSmoothing() const
void setCorrType(const o2::base::PropagatorImpl< float >::MatCorrType type)
GPUhd() static const eval int4 getEmptyBinsRect()
virtual bool trackFollowing(TrackITSExt *track, int rof, bool outward, const int iteration)
virtual void computeLayerCells(const int iteration)
virtual bool supportsExtendTracks() const noexcept
virtual const char * getName() const noexcept
GLint GLint GLsizei GLint GLenum GLenum type
GLenum GLuint GLint GLint layer
GLdouble GLdouble GLdouble z
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...
Common utility functions.
std::unique_ptr< GPUReconstructionTimeframe > tf