|
| PndCATrackParam () |
|
| PndCATrackParam (const TrackParamVector &v, int i) |
|
float | X () const |
|
float | Y () const |
|
float | Z () const |
|
float | SinPhi () const |
|
float | DzDs () const |
|
float | QPt () const |
|
float | QMomentum () const |
|
float | SignCosPhi () const |
|
float | Chi2 () const |
|
int | NDF () const |
|
float | Err2Y () const |
|
float | Err2Z () const |
|
float | Err2SinPhi () const |
|
float | Err2DzDs () const |
|
float | Err2QPt () const |
|
float | Angle () const |
|
int | ISec () const |
|
float | GetX () const |
|
float | GetY () const |
|
float | GetZ () const |
|
float | GetSinPhi () const |
|
float | GetDzDs () const |
|
float | GetQPt () const |
|
float | GetSignCosPhi () const |
|
float | GetChi2 () const |
|
int | GetNDF () const |
|
float | GetKappa (float Bz) const |
|
float | GetCosPhiPositive () const |
|
float | GetCosPhi () const |
|
float | GetErr2Y () const |
|
float | GetErr2Z () const |
|
float | GetErr2SinPhi () const |
|
float | GetErr2DzDs () const |
|
float | GetErr2QPt () const |
|
float | Err2X1 () const |
|
float | Err2X2 () const |
|
float | Err2QMomentum () const |
|
const float * | Par () const |
|
const float * | Cov () const |
|
const float * | GetPar () const |
|
const float * | GetCov () const |
|
void | SetPar (int i, float v) |
|
void | SetCov (int i, float v) |
|
void | SetX (float v) |
|
void | SetY (float v) |
|
void | SetZ (float v) |
|
void | SetSinPhi (float v) |
|
void | SetDzDs (float v) |
|
void | SetQPt (float v) |
|
void | SetSignCosPhi (float v) |
|
void | SetChi2 (float v) |
|
void | SetNDF (int v) |
|
void | SetAngle (float v) |
|
void | SetISec (int v) |
|
void | SetErr2QPt (float v) |
|
void | InitDirection (float r0, float r1, float r2) |
|
float | GetDist2 (const PndCATrackParam &t) const |
|
float | GetDistXZ2 (const PndCATrackParam &t) const |
|
float | GetS (float x, float y, float Bz) const |
|
void | GetDCAPoint (float x, float y, float z, float &px, float &py, float &pz, float Bz) const |
|
bool | TransportToX (float x, float Bz, float maxSinPhi=.999) |
|
bool | TransportToXWithMaterial (float x, float Bz, float maxSinPhi=.999) |
|
bool | TransportToX (float x, PndCATrackLinearisation &t0, float Bz, float maxSinPhi=.999, float *DL=0) |
|
bool | TransportToX (float x, float sinPhi0, float cosPhi0, float Bz, float maxSinPhi=.999) |
|
bool | TransportToXWithMaterial (float x, PndCATrackLinearisation &t0, PndCATrackFitParam &par, float Bz, float maxSinPhi=.999) |
|
bool | TransportToXWithMaterial (float x, PndCATrackFitParam &par, float Bz, float maxSinPhi=.999) |
|
void | CalculateFitParameters (PndCATrackFitParam &par, float mass=0.13957) |
|
bool | CorrectForMeanMaterial (float xOverX0, float xTimesRho, const PndCATrackFitParam &par) |
|
bool | Rotate (float alpha, float maxSinPhi=.999) |
|
bool | Rotate (float alpha, PndCATrackLinearisation &t0, float maxSinPhi=.999) |
|
void | RotateXY (float alpha, float &x, float &y, float &sin) const |
|
bool | Filter (float y, float z, float err2Y, float errYZ, float err2Z, float maxSinPhi=.999) |
|
void | Print () const |
|
void | ResetCovMatrix () |
|
PndCATrackParam | GetGlobalParam (float alpha) const |
|
void | Reset () |
|
bool | Transport (const PndCAHit &hit, float Bz) |
|
bool | Filter (const PndCAHit &hit) |
|
bool | IsValid () const |
|
void | SetAsInvalid () |
|
PndCATrackParam class describes the track parametrisation which is used by the PndCATracker slice tracker.
Definition at line 28 of file PndCATrackParam.h.
bool PndCATrackParam::Filter |
( |
float |
y, |
|
|
float |
z, |
|
|
float |
err2Y, |
|
|
float |
errYZ, |
|
|
float |
err2Z, |
|
|
float |
maxSinPhi = .999 |
|
) |
| |
|
inline |
Definition at line 237 of file PndCATrackParam.h.
References CAMath::Abs(), c10, c11, c20, c21, d, f, fC, fChi2, fNDF, fP, ISUNLIKELY, and z0.
Referenced by Filter().
239 assert( maxSinPhi > 0.
f );
242 const float c00 =
fC[0];
243 const float c10 =
fC[1];
244 const float c11 =
fC[2];
245 const float c20 =
fC[3];
246 const float c21 =
fC[4];
248 const float c30 =
fC[6];
249 const float c31 =
fC[7];
252 const float c40 =
fC[10];
253 const float c41 =
fC[11];
258 float d = 1.f / ( err2Y*err2Z + err2Y*c11 + err2Z*c00 + c00*c11 - c10*c10 - 2*errYZ*c10 - errYZ*errYZ );
269 const float mS0 = err2Z*
d;
270 const float mS1 = -errYZ*
d;
271 const float mS2 = err2Y*
d;
276 k00 = c00 * mS0 + c10*mS1, k01 = c00 * mS1 + c10*mS2,
277 k10 = c10 * mS0 + c11*mS1, k11 = c10 * mS1 + c11*mS2,
278 k20 = c20 * mS0 + c21*mS1, k21 = c20 * mS1 + c21*mS2,
279 k30 = c30 * mS0 + c31*mS1, k31 = c30 * mS1 + c31*mS2,
280 k40 = c40 * mS0 + c41*mS1, k41 = c40 * mS1 + c41*mS2;
282 const float sinPhi = fP[2] + k20 * z0 + k21 * z1;
287 fChi2 += mS0 * z0 * z0 + mS2 * z1 * z1 + 2 * z0 * z1 * mS1;
289 fP[ 0] += k00 * z0 + k01 * z1;
290 fP[ 1] += k10 * z0 + k11 * z1;
292 fP[ 3] += k30 * z0 + k31 * z1;
293 fP[ 4] += k40 * z0 + k41 * z1;
295 fC[ 0] -= (k00 * c00 + k01 *
c10);
297 fC[ 1] -= (k10 * c00 + k11 *
c10);
298 fC[ 2] -= (k10 * c10 + k11 *
c11);
300 fC[ 3] -= (k20 * c00 + k21 *
c10);
301 fC[ 4] -= (k20 * c10 + k21 *
c11);
302 fC[ 5] -= (k20 * c20 + k21 *
c21);
304 fC[ 6] -= (k30 * c00 + k31 *
c10);
305 fC[ 7] -= (k30 * c10 + k31 *
c11);
306 fC[ 8] -= (k30 * c20 + k31 *
c21);
307 fC[ 9] -= (k30 * c30 + k31 * c31);
309 fC[10] -= (k40 * c00 + k41 *
c10);
310 fC[11] -= (k40 * c10 + k41 *
c11);
311 fC[12] -= (k40 * c20 + k41 *
c21);
312 fC[13] -= (k40 * c30 + k41 * c31);
313 fC[14] -= (k40 * c40 + k41 * c41);
void PndCATrackParam::GetDCAPoint |
( |
float |
x, |
|
|
float |
y, |
|
|
float |
z, |
|
|
float & |
px, |
|
|
float & |
py, |
|
|
float & |
pz, |
|
|
float |
Bz |
|
) |
| const |
Definition at line 73 of file PndCATrackParam.cxx.
References a, CAMath::Abs(), dx, dy, GetCosPhi(), GetDzDs(), GetKappa(), GetS(), GetSinPhi(), GetX(), GetY(), GetZ(), CAMath::Nint(), s, sqrt(), CAMath::TwoPi(), x0, and y0.
86 float ax = dx * k + ey;
87 float ay = dy * k - ex;
88 float a =
sqrt( ax * ax + ay * ay );
89 xp = x0 + ( dx - ey * ( ( dx * dx + dy *
dy ) * k - 2 * ( -dx * ey + dy * ex ) ) / ( a + 1 ) ) / a;
90 yp = y0 + ( dy + ex * ( ( dx * dx + dy *
dy ) * k - 2 * ( -dx * ey + dy * ex ) ) / ( a + 1 ) ) / a;
float GetKappa(float Bz) const
friend F32vec4 sqrt(const F32vec4 &a)
float GetS(float x, float y, float Bz) const
bool PndCATrackParam::Rotate |
( |
float |
alpha, |
|
|
float |
maxSinPhi = .999 |
|
) |
| |
Definition at line 290 of file PndCATrackParam.cxx.
References CAMath::Abs(), alpha, CAMath::Cos(), fabs(), fAlpha, fC, GetCosPhi(), SetSignCosPhi(), SetSinPhi(), SetX(), SetY(), CAMath::Sin(), SinPhi(), X(), x, Y(), and y.
Referenced by GetGlobalParam(), and Transport().
297 const float cosPhi = cP * cA + sP * sA;
298 const float sinPhi = -cP * sA + sP * cA;
302 if (
fabs(
alpha) > 3.1415 * 0.25 )
return 0;
304 const float j0 = cP / cosPhi;
305 const float j2 = cosPhi / cP;
308 SetY( -x*sA +
y*cA );
void SetSignCosPhi(float v)
friend F32vec4 fabs(const F32vec4 &a)
Definition at line 338 of file PndCATrackParam.cxx.
References CAMath::Abs(), alpha, CAMath::Cos(), PndCATrackLinearisation::CosPhi(), d, fabs(), fAlpha, fC, PndCATrackLinearisation::SetCosPhi(), PndCATrackLinearisation::SetSinPhi(), SetSinPhi(), SetX(), SetY(), CAMath::Sin(), PndCATrackLinearisation::SinPhi(), SinPhi(), X(), x0, Y(), and y0.
345 const float cosPhi = cP * cA + sP * sA;
346 const float sinPhi = -cP * sA + sP * cA;
350 if (
fabs(
alpha) > 3.1415 * 0.25 )
return 0;
358 const float j0 = cP / cosPhi;
359 const float j2 = cosPhi / cP;
363 SetY( -x0*sA +
y0*cA + j0*d[0] );
friend F32vec4 fabs(const F32vec4 &a)
bool PndCATrackParam::TransportToX |
( |
float |
x, |
|
|
PndCATrackLinearisation & |
t0, |
|
|
float |
Bz, |
|
|
float |
maxSinPhi = .999 , |
|
|
float * |
DL = 0 |
|
) |
| |
|
inline |
Definition at line 369 of file PndCATrackParam.h.
References CAMath::Abs(), CAMath::ASin(), c10, c11, c20, c21, c22, PndCATrackLinearisation::CosPhi(), d, dx, dy, dz, PndCATrackLinearisation::DzDs(), f, fC, fP, fX, h2, h4, PndCATrackLinearisation::QPt(), PndCATrackLinearisation::SetCosPhi(), PndCATrackLinearisation::SetSinPhi(), PndCATrackLinearisation::SinPhi(), CAMath::Sqrt(), X(), Y(), and Z().
377 const float ex = t0.
CosPhi();
378 const float ey = t0.
SinPhi();
379 const float k = t0.
QPt() * Bz;
380 const float dx =
x -
X();
382 const float ey1 = k * dx + ey;
389 if ( ex < 0 ) ex1 = -ex1;
391 const float dx2 = dx *
dx;
392 const float ss = ey + ey1;
393 const float cc = ex + ex1;
397 const float cci = 1.f / cc;
398 const float exi = 1.f / ex;
399 const float ex1i = 1.f / ex1;
401 const float tg = ss * cci;
403 const float dy = dx * tg;
406 if ( cc < 0 ) dl = -dl;
407 float dSin = dl * k * 0.5;
408 if ( dSin > 1.
f ) dSin = 1.f;
409 if ( dSin < -1.
f ) dSin = -1.f;
411 const float dz = dS * t0.
DzDs();
424 const float h2 = dx * ( 1.f + ey * ey1 + ex * ex1 ) * exi * ex1i * cci;
425 const float h4 = dx2 * ( cc + ss * ey1 * ex1i ) * cci * cci * Bz;
426 const float dxBz = dx * Bz;
432 fP[0] =
Y() + dy + h2 * d[0] + h4 * d[2];
433 fP[1] =
Z() + dz + dS * d[1];
434 fP[2] = t0.
SinPhi() + d[0] + dxBz * d[2];
438 const float c00 =
fC[0];
439 const float c10 =
fC[1];
440 const float c11 =
fC[2];
441 const float c20 =
fC[3];
442 const float c21 =
fC[4];
443 const float c22 =
fC[5];
444 const float c30 =
fC[6];
445 const float c31 =
fC[7];
446 const float c32 =
fC[8];
447 const float c33 =
fC[9];
448 const float c40 =
fC[10];
449 const float c41 =
fC[11];
450 const float c42 =
fC[12];
451 const float c43 =
fC[13];
452 const float c44 =
fC[14];
454 fC[0] = ( c00 + h2 * h2 * c22 + h4 * h4 * c44
455 + 2.f * ( h2 * c20 + h4 * c40 + h2 * h4 * c42 ) );
457 fC[1] = c10 + h2 * c21 + h4 * c41 + dS * ( c30 + h2 * c32 + h4 * c43 );
458 fC[2] = c11 + 2.f * dS * c31 + dS * dS * c33;
460 fC[3] = c20 + h2 * c22 + h4 * c42 + dxBz * ( c40 + h2 * c42 + h4 * c44 );
461 fC[4] = c21 + dS * c32 + dxBz * ( c41 + dS * c43 );
462 fC[5] = c22 + 2.f * dxBz * c42 + dxBz * dxBz * c44;
464 fC[6] = c30 + h2 * c32 + h4 * c43;
465 fC[7] = c31 + dS * c33;
466 fC[8] = c32 + dxBz * c43;
469 fC[10] = c40 + h2 * c42 + h4 * c44;
470 fC[11] = c41 + dS * c43;
471 fC[12] = c42 + dxBz * c44;
475 fC[0] = ( fC[0] + h2 * h2 * fC[5] + h4 * h4 * fC[14]
476 + 2 * ( h2 * fC[3] + h4 * fC[10] + h2 * h4 * fC[12] ) );
478 fC[1] = fC[1] + h2 * fC[4] + h4 * fC[11] + dS * ( fC[6] + h2 * fC[8] + h4 * fC[13] );
479 fC[2] = fC[2] + 2 * dS * fC[7] + dS * dS * fC[9];
481 fC[3] = fC[3] + h2 * fC[5] + h4 * fC[12] + dxBz * ( fC[10] + h2 * fC[12] + h4 * fC[14] );
482 fC[4] = fC[4] + dS * fC[8] + dxBz * ( fC[11] + dS * fC[13] );
483 fC[5] = fC[5] + 2 * dxBz * fC[12] + dxBz * dxBz * fC[14];
485 fC[6] = fC[6] + h2 * fC[8] + h4 * fC[13];
486 fC[7] = fC[7] + dS * fC[9];
487 fC[8] = fC[8] + dxBz * fC[13];
490 fC[10] = fC[10] + h2 * fC[12] + h4 * fC[14];
491 fC[11] = fC[11] + dS * fC[13];
492 fC[12] = fC[12] + dxBz * fC[14];
static T ASin(const T &x)
static T Sqrt(const T &x)
bool PndCATrackParam::TransportToX |
( |
float |
x, |
|
|
float |
sinPhi0, |
|
|
float |
cosPhi0, |
|
|
float |
Bz, |
|
|
float |
maxSinPhi = .999 |
|
) |
| |
Definition at line 106 of file PndCATrackParam.cxx.
References CAMath::Abs(), c10, c11, c20, c21, c22, dx, DzDs(), fC, fP, fX, h2, h4, QPt(), SinPhi(), and X().
115 const float ex = cosPhi0;
116 const float ey = sinPhi0;
117 const float dx =
x -
X();
120 const float exi = 1. / ex;
122 const float dxBz = dx * Bz;
123 const float dS = dx * exi;
124 const float h2 = dS * exi * exi;
125 const float h4 = .5 * h2 * dxBz;
133 const float sinPhi =
SinPhi() + dxBz *
QPt();
134 if ( maxSinPhi > 0 &&
CAMath::Abs( sinPhi ) > maxSinPhi )
return 0;
137 fP[0] += dS * ey + h2 * (
SinPhi() - ey ) + h4 *
QPt();
141 const float c00 =
fC[0];
142 const float c10 =
fC[1];
143 const float c11 =
fC[2];
144 const float c20 =
fC[3];
145 const float c21 =
fC[4];
146 const float c22 =
fC[5];
147 const float c30 =
fC[6];
148 const float c31 =
fC[7];
149 const float c32 =
fC[8];
150 const float c33 =
fC[9];
151 const float c40 =
fC[10];
152 const float c41 =
fC[11];
153 const float c42 =
fC[12];
154 const float c43 =
fC[13];
155 const float c44 =
fC[14];
158 fC[0] = ( c00 + h2 * h2 * c22 + h4 * h4 * c44
159 + 2 * ( h2 * c20 + h4 * c40 + h2 * h4 * c42 ) );
161 fC[1] = c10 + h2 * c21 + h4 * c41 + dS * ( c30 + h2 * c32 + h4 * c43 );
162 fC[2] = c11 + 2 * dS * c31 + dS * dS * c33;
164 fC[3] = c20 + h2 * c22 + h4 * c42 + dxBz * ( c40 + h2 * c42 + h4 * c44 );
165 fC[4] = c21 + dS * c32 + dxBz * ( c41 + dS * c43 );
166 fC[5] = c22 + 2 * dxBz * c42 + dxBz * dxBz * c44;
168 fC[6] = c30 + h2 * c32 + h4 * c43;
169 fC[7] = c31 + dS * c33;
170 fC[8] = c32 + dxBz * c43;
173 fC[10] = c40 + h2 * c42 + h4 * c44;
174 fC[11] = c41 + dS * c43;
175 fC[12] = c42 + dxBz * c44;