15#ifndef GPUTPCGMPHYSICALTRACKMODEL_H
16#define GPUTPCGMPHYSICALTRACKMODEL_H
39 GPUd()
void Set(
float X,
float Y,
float Z,
float Px,
float Py,
float Pz,
float Q);
103 GPUd() const
float& SinPhi()
const {
return mSinPhi; }
104 GPUd() const
float& DzDs()
const {
return mDzDs; }
106 GPUd() float GetX()
const {
return mX; }
107 GPUd() float GetY()
const {
return mY; }
108 GPUd() float GetZ()
const {
return mZ; }
109 GPUd() float GetPx()
const {
return mPx; }
110 GPUd() float GetPy()
const {
return mPy; }
111 GPUd() float GetPz()
const {
return mPz; }
112 GPUd() float GetQ()
const {
return mQ; }
114 GPUd() float GetSinPhi()
const {
return mSinPhi; }
115 GPUd() float GetCosPhi()
const {
return mCosPhi; }
116 GPUd() float GetSecPhi()
const {
return mSecPhi; }
117 GPUd() float GetDzDs()
const {
return mDzDs; }
118 GPUd() float GetDlDs()
const {
return mDlDs; }
119 GPUd() float GetQPt()
const {
return mQPt; }
120 GPUd() float GetP()
const {
return mP; }
121 GPUd() float GetPt()
const {
return mPt; }
123 GPUd() int32_t PropagateToXBzLightNoUpdate(
float x,
float Bz,
float&
dLp);
124 GPUd() int32_t PropagateToXBzLight(
float x,
float Bz,
float&
dLp);
126 GPUd() int32_t PropagateToXBxByBz(
float x,
float Bx,
float By,
float Bz,
float&
dLp);
128 GPUd() int32_t PropagateToLpBz(
float Lp,
float Bz);
130 GPUd()
bool SetDirectionAlongX();
136 GPUd()
float GetMirroredY(
float Bz) const;
168 float pti = CAMath::Abs(t.GetQPt());
172 mQ = (t.GetQPt() >= 0) ? 1.f : -1.f;
178 mSinPhi = t.GetSinPhi();
185 mCosPhi = CAMath::Sqrt((1.f - mSinPhi) * (1.f + mSinPhi));
186 mSecPhi = 1.f / mCosPhi;
188 mDlDs = CAMath::Sqrt(1.f + mDzDs * mDzDs);
205 mQ = (
Q >= 0) ? 1 : -1;
212 if (CAMath::Abs(px) < 1.e-4f) {
213 px = copysign(1.e-4f, px);
216 mPt = CAMath::Sqrt(px * px + mPy * mPy);
217 float pti = 1.f / mPt;
218 mP = CAMath::Sqrt(px * px + mPy * mPy + mPz * mPz);
248 if (CAMath::Abs(
Bz) < 1.e-8f) {
251 return mY - 2.f * mQ * mPx /
Bz;
258 float cA = CAMath::Cos(
alpha);
259 float sA = CAMath::Sin(
alpha);
260 float x = mX,
y = mY, px = mPx, py = mPy;
261 mX =
x * cA +
y * sA;
262 mY = -
x * sA +
y * cA;
263 mPx = px * cA + py * sA;
264 mPy = -px * sA + py * cA;
#define GPUCA_MAX_SIN_PHI
GPUd() float GetDlDs() const
GPUdDefault() GPUTPCGMPhysicalTrackModel()=default
GPUd() const float &SinPhi() const
float float float float float float Q
float float float float Py
GPUd() float GetPy() const
GPUd() float GetX() const
GPUd() float GetDzDs() const
GPUd() float GetSinPhi() const
GPUd() float GetZ() const
GPUd() float GetPx() const
GPUd() float GetSecPhi() const
float float float float float Pz
GPUd() const float &DzDs() const
GPUd() float GetP() const
GPUd() float GetPt() const
GPUd() float GetPz() const
GPUd() float GetY() const
GPUd() float GetCosPhi() const
GPUd() float GetQ() const
GPUd() float GetQPt() const
GLfloat GLfloat GLfloat alpha
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)