16#ifndef ALICEO2_ITS_TRACKITS_H
17#define ALICEO2_ITS_TRACKITS_H
39 kSharedClusters = 1 << 28
46 using o2::track::TrackParCov::TrackParCov;
53 :
o2::track::
TrackParCov{parCov}, mParamOut{outer}, mChi2{chi2} {}
63 GPUhdi()
float getChi2()
const {
return mChi2; }
64 GPUhdi()
int getNClusters()
const {
return mClusRef.getEntries(); }
65 GPUhdi()
int getNumberOfClusters()
const {
return getNClusters(); }
70 mClusRef.setFirstEntry(mClusRef.getFirstEntry() + bias);
74 mClusRef.setFirstEntry(offs);
78 mClusRef.setEntries(
n);
86 mClusRef.set(firstEntry,
n);
96 GPUhdi() auto& getTimeStamp() {
return mTime; }
97 GPUhdi() const auto& getTimeStamp()
const {
return mTime; }
105 GPUhdi()
void setPattern(uint32_t p) { mPattern = p; }
106 GPUhdi() uint32_t getPattern()
const {
return mPattern; }
112 uint32_t
r{0},
v{mPattern & ((1 << 16) - 1)};
121 while (!(mPattern & (1 << s))) {
128 void setSharedClusters(
bool toggle =
true) { mClusterSizes = toggle ? (mClusterSizes | kSharedClusters) : (mClusterSizes & ~kSharedClusters); }
139 mClusterSizes &= ~(0xf << (l * 4));
140 mClusterSizes |= (
size << (l * 4));
148 return (mClusterSizes >> (l * 4)) & 0xf;
153 return mClusterSizes;
160 uint32_t mPattern = 0;
161 uint32_t mClusterSizes = 0u;
172 using TrackITS::TrackITS;
175 :
TrackITS(parCov, chi2, outer), mIndex{cls}
181 :
TrackITS(parCov, chi2, outer), mIndex{cls}
190 int ncl = getNumberOfClusters();
191 mIndex[ncl++] = (l << 28) +
i;
195 GPUhdi()
int getClusterIndex(
int lr)
const {
return mIndex[lr]; }
206 uint32_t
pattern = getPattern();
221 size_t hash(uint16_t layerMask = 0xFFFF,
bool inward =
true) const noexcept
223 size_t h1 = 0, h2 = 0;
233 int idx = mIndex[slot++];
234 if (layerMask & (uint16_t(1) <<
layer)) {
235 size_t v = std::hash<int>{}(
idx);
237 h2 +=
v * 0x9e3779b97f4a7c15ULL;
241 return h1 ^ (h2 << 1);
246 std::array<int, MaxClusters> mIndex = {-1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1, -1};
247 ClassDefNV(TrackITSExt, 3);
Class to refer to the 1st entry and N elements of some group in the continuous container.
o2::track::TrackParCov TrackParCov
HMPID cluster implementation.
void setClusterIndex(int l, int i)
GPUhdDefault() TrackITSExt(const TrackITSExt &t)=default
size_t hash(uint16_t layerMask=0xFFFF, bool inward=true) const noexcept
GPUh() int getFirstLayerClusterIndex() const
GPUhdi() void setExternalClusterIndex(int layer
int bool MaxClusters & getClusterIndexes()
static constexpr int MaxClusters
< heavy version of TrackITS, with clusters embedded
GPUhdi() int getClusterIndex(int lr) const
GPUhdi() auto &getTimeStamp()
bool operator<(const TrackITS &o) const
bool hasHitOnLayer(uint32_t i) const
GPUhdi() const auto &getTimeStamp() const
const ClusRefs & getClusterRefs() const
uint32_t getFirstClusterLayer() const
void setClusterRefs(int firstEntry, int n)
GPUhdi() int getNClusters() const
int getNFakeClusters() const
static constexpr int MaxClusters
GPUhdi() ClusRefs &getClusterRefs()
void getImpactParams(float x, float y, float z, float bz, float ip[2]) const
GPUhdDefault() TrackITS &operator
int getClusterEntry(int i) const
void shiftFirstClusterEntry(int bias)
uint32_t getLastClusterLayer() const
void setNumberOfClusters(int n)
GPUhdi() uint32_t getPattern() const
int getClusterSize(int l)
bool isFakeOnLayer(uint32_t i) const
void setClusterSize(int l, int size)
GPUhdi() int getNumberOfClusters() const
int getFirstClusterEntry() const
int getClusterSizes() const
GPUhdi() float getChi2() const
void setFirstClusterEntry(int offs)
bool propagate(float alpha, float x, float bz)
bool hasSharedClusters() const
GPUhd() TrackITS(const o2
void setSharedClusters(bool toggle=true)
GPUhdDefault() TrackITS()=default
bool isBetter(const TrackITS &best, float maxChi2) const
bool isExtendedOnLayer(uint32_t i) const
bool update(const Cluster &c, float chi2)
GPUhdi() void setChi2(float chi2)
Cluster class for the ITSMFT.
GLfloat GLfloat GLfloat alpha
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
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 ...
std::array< uint16_t, 5 > pattern