23 if (CAMath::Abs(
x - t.X()) < 1.e-8f) {
26 int32_t err = t.PropagateToXBzLightNoUpdate(
x, Bz, dLp);
45 float pt2 = mPx * mPx + mPy * mPy;
47 float pye = mPy - dx *
b;
48 float pxe2 = pt2 - pye * pye;
53 float pxe = CAMath::Sqrt(pxe2);
54 float pti = 1.f / CAMath::Sqrt(pt2);
56 float ty = (mPy + pye) / (mPx + pxe);
60 float chord = dx * CAMath::Sqrt(1.f + ty * ty);
61 float sa = 0.5f * chord *
b * pti;
68 const float k2 = 1.f / 6.f;
69 const float k4 = 3.f / 40.f;
71 dS = chord + chord * sa2 * (k2 + k4 * sa2);
98 return PropagateToXBzLight(
x, Bz, dLp);
106 float bt = CAMath::Sqrt(Bz * Bz + By * By);
107 float bb = CAMath::Sqrt(Bx * Bx + By * By + Bz * Bz);
109 float c1 = 1.f,
s1 = 0.f;
110 float c2 = 1.f, s2 = 0.f;
129 float R0[3] = {
c2,
s1 * s2,
c1 * s2};
130 float R1[3] = {0,
c1, -
s1};
131 float R2[3] = {-s2,
s1 *
c2,
c1 *
c2};
135 float lx = t.X(), ly = t.
Y(), lz = t.
Z(), lpx = t.
Px(), lpy = t.
Py(), lpz = t.
Pz();
137 t.X() = R0[0] * lx + R0[1] * ly + R0[2] * lz;
138 t.
Y() =
R1[0] * lx +
R1[1] * ly +
R1[2] * lz;
139 t.
Z() = R2[0] * lx + R2[1] * ly + R2[2] * lz;
141 t.
Px() = R0[0] * lpx + R0[1] * lpy + R0[2] * lpz;
142 t.
Py() =
R1[0] * lpx +
R1[1] * lpy +
R1[2] * lpz;
143 t.
Pz() = R2[0] * lpx + R2[1] * lpy + R2[2] * lpz;
147 float xe = t.X() + dx;
154 if (t.PropagateToXBzLightNoUpdate(xe,
bb, dLp) != 0) {
160 float lx = t.X(), ly = t.
Y(), lz = t.
Z(), lpx = t.
Px(), lpy = t.
Py(), lpz = t.
Pz();
162 t.X() = R0[0] * lx +
R1[0] * ly + R2[0] * lz;
163 t.
Y() = R0[1] * lx +
R1[1] * ly + R2[1] * lz;
164 t.
Z() = R0[2] * lx +
R1[2] * ly + R2[2] * lz;
166 t.
Px() = R0[0] * lpx +
R1[0] * lpy + R2[0] * lpz;
167 t.
Py() = R0[1] * lpx +
R1[1] * lpy + R2[1] * lpz;
168 t.
Pz() = R0[2] * lpx +
R1[2] * lpy + R2[2] * lpz;
177 if (t.PropagateToXBzLightNoUpdate(
x, Bz, ddLp) != 0) {
197 float qfield = mQ * Bz;
201 const float kOvSqSix = CAMath::Sqrt(1.f / 6.f);
210 if (CAMath::Abs(tet) > 0.03f) {
211 sint = CAMath::Sin(tet);
214 float t = CAMath::Sin(0.5f * tet);
229 mX +=
f1 * px -
f2 * py;
230 mY +=
f1 * py +
f2 * px;
231 mZ +=
f1 * pz +
f3 * pz;
233 mPx +=
f4 * px -
f5 * py;
234 mPy +=
f4 * py +
f5 * px;
241#if !defined(GPUCA_GPUCODE)
247#if !defined(GPUCA_GPUCODE)
248 std::cout <<
"GPUTPCGMPhysicalTrackModel: x " << mX <<
" y " << mY <<
" z " << mZ <<
" px " << mPx <<
" py " << mPy <<
" pz " << mPz <<
" q " << mQ << std::endl;
#define GPUCA_MAX_SIN_PHI
bool const GPUTPCGMMerger::trackCluster * c1
bool const GPUTPCGMMerger::trackCluster const clcomparestruct * c2
GPUd() int32_t GPUTPCGMPhysicalTrackModel
float float float float Py
float float float float float Pz
GLuint GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat GLfloat s1
GLboolean GLboolean GLboolean b
typedef void(APIENTRYP PFNGLCULLFACEPROC)(GLenum mode)
constexpr value_T kOvSqSix