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,
GPUTPCGMMergedTrackHitXYZ*
clustersXYZ, const
GPUTPCGMMerger*
merger,
GPUTPCGMPropagator&
prop,
float&
xx,
float&
yy,
float&
zz, int32_t
maxN,
float clAlpha, uint8_t&
clusterState,
bool rejectChi2);
156 GPUd() int32_t FollowCircle(const
GPUTPCGMMerger*
GPUrestrict() Merger,
GPUTPCGMPropagator&
prop, int32_t
sector, int32_t
iRow, int32_t
iTrack,
float toAlpha,
float toX,
float toY, int32_t
toSector, int32_t
toRow,
bool inFlyDirection,
bool phase2 = false);
157 GPUd()
void StoreAttachMirror(const
GPUTPCGMMerger*
GPUrestrict() Merger, int32_t
sector, int32_t
iRow, int32_t
iTrack,
float toAlpha,
float toY,
float toX, int32_t
toSector, int32_t
toRow,
bool inFlyDirection,
float alpha);
180 if (
alpha > CAMath::Pi()) {
181 alpha -= CAMath::TwoPi();
182 }
else if (
alpha <= -CAMath::Pi()) {
183 alpha += CAMath::TwoPi();
191 GPUd() static
float Reciprocal(
float x) {
return 1.f /
x; }
199 GPUdi() static
void Assign(int32_t&
x,
bool mask, int32_t
v)
206 GPUd() static
void RefitTrack(GPUTPCGMMergedTrack& track, int32_t
iTrk, GPUTPCGMMerger*
merger, int32_t
attempt);
212 }
else if (
mP[2] < -limit) {
218 GPUd() bool FollowCircleChk(
float lrFactor,
float toY,
float toX,
bool up,
bool right);
245 const float absQPt = CAMath::Abs(
mP[4]);
246 if (absQPt < (150.f / 40.f)) {
249 return CAMath::Max(10.f, 150.f /
mP[4]);
252GPUdi()
void GPUTPCGMTrackParam::ResetCovariance()
273GPUdi() float GPUTPCGMTrackParam::GetMirroredY(
float Bz)
const
276 float qptBz = GetQPt() * Bz;
277 float cosPhi2 = 1.f - GetSinPhi() * GetSinPhi();
278 if (CAMath::Abs(qptBz) < 1.e-8f) {
284 return GetY() - 2.f * CAMath::Sqrt(cosPhi2) / qptBz;
#define GPUCA_MAX_SIN_PHI
GPUdi() void UnmarkClusters(GPUTPCGMMergedTrackHit *GPUrestrict() clusters
GPUTPCGMPropagator int32_t int32_t int32_t float toAlpha
GPUd() void Rotate(float alpha)
GPUd() void SetCov(int32_t i
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t & N
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)
GPUTPCGMPropagator int32_t int32_t int32_t float float toX
GPUd() float GetErr2Z() const
int32_t int32_t int32_t toRow
int32_t int32_t int32_t int32_t bool goodLeg
float float bool const GPUParam uint8_t uint8_t bool mirrorParameters
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t int32_t & NTolerated
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float & xx
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t int32_t float int32_t attempt
GPUd() float Err2SinPhi() const
GPUd() void SetChi2(float v)
GPUTPCGMPropagator int32_t int32_t int32_t float float float int32_t toSector
GPUd() float GetChi2() const
float float bool inFlyDirection
int32_t float float float float x2
GPUd() int32_t GetNDF() const
float float bool const GPUParam uint8_t row
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
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t int32_t float & Alpha
GPUhd() float GetX() const
GPUd() float Err2Z() const
GPUd() const float *GetPar() const
int32_t GPUTPCGMMergedTrackHit * clusters
GPUd() float GetTZOffset() const
GPUd() float GetCov(int32_t i) const
GPUdi() static void NormalizeAlpha(float &alpha)
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t int32_t float int32_t float gputpcgmmergertypes::GPUTPCOuterParam * outerParam
int32_t int32_t int32_t bool float float Z
GPUhd() float GetY() const
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ * clustersXYZ
GPUd() float Err2Y() const
GPUd() float GetDzDs() const
int32_t int32_t int32_t uint8_t state
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t float uint8_t bool rejectChi2
int32_t int32_t int32_t bool float Y
GPUd() float Err2DzDs() const
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float float & yy
GPUd() float GetSinPhi() const
GPUd() float GetErr2DzDs() const
GPUd() void SetX(float v)
GPUdi() void MarkClusters(GPUTPCGMMergedTrackHit *GPUrestrict() clusters
int32_t int32_t int32_t float GPUTPCGMPropagator bool phase2
int32_t int32_t int32_t int32_t iTrack
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t maxN
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float float float & zz
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger * merger
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator float float float int32_t float clAlpha
GPUd() const float *GetCov() const
GPUd() float Err2QPt() const
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ const GPUTPCGMMerger GPUTPCGMPropagator & prop
int32_t float float tzOuter
GPUdi() static void Assign(float &x
GPUd() float GetCosPhi() const
int32_t GPUTPCGMMergedTrackHit GPUTPCGMMergedTrackHitXYZ int32_t int32_t float int32_t float maxSinPhi
int32_t int32_t int32_t int32_t bool GPUTPCGMPropagator bool float bool checkdEdx
GLfloat GLfloat GLfloat alpha
GLuint GLfloat GLfloat GLfloat x1
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)