17#ifndef GPUTRDTRACKLETWORD_H
18#define GPUTRDTRACKLETWORD_H
24class AliTRDtrackletWord;
25class AliTRDtrackletMCM;
30class GPUTRDTrackletWord
33 GPUd() GPUTRDTrackletWord(uint32_t trackletWord = 0);
34 GPUd() GPUTRDTrackletWord(uint32_t trackletWord, int32_t
hcid);
35 GPUdDefault() GPUTRDTrackletWord(const GPUTRDTrackletWord& rhs) = default;
36 GPUdDefault() GPUTRDTrackletWord& operator=(const GPUTRDTrackletWord& rhs) = default;
38#ifndef GPUCA_GPUCODE_DEVICE
39 GPUTRDTrackletWord(
const AliTRDtrackletWord& rhs);
40 GPUTRDTrackletWord(
const AliTRDtrackletMCM& rhs);
41 GPUTRDTrackletWord& operator=(
const AliTRDtrackletMCM& rhs);
45 GPUd() bool operator<(const GPUTRDTrackletWord& t)
const {
return (GetHCId() < t.GetHCId()); }
46 GPUd() bool operator>(const GPUTRDTrackletWord& t)
const {
return (GetHCId() > t.GetHCId()); }
47 GPUd() bool operator<=(const GPUTRDTrackletWord& t)
const {
return (GetHCId() < t.GetHCId()) || (GetHCId() == t.GetHCId()); }
50 GPUd() int32_t GetYbin() const;
51 GPUd() int32_t GetdYbin() const;
52 GPUd() int32_t GetZbin()
const {
return ((mTrackletWord >> 20) & 0xf); }
53 GPUd() int32_t GetPID()
const {
return ((mTrackletWord >> 24) & 0xff); }
56 GPUd() double GetPID(int32_t )
const {
return (
double)GetPID() / 256.f; }
57 GPUd() int32_t GetDetector()
const {
return mHCId / 2; }
58 GPUd() int32_t GetHCId()
const {
return mHCId; }
59 GPUd() float GetdYdX()
const {
return (GetdYbin() * 140e-4f / 3.f); }
60 GPUd() float GetdY()
const {
return GetdYbin() * 140e-4f; }
61 GPUd() float GetY()
const {
return (GetYbin() * 160e-4f); }
62 GPUd() uint32_t GetTrackletWord()
const {
return mTrackletWord; }
64 GPUd()
void SetTrackletWord(uint32_t trackletWord) { mTrackletWord = trackletWord; }
65 GPUd()
void SetDetector(int32_t
id) { mHCId = 2 *
id + (GetYbin() < 0 ? 0 : 1); }
66 GPUd()
void SetHCId(int32_t
id) { mHCId =
id; }
70 uint32_t mTrackletWord;
93 GPUd() bool operator<=(const
GPUTRDTrackletWord& t)
const {
return (getHCID() < t.getHCID()) || (getHCID() == t.getHCID()); }
95 GPUd() int32_t GetZbin()
const {
return getPadRow(); }
96 GPUd() float GetY()
const {
return getUncalibratedY(); }
97 GPUd() float GetdY()
const {
return getUncalibratedDy(); }
98 GPUd() int32_t GetDetector()
const {
return getDetector(); }
99 GPUd() int32_t GetHCId()
const {
return getHCID(); }
104static_assert(
sizeof(GPUTRDTrackletWord) ==
sizeof(
o2::trd::Tracklet64),
"Incorrect memory layout");
GPUd() bool operator>(const GPUTRDTrackletWord &t) const
GPUdDefault() GPUTRDTrackletWord(const GPUTRDTrackletWord &rhs)=default
GPUd() GPUTRDTrackletWord(uint64_t trackletWord=0)
GPUdDefault() ~GPUTRDTrackletWord()=default
Tracklet64(uint64_t format, uint64_t hcid, uint64_t padrow, uint64_t col, uint64_t position, uint64_t slope, uint64_t pid)
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...