15#ifndef GPUTPCGMTRACKPARAM_H
16#define GPUTPCGMTRACKPARAM_H
24#ifndef GPUCA_GPUCODE_DEVICE
28class AliExternalTrackParam;
33class GPUTPCGMBorderTrack;
36class GPUTPCGMPolynomialField;
37class GPUTPCGMMergedTrack;
38class GPUTPCGMPropagator;
80 GPUhd() float GetY()
const {
return mP[0]; }
81 GPUhd() float GetZ()
const {
return mP[1]; }
82 GPUd() float GetSinPhi()
const {
return mP[2]; }
83 GPUd() float GetDzDs()
const {
return mP[3]; }
84 GPUd() float GetQPt()
const {
return mP[4]; }
87 GPUd() float GetKappa(
float Bz)
const {
return -
mP[4] * Bz; }
95 GPUd() const
float* GetPar()
const {
return mP; }
96 GPUd() float GetPar(int32_t
i)
const {
return (
mP[
i]); }
108 GPUd() float Err2Y()
const {
return mC[0]; }
109 GPUd() float Err2Z()
const {
return mC[2]; }
110 GPUd() float Err2SinPhi()
const {
return mC[5]; }
111 GPUd() float Err2DzDs()
const {
return mC[9]; }
112 GPUd() float Err2QPt()
const {
return mC[14]; }
117 GPUd() float GetCosPhi()
const {
return CAMath::Sqrt(
float(1.f) - GetSinPhi() * GetSinPhi()); }
119 GPUd() float GetErr2Y()
const {
return mC[0]; }
120 GPUd() float GetErr2Z()
const {
return mC[2]; }
121 GPUd() float GetErr2SinPhi()
const {
return mC[5]; }
122 GPUd() float GetErr2DzDs()
const {
return mC[9]; }
123 GPUd() float GetErr2QPt()
const {
return mC[14]; }
130 GPUd() const
float* GetCov()
const {
return mC; }
131 GPUd() float GetCov(int32_t
i)
const {
return mC[
i]; }
137 GPUd() float GetMirroredY(
float Bz) const;
141 GPUd()
bool CheckNumericalQuality(
float overrideCovYY = -1.
f) const;
147 GPUd() int32_t MergeDoubleRowClusters(int32_t& ihit, int32_t
wayDirection,
GPUTPCGMMergedTrackHit*
clusters, const
GPUTPCGMMerger*
merger,
GPUTPCGMPropagator&
prop,
float&
xx,
float&
yy,
float&
zz, int32_t
maxN,
float clAlpha, uint8_t&
clusterState,
bool rejectChi2);
155 GPUd()
void StoreOuter(gputpcgmmergertypes::GPUTPCOuterParam* outerParam,
float alpha);
177 if (
alpha > CAMath::Pi()) {
178 alpha -= CAMath::TwoPi();
179 }
else if (
alpha <= -CAMath::Pi()) {
180 alpha += CAMath::TwoPi();
188 GPUd() static
float Reciprocal(
float x) {
return 1.f /
x; }
196 GPUdi() static
void Assign(int32_t&
x,
bool mask, int32_t
v)
209 }
else if (
mP[2] < -limit) {
215 GPUd() int32_t initResetT0();
236 const float absQPt = CAMath::Abs(
mP[4]);
237 if (absQPt < (150.f / 40.f)) {
240 return CAMath::Max(10.f, 150.f /
mP[4]);
243GPUdi()
void GPUTPCGMTrackParam::ResetCovariance()
264GPUdi() float GPUTPCGMTrackParam::GetMirroredY(
float Bz)
const
267 float qptBz = GetQPt() * Bz;
268 float cosPhi2 = 1.f - GetSinPhi() * GetSinPhi();
269 if (CAMath::Abs(qptBz) < 1.e-8f) {
275 return GetY() - 2.f * CAMath::Sqrt(cosPhi2) / qptBz;
#define GPUCA_MAX_SIN_PHI
GPUdi() void UnmarkClusters(GPUTPCGMMergedTrackHit *GPUrestrict() clusters
int32_t GPUTPCGMMergedTrackHit int32_t int32_t & NTolerated
GPUd() void Rotate(float alpha)
GPUd() void SetCov(int32_t i
GPUd() float GetPar(int32_t i) const
GPUd() float GetKappa(float Bz) const
GPUd() void StoreOuter(gputpcgmmergertypes int32_t loopIdx
GPUd() float GetErr2Y() const
GPUd() float GetErr2QPt() const
GPUd() float GetQPt() const
GPUd() void SetPar(int32_t i
GPUd() void SetNDF(int32_t v)
GPUd() float GetErr2Z() const
int32_t int32_t int32_t toRow
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float float & yy
int32_t int32_t int32_t int32_t bool goodLeg
float float bool const GPUParam uint8_t uint8_t bool mirrorParameters
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t maxN
int32_t GPUTPCGMMergedTrackHit int32_t int32_t float & Alpha
GPUd() float Err2SinPhi() const
int32_t GPUTPCGMMergedTrackHit int32_t int32_t float int32_t float GPUTPCGMMergedTrack & track
GPUd() void SetChi2(float v)
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float float float & zz
int32_t float float cltmin
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator & prop
GPUd() float GetChi2() const
float float bool inFlyDirection
GPUd() int32_t GetNDF() const
float float bool const GPUParam uint8_t row
GPUd() float GetTOffset() const
GPUhd() float GetZ() const
float float bool const GPUParam uint8_t uint8_t bool int8_t sector
float float bool const GPUParam uint8_t uint8_t clusterState
GPUd() float GetErr2SinPhi() const
GPUd() float GetMirroredY(float Bz) const
GPUhd() float GetX() const
GPUd() float Err2Z() const
GPUd() const float *GetPar() const
int32_t GPUTPCGMMergedTrackHit * clusters
GPUd() float GetCov(int32_t i) const
GPUdi() static void NormalizeAlpha(float &alpha)
int32_t int32_t int32_t bool float float Z
GPUhd() float GetY() const
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger * merger
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float & xx
GPUd() float Err2Y() const
GPUd() float GetDzDs() const
int32_t int32_t int32_t uint8_t state
int32_t GPUTPCGMMergedTrackHit int32_t int32_t float int32_t attempt
int32_t int32_t int32_t bool float Y
GPUd() float Err2DzDs() const
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t float uint8_t bool rejectChi2
int32_t GPUTPCGMMergedTrackHit int32_t & N
GPUd() float GetSinPhi() const
GPUd() float GetErr2DzDs() const
GPUd() void SetX(float v)
GPUdi() void MarkClusters(GPUTPCGMMergedTrackHit *GPUrestrict() clusters
int32_t GPUTPCGMMergedTrackHit const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t float clAlpha
int32_t int32_t int32_t int32_t iTrack
GPUd() const float *GetCov() const
GPUd() float Err2QPt() const
int32_t int32_t int32_t bool outwards
int32_t GPUTPCGMMergedTrackHit int32_t int32_t float int32_t float maxSinPhi
int32_t float float float clx
GPUdi() static void Assign(float &x
GPUd() float GetCosPhi() const
int32_t int32_t int32_t int32_t bool GPUTPCGMPropagator bool float bool checkdEdx
GLfloat GLfloat GLfloat alpha
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)