16#ifndef O2_TRD_TRACKLET64_H
17#define O2_TRD_TRACKLET64_H
30#ifndef GPUCA_GPUCODE_DEVICE
78 uint64_t
slope, uint64_t pid)
102 GPUd()
int getDetector()
const {
return getHCID() / 2; }
144 GPUd() float getPadColFloat(
bool applyShift)
const {
return getPositionFloat() + getMCMCol() *
constants::NCOLMCM + 8.f + (applyShift ? 1.f : 0.f); }
147 GPUd()
int getPadCol(
bool applyShift = false)
const {
return o2::gpu::CAMath::Float2IntRn(getPadColFloat(applyShift)); }
150 GPUd() float getUncalibratedY(
bool applyShift = false)
const {
return (getPadColFloat(applyShift) - (
constants::NCOLUMN / 2.f)) * getPadWidth(); }
153 GPUd() float getUncalibratedDy(
float nTbDrift = 19.4
f)
const {
return getSlopeFloat() * getPadWidth() * nTbDrift; }
160 int shift = (
charge >> 6) & 0x3;
171 if ((getFormat() & 0x1) == 0) {
179 if ((getFormat() & 0x1) == 0) {
187 if ((getFormat() & 0x1) == 0) {
204#ifndef GPUCA_GPUCODE_DEVICE
210 static constexpr uint64_t
hcidmask = 0x0ffe000000000000;
212 static constexpr uint64_t
colmask = 0x0000180000000000;
213 static constexpr uint64_t
posmask = 0x000007ff00000000;
214 static constexpr uint64_t
slopemask = 0x00000000ff000000;
215 static constexpr uint64_t
Q2mask = 0x0000000000ff0000;
216 static constexpr uint64_t
Q1mask = 0x000000000000ff00;
217 static constexpr uint64_t
Q0mask = 0x00000000000000ff;
218 static constexpr uint64_t
PIDmask = 0x0000000000ffffff;
223 static constexpr uint64_t
colbs = 43;
224 static constexpr uint64_t
posbs = 32;
226 static constexpr uint64_t
PIDbs = 0;
227 static constexpr uint64_t
Q2bs = 16;
228 static constexpr uint64_t
Q1bs = 8;
229 static constexpr uint64_t
Q0bs = 0;
239 int padLocalBin = getPosition();
249GPUdi()
int Tracklet64::getSlopeBinSigned()
const
251 int slopeBin = getSlope();
261#ifndef GPUCA_GPUCODE_DEVICE
o2::mid::ColumnData & getColumn(std::vector< o2::mid::ColumnData > &patterns, uint8_t icolumn, uint8_t deId)
static constexpr uint64_t padrowmask
static constexpr uint64_t posbs
GPUd() int getROB() const
GPUd() int getPositionBinSigned() const
GPUd() float getPadWidth() const
GPUd() void setTrackletWord(uint64_t trackletword)
static constexpr uint64_t Q1bs
GPUd() void print() const
GPUd() void setQ0(int charge)
static constexpr uint64_t PIDbs
static constexpr uint64_t colbs
GPUdDefault() Tracklet64 &operator
static constexpr uint64_t PIDmask
GPUd() void setPID(int pid)
GPUd() int getMCM() const
uint64_t uint64_t uint64_t uint64_t uint64_t slope
static constexpr uint64_t slopebs
GPUd() void setQ1(int charge)
GPUd() int getPadCol(bool applyShift
static constexpr uint64_t Q2mask
uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t Q2
GPUd() int getSlope() const
uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t Q0
GPUd() void setSlope(int slope)
GPUd() int getMCMCol() const
Tracklet64(uint64_t format, uint64_t hcid, uint64_t padrow, uint64_t col, uint64_t position, uint64_t slope, uint64_t pid)
static constexpr uint64_t Q0bs
void printStream(std::ostream &stream) const
GPUd() void setQ2(int charge)
GPUd() int getSlopeBinSigned() const
GPUdDefault() Tracklet64()=default
uint64_t uint64_t uint64_t col
GPUd() void setPosition(int position)
GPUd() int getDetector() const
uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t uint64_t Q1
GPUd() int getPID() const
static constexpr uint64_t Q0mask
static constexpr uint64_t Q1mask
GPUdDefault() Tracklet64(const Tracklet64 &)=default
GPUdDefault() ~Tracklet64()=default
static constexpr uint64_t posmask
uint64_t uint64_t uint64_t uint64_t position
static constexpr uint64_t hcidmask
GPUd() int getPosition() const
GPUd() int getColumn() const
static constexpr uint64_t Q2bs
static constexpr uint64_t padrowbs
static constexpr uint64_t formatmask
GPUd() int getDynamicCharge(unsigned int charge) const
static constexpr uint64_t slopemask
static constexpr uint64_t hcidbs
GPUd() Tracklet64(uint64_t trackletword)
static constexpr uint64_t formatbs
GPUd() float getPadColFloat(bool applyShift) const
GPUd() int getPadRow() const
static constexpr uint64_t colmask
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
GLint GLint GLsizei GLint GLenum format
constexpr int NBITSTRKLSLOPE
number of bits for slope in tracklet64 word
constexpr int NMCMROBINCOL
the number of MCMs per ROB in column direction
constexpr int NLAYER
the number of layers
constexpr int NCOLUMN
the number of pad columns for each chamber
constexpr float GRANULARITYTRKLSLOPE
granularity of slope in tracklet64 word in pads/timebin
constexpr int NBITSTRKLPOS
number of bits for position in tracklet64 word
constexpr int NMCMROBINROW
the number of MCMs per ROB in row direction
constexpr int NCOLMCM
the number of pads per MCM
constexpr int ADDBITSHIFTSLOPE
in the TRAP the slope is shifted by 3 additional bits compared to the position
constexpr float GRANULARITYTRKLPOS
granularity of position in tracklet64 word in pad-widths
std::ostream & operator<<(std::ostream &stream, const Digit &d)
a couple of static helper functions to create timestamp values for CCDB queries or override obsolete ...