Skip to content

Commit d55013b

Browse files
committed
Add hash method to the TrackParam
Hash is calculated by combining the precision-truncated (a la AOD) x, alpha + 5 parameters, so the hash depends on the X where it is evaluated.
1 parent 7fa6785 commit d55013b

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

DataFormats/Reconstruction/include/ReconstructionDataFormats/TrackParametrization.h

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -248,6 +248,8 @@ class TrackParametrization
248248
#ifndef GPUCA_ALIGPUCODE
249249
std::string asString() const;
250250
std::string asStringHexadecimal();
251+
size_t hash() const { return hash(getX(), getAlpha(), getY(), getZ(), getSnp(), getTgl(), getQ2Pt()); }
252+
static size_t hash(float x, float alp, float y, float z, float snp, float tgl, float q2pt);
251253
#endif
252254

253255
GPUd() void updateParam(value_t delta, int i);
@@ -752,6 +754,21 @@ GPUdi() void TrackParametrization<value_T>::updateParams(const value_t* delta)
752754
}
753755
}
754756

757+
#ifndef GPUCA_ALIGPUCODE
758+
template <typename value_T>
759+
size_t TrackParametrization<value_T>::hash(float x, float alp, float y, float z, float snp, float tgl, float q2pt)
760+
{
761+
size_t h = std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(x, 0xFFFFFFF0));
762+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(alp, 0xFFFFFFF0)) << 1;
763+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(y, 0xFFFFFFF0)) << 1;
764+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(z, 0xFFFFFFF0)) << 1;
765+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(snp, 0xFFFFFF00)) << 1;
766+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(tgl, 0xFFFFFF00)) << 1;
767+
h ^= std::hash<float>{}(o2::math_utils::detail::truncateFloatFraction(q2pt, 0xFFFFFC00)) << 1;
768+
return h;
769+
}
770+
#endif
771+
755772
} // namespace track
756773
} // namespace o2
757774

0 commit comments

Comments
 (0)