PandaRoot
PndCATrackParamVector Class Reference

#include <PndCATrackParamVector.h>

Classes

struct  PndCATrackFitParam
 

Public Member Functions

 PndCATrackParamVector ()
 
void Reset ()
 
void InitCovMatrix (float_v d2QMom=0.f)
 
void InitByTarget (const PndCATarget &target)
 
void InitByHit (const PndCAHitV &hit, const PndCAParam &param, const float_v &dQMom)
 
void InitDirection (float_v r0, float_v r1, float_v r2)
 
float_v X () const
 
float_v Y () const
 
float_v Z () const
 
float_v SinPhi () const
 
float_v DzDs () const
 
float_v QPt () const
 
float_v Angle () const
 
int_v ISec () const
 
float_v X0 () const
 
float_v X1 () const
 
float_v X2 () const
 
float_v Tx1 () const
 
float_v Tx2 () const
 
float_v QMomentum () const
 
float_v SignCosPhi () const
 
float_v Chi2 () const
 
int_v NDF () const
 
float_v Err2Y () const
 
float_v Err2Z () const
 
float_v Err2SinPhi () const
 
float_v Err2DzDs () const
 
float_v Err2QPt () const
 
float_v GetX () const
 
float_v GetY () const
 
float_v GetZ () const
 
float_v GetSinPhi () const
 
float_v GetDzDs () const
 
float_v GetQPt () const
 
float_v GetSignCosPhi () const
 
float_v GetChi2 () const
 
int_v GetNDF () const
 
float_v GetKappa (const float_v &Bz) const
 
float_v GetCosPhiPositive () const
 
float_v GetCosPhi () const
 
float_v Err2X1 () const
 
float_v Err2X2 () const
 
float_v Err2QMomentum () const
 
const float_v & Par (int i) const
 
const float_v & Cov (int i) const
 
void SetTrackParam (const PndCATrackParamVector &param, const float_m &m=float_m(true))
 
void SetTrackParam (const PndCATrackParamVector &p, int k, int m)
 
void SetPar (int i, const float_v &v)
 
void SetPar (int i, const float_v &v, const float_m &m)
 
void SetCov (int i, const float_v &v)
 
void SetCov (int i, const float_v &v, const float_m &m)
 
void SetX (const float_v &v)
 
void SetY (const float_v &v)
 
void SetZ (const float_v &v)
 
void SetX (const float_v &v, const float_m &m)
 
void SetY (const float_v &v, const float_m &m)
 
void SetZ (const float_v &v, const float_m &m)
 
void SetSinPhi (const float_v &v)
 
void SetSinPhi (const float_v &v, const float_m &m)
 
void SetDzDs (const float_v &v)
 
void SetDzDs (const float_v &v, const float_m &m)
 
void SetQPt (const float_v &v)
 
void SetQMomentum (const float_v &v)
 
void SetQPt (const float_v &v, const float_m &m)
 
void SetSignCosPhi (const float_v &v)
 
void SetSignCosPhi (const float_v &v, const float_m &m)
 
void SetChi2 (const float_v &v)
 
void SetChi2 (const float_v &v, const float_m &m)
 
void SetNDF (int v)
 
void SetNDF (const int_v &v)
 
void SetNDF (const int_v &v, const int_m &m)
 
void SetAngle (const float_v &v)
 
void SetAngle (const float_v &v, const float_m &m)
 
void SetISec (const int_v &v)
 
void SetISec (const int_v &v, const int_m &m)
 
void SetErr2Y (float_v v)
 
void SetErr2Z (float_v v)
 
void SetErr2QPt (float_v v)
 
float_v GetDist2 (const PndCATrackParamVector &t) const
 
float_v GetDistXZ2 (const PndCATrackParamVector &t) const
 
float_v GetS (const float_v &x, const float_v &y, const float_v &Bz) const
 
void GetDCAPoint (const float_v &x, const float_v &y, const float_v &z, float_v *px, float_v *py, float_v *pz, const float_v &Bz) const
 
float_m Transport0 (const int_v &ista, const PndCAParam &param, const float_m &mask=float_m(true))
 
float_m Transport0 (const PndCAHitV &hit, const PndCAParam &param, const float_m &mask=float_m(true))
 
float_m Transport0 (const PndCAHit &hit, const PndCAParam &p, const float_m &mask=float_m(true))
 
float_m TransportToXWithMaterial (const float_v &x, const float_v &XOverX0, const float_v &XThimesRho, const float_v &Bz, const float maxSinPhi=.999f)
 
float_m TransportToX (const float_v &x, const float_v &Bz, const float maxSinPhi=.999f, const float_m &mask=float_m(true))
 
float_m TransportToX (const float_v &x, PndCATrackLinearisationVector &t0, const float_v &Bz, const float maxSinPhi=.999f, float_v *DL=0, const float_m &mask=float_m(true))
 
float_m Transport0ToX (const float_v &x, const float_v &Bz, const float_m &mask)
 
float_m TransportToX (const float_v &x, const float_v &sinPhi0, const float_v &Bz, const float_v maxSinPhi=.999f, const float_m &mask=float_m(true))
 
float_m TransportToXWithMaterial (const float_v &x, PndCATrackLinearisationVector &t0, PndCATrackFitParam &par, const float_v &XOverX0, const float_v &XThimesRho, const float_v &Bz, const float maxSinPhi=.999f, const float_m &mask=float_m(true))
 
float_m TransportToXWithMaterial (const float_v &x, PndCATrackFitParam &par, const float_v &XOverX0, const float_v &XThimesRho, const float_v &Bz, const float maxSinPhi=.999f)
 
float_m Rotate (const float_v &alpha, PndCATrackLinearisationVector &t0, const float maxSinPhi=.999f, const float_m &mask=float_m(true))
 
float_m Rotate (const float_v &alpha, const float maxSinPhi=.999f, const float_m &mask=float_m(true))
 
void RotateXY (float_v alpha, float_v &x, float_v &y, float_v &sin, const float_m &mask=float_m(true)) const
 
float_m FilterWithMaterial (const float_v &y, const float_v &z, float_v err2Y, float_v errYZ, float_v err2Z, float maxSinPhi=0.999f, const float_m &mask=float_m(true), const int_v &hitNDF=int_v(2), const float_v &chi2Cut=10e10f)
 
float_m FilterWithMaterial (const float_v &y, const float_v &z, const PndCAStripInfo &info, float_v err2, float maxSinPhi=0.999f, const float_m &mask=float_m(true), const float_v &chi2Cut=10e10f)
 
void CalculateFitParameters (PndCATrackFitParam &par, const float_v &mass=0.13957f)
 
float_m CorrectForMeanMaterial (const float_v &xOverX0, const float_v &xTimesRho, const PndCATrackFitParam &par, const float_m &_mask)
 
float_m FilterVtx (const float_v &xV, const float_v &yV, const PndCAX1X2MeasurementInfo &info, float_v &extrDx, float_v &extrDy, float_v J[], const float_m &active=float_m(true))
 
float_m TransportJ0ToX0 (const float_v &x0, const float_v &cBz, float_v &extrDy, float_v &extrDz, float_v J[], const float_m &active=float_m(true))
 
float_m Transport (const int_v &ista, const PndCAParam &param, const float_m &mask=float_m(true))
 
float_m Transport (const PndCAHitV &hit, const PndCAParam &p, const float_m &mask=float_m(true))
 
float_m Filter (const PndCAHitV &hit, const PndCAParam &param, const float_m &mask=float_m(true), const float_v &chi2Cut=10e10f)
 
float_m Transport (const PndCAHit &hit, const PndCAParam &p, const float_m &mask=float_m(true))
 
float_m Filter (const PndCAHit &hit, const PndCAParam &param, const float_m &mask=float_m(true), const float_v &chi2Cut=10e10f)
 
float_m Accept (const PndCAHit &hit, const PndCAParam &param, const float_m &mask=float_m(true), const float_v &chi2Cut=10e10f) const
 
float_m AcceptWithMaterial (const float_v &y, const float_v &z, float_v err2Y, float_v errYZ, float_v err2Z, float maxSinPhi=0.999f, const float_m &mask=float_m(true), const int_v &hitNDF=int_v(2), const float_v &chi2Cut=10e10f) const
 
float_m AcceptWithMaterial (const float_v &y, const float_v &z, const PndCAStripInfo &info, float_v err2, float maxSinPhi=0.999f, const float_m &mask=float_m(true), const float_v &chi2Cut=10e10f) const
 
float_m AddTarget (const PndCATarget &target, const float_m &mask=float_m(true))
 

Static Public Member Functions

static float_v ApproximateBetheBloch (const float_v &beta2)
 
static float_v BetheBlochGeant (const float_v &bg, const float_v &kp0=2.33f, const float_v &kp1=0.20f, const float_v &kp2=3.00f, const float_v &kp3=173e-9f, const float_v &kp4=0.49848f)
 
static float_v BetheBlochSolid (const float_v &bg)
 
static float_v BetheBlochGas (const float_v &bg)
 

Public Attributes

float_v fX
 
float_v fSignCosPhi
 
float_v fP [5]
 
float_v fC [15]
 
float_v fChi2
 
int_v fNDF
 
float_v fAlpha
 
int_v fISec
 

Friends

class PndCATrackParam
 

Detailed Description

PndCATrackParamVector class describes the track parametrisation which is used by the PndCATracker slice tracker.

Definition at line 36 of file PndCATrackParamVector.h.

Constructor & Destructor Documentation

◆ PndCATrackParamVector()

PndCATrackParamVector::PndCATrackParamVector ( )
inline

Definition at line 40 of file PndCATrackParamVector.h.

References fC, fP, and i.

40  : fX(Vc::Zero), fSignCosPhi(Vc::Zero), fChi2(Vc::Zero), fNDF(Vc::Zero), fISec(Vc::Zero)
41  {
42  for (int i = 0; i < 5; ++i)
43  fP[i].setZero();
44  for (int i = 0; i < 15; ++i)
45  fC[i].setZero();
46  }
unsigned int i
Definition: P4_F32vec4.h:21

Member Function Documentation

◆ Accept()

float_m PndCATrackParamVector::Accept ( const PndCAHit hit,
const PndCAParam param,
const float_m &  mask = float_m(true),
const float_v &  chi2Cut = 10e10f 
) const

Referenced by SetErr2QPt().

◆ AcceptWithMaterial() [1/2]

float_m PndCATrackParamVector::AcceptWithMaterial ( const float_v &  y,
const float_v &  z,
float_v  err2Y,
float_v  errYZ,
float_v  err2Z,
float  maxSinPhi = 0.999f,
const float_m &  mask = float_m(true),
const int_v &  hitNDF = int_v(2),
const float_v &  chi2Cut = 10e10f 
) const

Referenced by SetErr2QPt().

◆ AcceptWithMaterial() [2/2]

float_m PndCATrackParamVector::AcceptWithMaterial ( const float_v &  y,
const float_v &  z,
const PndCAStripInfo info,
float_v  err2,
float  maxSinPhi = 0.999f,
const float_m &  mask = float_m(true),
const float_v &  chi2Cut = 10e10f 
) const

◆ AddTarget()

float_m PndCATrackParamVector::AddTarget ( const PndCATarget target,
const float_m &  mask = float_m(true) 
)

Referenced by SetErr2QPt().

◆ Angle()

float_v PndCATrackParamVector::Angle ( ) const
inline

Definition at line 93 of file PndCATrackParamVector.h.

References fAlpha.

93 { return fAlpha; }

◆ ApproximateBetheBloch()

static float_v PndCATrackParamVector::ApproximateBetheBloch ( const float_v &  beta2)
static

Referenced by SetErr2QPt().

◆ BetheBlochGas()

static float_v PndCATrackParamVector::BetheBlochGas ( const float_v &  bg)
static

Referenced by SetErr2QPt().

◆ BetheBlochGeant()

static float_v PndCATrackParamVector::BetheBlochGeant ( const float_v &  bg,
const float_v &  kp0 = 2.33f,
const float_v &  kp1 = 0.20f,
const float_v &  kp2 = 3.00f,
const float_v &  kp3 = 173e-9f,
const float_v &  kp4 = 0.49848f 
)
static

Referenced by SetErr2QPt().

◆ BetheBlochSolid()

static float_v PndCATrackParamVector::BetheBlochSolid ( const float_v &  bg)
static

Referenced by SetErr2QPt().

◆ CalculateFitParameters()

void PndCATrackParamVector::CalculateFitParameters ( PndCATrackFitParam par,
const float_v &  mass = 0.13957f 
)

Referenced by SetErr2QPt().

◆ Chi2()

float_v PndCATrackParamVector::Chi2 ( ) const
inline

Definition at line 108 of file PndCATrackParamVector.h.

References fChi2.

108 { return fChi2; }

◆ CorrectForMeanMaterial()

float_m PndCATrackParamVector::CorrectForMeanMaterial ( const float_v &  xOverX0,
const float_v &  xTimesRho,
const PndCATrackFitParam par,
const float_m &  _mask 
)

Referenced by SetErr2QPt().

◆ Cov()

const float_v& PndCATrackParamVector::Cov ( int  i) const
inline

Definition at line 138 of file PndCATrackParamVector.h.

References fC, and i.

Referenced by PndCATrackParam::PndCATrackParam(), PndFTSCATrackParam::PndFTSCATrackParam(), and SetTrackParam().

138 { return fC[i]; }
unsigned int i
Definition: P4_F32vec4.h:21

◆ DzDs()

float_v PndCATrackParamVector::DzDs ( ) const
inline

Definition at line 90 of file PndCATrackParamVector.h.

References fP.

Referenced by TransportJ0ToX0(), TransportToX(), and Tx2().

90 { return fP[3]; }

◆ Err2DzDs()

float_v PndCATrackParamVector::Err2DzDs ( ) const
inline

Definition at line 114 of file PndCATrackParamVector.h.

References fC.

114 { return fC[9]; }

◆ Err2QMomentum()

float_v PndCATrackParamVector::Err2QMomentum ( ) const
inline

Definition at line 135 of file PndCATrackParamVector.h.

References fC.

135 { return fC[14]; }

◆ Err2QPt()

float_v PndCATrackParamVector::Err2QPt ( ) const
inline

Definition at line 115 of file PndCATrackParamVector.h.

References fC.

115 { return fC[14]; }

◆ Err2SinPhi()

float_v PndCATrackParamVector::Err2SinPhi ( ) const
inline

Definition at line 113 of file PndCATrackParamVector.h.

References fC.

113 { return fC[5]; }

◆ Err2X1()

float_v PndCATrackParamVector::Err2X1 ( ) const
inline

Definition at line 131 of file PndCATrackParamVector.h.

References fC.

131 { return fC[0]; }

◆ Err2X2()

float_v PndCATrackParamVector::Err2X2 ( ) const
inline

Definition at line 132 of file PndCATrackParamVector.h.

References fC.

132 { return fC[2]; }

◆ Err2Y()

float_v PndCATrackParamVector::Err2Y ( ) const
inline

Definition at line 111 of file PndCATrackParamVector.h.

References fC.

111 { return fC[0]; }

◆ Err2Z()

float_v PndCATrackParamVector::Err2Z ( ) const
inline

Definition at line 112 of file PndCATrackParamVector.h.

References fC.

112 { return fC[2]; }

◆ Filter() [1/2]

float_m PndCATrackParamVector::Filter ( const PndCAHitV hit,
const PndCAParam param,
const float_m &  mask = float_m(true),
const float_v &  chi2Cut = 10e10f 
)

Referenced by SetErr2QPt().

◆ Filter() [2/2]

float_m PndCATrackParamVector::Filter ( const PndCAHit hit,
const PndCAParam param,
const float_m &  mask = float_m(true),
const float_v &  chi2Cut = 10e10f 
)

◆ FilterVtx()

float_m PndCATrackParamVector::FilterVtx ( const float_v &  xV,
const float_v &  yV,
const PndCAX1X2MeasurementInfo info,
float_v &  extrDx,
float_v &  extrDy,
float_v  J[],
const float_m &  active = float_m(true) 
)
inline

Definition at line 434 of file PndCATrackParamVector.h.

References PndCAX1X2MeasurementInfo::C00(), PndCAX1X2MeasurementInfo::C10(), PndCAX1X2MeasurementInfo::C11(), fC, fChi2, fP, Y(), and Z().

Referenced by SetErr2QPt().

435 {
436  float_v zeta0, zeta1, S00, S10, S11, si;
437  float_v F00, F10, F20, F30, F40, F01, F11, F21, F31, F41;
438  float_v K00, K10, K20, K30, K40, K01, K11, K21, K31, K41;
439  float_v &c00 = fC[0];
440  float_v &c10 = fC[1];
441  float_v &c11 = fC[2];
442  float_v &c20 = fC[3];
443  float_v &c21 = fC[4];
444  float_v &c22 = fC[5];
445  float_v &c30 = fC[6];
446  float_v &c31 = fC[7];
447  float_v &c32 = fC[8];
448  float_v &c33 = fC[9];
449  float_v &c40 = fC[10];
450  float_v &c41 = fC[11];
451  float_v &c42 = fC[12];
452  float_v &c43 = fC[13];
453  float_v &c44 = fC[14];
454 
455  zeta0 = Y() + extrDy - yV;
456  zeta1 = Z() + extrDz - zV;
457 
458  // H = 1 0 J[0] J[1] J[2]
459  // 0 1 J[3] J[4] J[5]
460 
461  // F = CH'
462  F00 = c00;
463  F01 = c10;
464  F10 = c10;
465  F11 = c11;
466  F20 = J[0] * c22;
467  F21 = J[3] * c22;
468  F30 = J[1] * c33;
469  F31 = J[4] * c33;
470  F40 = J[2] * c44;
471  F41 = J[5] * c44;
472 
473  S00 = info.C00() + F00 + J[0] * F20 + J[1] * F30 + J[2] * F40;
474  S10 = info.C10() + F10 + J[3] * F20 + J[4] * F30 + J[5] * F40;
475  S11 = info.C11() + F11 + J[3] * F21 + J[4] * F31 + J[5] * F41;
476 
477  si = 1.f / (S00 * S11 - S10 * S10);
478  float_v S00tmp = S00;
479  S00 = si * S11;
480  S10 = -si * S10;
481  S11 = si * S00tmp;
482 
483  fChi2(active) += zeta0 * zeta0 * S00 + 2.f * zeta0 * zeta1 * S10 + zeta1 * zeta1 * S11;
484 
485  K00 = F00 * S00 + F01 * S10;
486  K01 = F00 * S10 + F01 * S11;
487  K10 = F10 * S00 + F11 * S10;
488  K11 = F10 * S10 + F11 * S11;
489  K20 = F20 * S00 + F21 * S10;
490  K21 = F20 * S10 + F21 * S11;
491  K30 = F30 * S00 + F31 * S10;
492  K31 = F30 * S10 + F31 * S11;
493  K40 = F40 * S00 + F41 * S10;
494  K41 = F40 * S10 + F41 * S11;
495 
496  fP[0](active) -= K00 * zeta0 + K01 * zeta1;
497  fP[1](active) -= K10 * zeta0 + K11 * zeta1;
498  fP[2](active) -= K20 * zeta0 + K21 * zeta1;
499  fP[3](active) -= K30 * zeta0 + K31 * zeta1;
500  fP[4](active) -= K40 * zeta0 + K41 * zeta1;
501 
502  c00(active) -= (K00 * F00 + K01 * F01);
503  c10(active) -= (K10 * F00 + K11 * F01);
504  c11(active) -= (K10 * F10 + K11 * F11);
505  c20(active) = -(K20 * F00 + K21 * F01);
506  c21(active) = -(K20 * F10 + K21 * F11);
507  c22(active) -= (K20 * F20 + K21 * F21);
508  c30(active) = -(K30 * F00 + K31 * F01);
509  c31(active) = -(K30 * F10 + K31 * F11);
510  c32(active) = -(K30 * F20 + K31 * F21);
511  c33(active) -= (K30 * F30 + K31 * F31);
512  c40(active) = -(K40 * F00 + K41 * F01);
513  c41(active) = -(K40 * F10 + K41 * F11);
514  c42(active) = -(K40 * F20 + K41 * F21);
515  c43(active) = -(K40 * F30 + K41 * F31);
516  c44(active) -= (K40 * F40 + K41 * F41);
517 
518  return active;
519 }
const float_v & C00() const
const float_v & C11() const
const float_v & C10() const

◆ FilterWithMaterial() [1/2]

float_m PndCATrackParamVector::FilterWithMaterial ( const float_v &  y,
const float_v &  z,
float_v  err2Y,
float_v  errYZ,
float_v  err2Z,
float  maxSinPhi = 0.999f,
const float_m &  mask = float_m(true),
const int_v &  hitNDF = int_v(2),
const float_v &  chi2Cut = 10e10f 
)

Referenced by SetErr2QPt().

◆ FilterWithMaterial() [2/2]

float_m PndCATrackParamVector::FilterWithMaterial ( const float_v &  y,
const float_v &  z,
const PndCAStripInfo info,
float_v  err2,
float  maxSinPhi = 0.999f,
const float_m &  mask = float_m(true),
const float_v &  chi2Cut = 10e10f 
)

◆ GetChi2()

float_v PndCATrackParamVector::GetChi2 ( ) const
inline

Definition at line 124 of file PndCATrackParamVector.h.

References fChi2.

Referenced by SetTrackParam().

124 { return fChi2; }

◆ GetCosPhi()

float_v PndCATrackParamVector::GetCosPhi ( ) const
inline

Definition at line 129 of file PndCATrackParamVector.h.

References fSignCosPhi, SinPhi(), and CAMath::Sqrt().

Referenced by Rotate(), and RotateXY().

129 { return fSignCosPhi * CAMath::Sqrt(float_v(Vc::One) - SinPhi() * SinPhi()); }
static T Sqrt(const T &x)
Definition: PndCAMath.h:45

◆ GetCosPhiPositive()

float_v PndCATrackParamVector::GetCosPhiPositive ( ) const
inline

Definition at line 128 of file PndCATrackParamVector.h.

References SinPhi(), and CAMath::Sqrt().

128 { return CAMath::Sqrt(float_v(Vc::One) - SinPhi() * SinPhi()); }
static T Sqrt(const T &x)
Definition: PndCAMath.h:45

◆ GetDCAPoint()

void PndCATrackParamVector::GetDCAPoint ( const float_v &  x,
const float_v &  y,
const float_v &  z,
float_v *  px,
float_v *  py,
float_v *  pz,
const float_v &  Bz 
) const

Referenced by SetErr2QPt().

◆ GetDist2()

float_v PndCATrackParamVector::GetDist2 ( const PndCATrackParamVector t) const

Referenced by SetErr2QPt().

◆ GetDistXZ2()

float_v PndCATrackParamVector::GetDistXZ2 ( const PndCATrackParamVector t) const

Referenced by SetErr2QPt().

◆ GetDzDs()

float_v PndCATrackParamVector::GetDzDs ( ) const
inline

Definition at line 121 of file PndCATrackParamVector.h.

References fP.

121 { return fP[3]; }

◆ GetKappa()

float_v PndCATrackParamVector::GetKappa ( const float_v &  Bz) const
inline

Definition at line 127 of file PndCATrackParamVector.h.

References fP.

127 { return fP[4] * Bz; }

◆ GetNDF()

int_v PndCATrackParamVector::GetNDF ( ) const
inline

Definition at line 125 of file PndCATrackParamVector.h.

References fNDF.

Referenced by SetTrackParam().

125 { return fNDF; }

◆ GetQPt()

float_v PndCATrackParamVector::GetQPt ( ) const
inline

Definition at line 122 of file PndCATrackParamVector.h.

References fP.

122 { return fP[4]; }

◆ GetS()

float_v PndCATrackParamVector::GetS ( const float_v &  x,
const float_v &  y,
const float_v &  Bz 
) const

Referenced by SetErr2QPt().

◆ GetSignCosPhi()

float_v PndCATrackParamVector::GetSignCosPhi ( ) const
inline

Definition at line 123 of file PndCATrackParamVector.h.

References fSignCosPhi.

123 { return fSignCosPhi; }

◆ GetSinPhi()

float_v PndCATrackParamVector::GetSinPhi ( ) const
inline

Definition at line 120 of file PndCATrackParamVector.h.

References fP.

120 { return fP[2]; }

◆ GetX()

float_v PndCATrackParamVector::GetX ( ) const
inline

Definition at line 117 of file PndCATrackParamVector.h.

References fX.

117 { return fX; }

◆ GetY()

float_v PndCATrackParamVector::GetY ( ) const
inline

Definition at line 118 of file PndCATrackParamVector.h.

References fP.

118 { return fP[0]; }

◆ GetZ()

float_v PndCATrackParamVector::GetZ ( ) const
inline

Definition at line 119 of file PndCATrackParamVector.h.

References fP.

119 { return fP[1]; }

◆ InitByHit()

void PndCATrackParamVector::InitByHit ( const PndCAHitV hit,
const PndCAParam param,
const float_v &  dQMom 
)

Referenced by Reset().

◆ InitByTarget()

void PndCATrackParamVector::InitByTarget ( const PndCATarget target)

Referenced by Reset().

◆ InitCovMatrix()

void PndCATrackParamVector::InitCovMatrix ( float_v  d2QMom = 0.f)

Referenced by Reset().

◆ InitDirection()

void PndCATrackParamVector::InitDirection ( float_v  r0,
float_v  r1,
float_v  r2 
)
inline

Definition at line 66 of file PndCATrackParamVector.h.

References f, SetDzDs(), SetSignCosPhi(), SetSinPhi(), and sqrt().

67  {
68  const float_v r = sqrt(r0 * r0 + r1 * r1);
69  SetSinPhi(r1 / r);
70  SetSignCosPhi(1.f); // r0/abs(r0) );
71  SetDzDs(r2 / r);
72  }
void SetSignCosPhi(const float_v &v)
void SetSinPhi(const float_v &v)
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:28
void SetDzDs(const float_v &v)
float f
Definition: P4_F32vec4.h:20

◆ ISec()

int_v PndCATrackParamVector::ISec ( ) const
inline

Definition at line 94 of file PndCATrackParamVector.h.

References fISec.

94 { return fISec; }

◆ NDF()

int_v PndCATrackParamVector::NDF ( ) const
inline

Definition at line 109 of file PndCATrackParamVector.h.

References fNDF.

109 { return fNDF; }

◆ Par()

const float_v& PndCATrackParamVector::Par ( int  i) const
inline

Definition at line 137 of file PndCATrackParamVector.h.

References fP, and i.

Referenced by PndCATrackParam::PndCATrackParam(), PndFTSCATrackParam::PndFTSCATrackParam(), and SetTrackParam().

137 { return fP[i]; }
unsigned int i
Definition: P4_F32vec4.h:21

◆ QMomentum()

float_v PndCATrackParamVector::QMomentum ( ) const
inline

Definition at line 101 of file PndCATrackParamVector.h.

References QPt().

101 { return QPt(); } // used for triplets comparison

◆ QPt()

float_v PndCATrackParamVector::QPt ( ) const
inline

Definition at line 91 of file PndCATrackParamVector.h.

References fP.

Referenced by QMomentum(), and TransportToX().

91 { return fP[4]; }

◆ Reset()

void PndCATrackParamVector::Reset ( )
inline

Definition at line 48 of file PndCATrackParamVector.h.

References f, fC, fChi2, fNDF, fP, fSignCosPhi, fX, i, InitByHit(), InitByTarget(), and InitCovMatrix().

49  {
50  fX.setZero();
51  fSignCosPhi = float_v(1.f);
52  fChi2.setZero();
53  fNDF.setZero();
54  // fISec.setZero();
55  {
56  for (int i = 0; i < 5; ++i)
57  fP[i].setZero();
58  for (int i = 0; i < 15; ++i)
59  fC[i].setZero();
60  }
61  }
unsigned int i
Definition: P4_F32vec4.h:21
float f
Definition: P4_F32vec4.h:20

◆ Rotate() [1/2]

float_m PndCATrackParamVector::Rotate ( const float_v &  alpha,
PndCATrackLinearisationVector t0,
const float  maxSinPhi = .999f,
const float_m &  mask = float_m(true) 
)

Referenced by SetErr2QPt(), and Transport0().

◆ Rotate() [2/2]

float_m PndCATrackParamVector::Rotate ( const float_v &  alpha,
const float  maxSinPhi = .999f,
const float_m &  mask = float_m(true) 
)
inline

Definition at line 369 of file PndCATrackParamVector.h.

References CAMath::Abs(), alpha, CAMath::Cos(), f, fAlpha, fC, GetCosPhi(), SetSinPhi(), SetX(), SetY(), CAMath::Sin(), SinPhi(), X(), and Y().

370 {
371  // Rotate the coordinate system in XY on the angle alpha
372  if ((CAMath::Abs(alpha) < 1e-6f || !mask).isFull())
373  return mask;
374 
375  const float_v cA = CAMath::Cos(alpha);
376  const float_v sA = CAMath::Sin(alpha);
377  const float_v x0 = X(), y0 = Y(), sP = SinPhi(), cP = GetCosPhi();
378  const float_v cosPhi = cP * cA + sP * sA;
379  const float_v sinPhi = -cP * sA + sP * cA;
380 
381  float_m ReturnMask(mask);
382  ReturnMask &= (!(CAMath::Abs(sinPhi) > maxSinPhi || CAMath::Abs(cosPhi) < 1.e-4f || CAMath::Abs(cP) < 1.e-4f));
383 
384  float_v tmp = alpha * 0.15915494f; // 1/(2.f*3.1415f);
385  ReturnMask &= abs(tmp - round(tmp)) < 0.167f; // allow turn by 60 degree only TODO scalar
386 
387  // float J[5][5] = { { j0, 0, 0, 0, 0 }, // Y
388  // { 0, 1, 0, 0, 0 }, // Z
389  // { 0, 0, j2, 0, 0 }, // SinPhi
390  // { 0, 0, 0, 1, 0 }, // DzDs
391  // { 0, 0, 0, 0, 1 } }; // Kappa
392 
393  const float_v j0 = cP / cosPhi;
394  const float_v j2 = cosPhi / cP;
395  const float_v d = SinPhi() - sP;
396 
397  SetX(x0 * cA + y0 * sA, ReturnMask);
398  SetY(-x0 * sA + y0 * cA, ReturnMask);
399 
400  SetSinPhi(sinPhi + j2 * d, ReturnMask);
401 
402  fC[0](ReturnMask) *= j0 * j0;
403  fC[1](ReturnMask) *= j0;
404  fC[3](ReturnMask) *= j0;
405  fC[6](ReturnMask) *= j0;
406  fC[10](ReturnMask) *= j0;
407 
408  fC[3](ReturnMask) *= j2;
409  fC[4](ReturnMask) *= j2;
410  fC[5](ReturnMask) *= j2 * j2;
411  fC[8](ReturnMask) *= j2;
412  fC[12](ReturnMask) *= j2;
413 
414  fAlpha(ReturnMask) += alpha;
415 
416  return ReturnMask;
417 }
void SetSinPhi(const float_v &v)
static T Sin(const T &x)
Definition: PndCAMath.h:71
static T Cos(const T &x)
Definition: PndCAMath.h:76
static T Abs(const T &x)
Definition: PndCAMath.h:56
void SetY(const float_v &v)
void SetX(const float_v &v)
float f
Definition: P4_F32vec4.h:20
double alpha
Definition: f_Init.h:7

◆ RotateXY()

void PndCATrackParamVector::RotateXY ( float_v  alpha,
float_v &  x,
float_v &  y,
float_v &  sin,
const float_m &  mask = float_m(true) 
) const
inline

Definition at line 419 of file PndCATrackParamVector.h.

References CAMath::Cos(), f, GetCosPhi(), CAMath::Sin(), sin(), SinPhi(), X(), and Y().

Referenced by SetErr2QPt().

420 {
421  //* Rotate the coordinate system in XY on the angle alpha
422  if ((abs(alpha) < 1e-6f || !mask).isFull())
423  return;
424 
425  const float_v cA = CAMath::Cos(alpha);
426  const float_v sA = CAMath::Sin(alpha);
427 
428  x(mask) = (X() * cA + Y() * sA);
429  y(mask) = (-X() * sA + Y() * cA);
430  sin(mask) = -GetCosPhi() * sA + SinPhi() * cA;
431 }
friend F32vec4 sin(const F32vec4 &a)
Definition: P4_F32vec4.h:118
static T Sin(const T &x)
Definition: PndCAMath.h:71
static T Cos(const T &x)
Definition: PndCAMath.h:76
float f
Definition: P4_F32vec4.h:20
double alpha
Definition: f_Init.h:7

◆ SetAngle() [1/2]

void PndCATrackParamVector::SetAngle ( const float_v &  v)
inline

Definition at line 201 of file PndCATrackParamVector.h.

References fAlpha, and v.

201 { fAlpha = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetAngle() [2/2]

void PndCATrackParamVector::SetAngle ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 202 of file PndCATrackParamVector.h.

References fAlpha, and v.

202 { fAlpha(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetChi2() [1/2]

void PndCATrackParamVector::SetChi2 ( const float_v &  v)
inline

Definition at line 195 of file PndCATrackParamVector.h.

References fChi2, and v.

195 { fChi2 = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetChi2() [2/2]

void PndCATrackParamVector::SetChi2 ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 196 of file PndCATrackParamVector.h.

References fChi2, and v.

196 { fChi2(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetCov() [1/2]

void PndCATrackParamVector::SetCov ( int  i,
const float_v &  v 
)
inline

Definition at line 177 of file PndCATrackParamVector.h.

References fC, i, and v.

177 { fC[i] = v; }
__m128 v
Definition: P4_F32vec4.h:3
unsigned int i
Definition: P4_F32vec4.h:21

◆ SetCov() [2/2]

void PndCATrackParamVector::SetCov ( int  i,
const float_v &  v,
const float_m &  m 
)
inline

Definition at line 178 of file PndCATrackParamVector.h.

References fC, i, and m.

178 { fC[i](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3
unsigned int i
Definition: P4_F32vec4.h:21

◆ SetDzDs() [1/2]

void PndCATrackParamVector::SetDzDs ( const float_v &  v)
inline

Definition at line 188 of file PndCATrackParamVector.h.

References fP, and v.

Referenced by InitDirection().

188 { fP[3] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetDzDs() [2/2]

void PndCATrackParamVector::SetDzDs ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 189 of file PndCATrackParamVector.h.

References fP, and m.

189 { fP[3](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetErr2QPt()

◆ SetErr2Y()

void PndCATrackParamVector::SetErr2Y ( float_v  v)
inline

Definition at line 207 of file PndCATrackParamVector.h.

References fC, and v.

207 { fC[0] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetErr2Z()

void PndCATrackParamVector::SetErr2Z ( float_v  v)
inline

Definition at line 208 of file PndCATrackParamVector.h.

References fC, and v.

208 { fC[2] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetISec() [1/2]

void PndCATrackParamVector::SetISec ( const int_v &  v)
inline

Definition at line 204 of file PndCATrackParamVector.h.

References fISec, and v.

204 { fISec = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetISec() [2/2]

void PndCATrackParamVector::SetISec ( const int_v &  v,
const int_m &  m 
)
inline

Definition at line 205 of file PndCATrackParamVector.h.

References fISec, and v.

205 { fISec(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetNDF() [1/3]

void PndCATrackParamVector::SetNDF ( int  v)
inline

Definition at line 197 of file PndCATrackParamVector.h.

References fNDF, and v.

197 { fNDF = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetNDF() [2/3]

void PndCATrackParamVector::SetNDF ( const int_v &  v)
inline

Definition at line 198 of file PndCATrackParamVector.h.

References fNDF, and v.

198 { fNDF = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetNDF() [3/3]

void PndCATrackParamVector::SetNDF ( const int_v &  v,
const int_m &  m 
)
inline

Definition at line 199 of file PndCATrackParamVector.h.

References fNDF, and v.

199 { fNDF(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetPar() [1/2]

void PndCATrackParamVector::SetPar ( int  i,
const float_v &  v 
)
inline

Definition at line 175 of file PndCATrackParamVector.h.

References fP, i, and v.

175 { fP[i] = v; }
__m128 v
Definition: P4_F32vec4.h:3
unsigned int i
Definition: P4_F32vec4.h:21

◆ SetPar() [2/2]

void PndCATrackParamVector::SetPar ( int  i,
const float_v &  v,
const float_m &  m 
)
inline

Definition at line 176 of file PndCATrackParamVector.h.

References fP, i, and m.

176 { fP[i](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3
unsigned int i
Definition: P4_F32vec4.h:21

◆ SetQMomentum()

void PndCATrackParamVector::SetQMomentum ( const float_v &  v)
inline

Definition at line 191 of file PndCATrackParamVector.h.

References SetQPt().

191 { SetQPt(v); }
__m128 v
Definition: P4_F32vec4.h:3
void SetQPt(const float_v &v)

◆ SetQPt() [1/2]

void PndCATrackParamVector::SetQPt ( const float_v &  v)
inline

Definition at line 190 of file PndCATrackParamVector.h.

References fP, and v.

Referenced by SetQMomentum().

190 { fP[4] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetQPt() [2/2]

void PndCATrackParamVector::SetQPt ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 192 of file PndCATrackParamVector.h.

References fP, and m.

192 { fP[4](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetSignCosPhi() [1/2]

void PndCATrackParamVector::SetSignCosPhi ( const float_v &  v)
inline

Definition at line 193 of file PndCATrackParamVector.h.

References fSignCosPhi, and v.

Referenced by InitDirection().

193 { fSignCosPhi = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetSignCosPhi() [2/2]

void PndCATrackParamVector::SetSignCosPhi ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 194 of file PndCATrackParamVector.h.

References fSignCosPhi, and v.

194 { fSignCosPhi(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetSinPhi() [1/2]

void PndCATrackParamVector::SetSinPhi ( const float_v &  v)
inline

Definition at line 186 of file PndCATrackParamVector.h.

References fP, and v.

Referenced by InitDirection(), and Rotate().

186 { fP[2] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetSinPhi() [2/2]

void PndCATrackParamVector::SetSinPhi ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 187 of file PndCATrackParamVector.h.

References fP, and m.

187 { fP[2](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetTrackParam() [1/2]

void PndCATrackParamVector::SetTrackParam ( const PndCATrackParamVector param,
const float_m &  m = float_m(true) 
)
inline

Definition at line 148 of file PndCATrackParamVector.h.

References Cov(), fC, fChi2, fISec, fNDF, fP, fSignCosPhi, fX, GetChi2(), GetNDF(), i, m, Par(), SignCosPhi(), and X().

149  {
150  for (int i = 0; i < 5; i++)
151  fP[i](m) = param.Par()[i];
152  for (int i = 0; i < 15; i++)
153  fC[i](m) = param.Cov()[i];
154  fX(m) = param.X();
155  fSignCosPhi(m) = param.SignCosPhi();
156  fChi2(m) = param.GetChi2();
157  fNDF(static_cast<int_m>(m)) = param.GetNDF();
158  fISec(m) = param.fISec;
159  }
__m128 m
Definition: P4_F32vec4.h:26
unsigned int i
Definition: P4_F32vec4.h:21
const float_v & Cov(int i) const
const float_v & Par(int i) const

◆ SetTrackParam() [2/2]

void PndCATrackParamVector::SetTrackParam ( const PndCATrackParamVector p,
int  k,
int  m 
)
inline

Definition at line 161 of file PndCATrackParamVector.h.

References Cov(), f, fAlpha, fC, fChi2, fISec, fNDF, fP, fSignCosPhi, fX, i, m, and Par().

162  {
163  fX[k] = p.fX[m];
164  fSignCosPhi = float_v(1.f);
165  for (int i = 0; i < 5; i++)
166  fP[i][k] = p.Par()[i][m];
167  for (int i = 0; i < 15; i++)
168  fC[i][k] = p.Cov()[i][m];
169  fChi2[k] = p.fChi2[m];
170  fNDF[k] = p.fNDF[m];
171  fAlpha[k] = p.fAlpha[m];
172  fISec[k] = p.fISec[m];
173  }
__m128 m
Definition: P4_F32vec4.h:26
unsigned int i
Definition: P4_F32vec4.h:21
float f
Definition: P4_F32vec4.h:20
const float_v & Cov(int i) const
const float_v & Par(int i) const

◆ SetX() [1/2]

void PndCATrackParamVector::SetX ( const float_v &  v)
inline

Definition at line 180 of file PndCATrackParamVector.h.

References fX, and v.

Referenced by Rotate().

180 { fX = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetX() [2/2]

void PndCATrackParamVector::SetX ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 183 of file PndCATrackParamVector.h.

References fX, and v.

183 { fX(m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetY() [1/2]

void PndCATrackParamVector::SetY ( const float_v &  v)
inline

Definition at line 181 of file PndCATrackParamVector.h.

References fP, and v.

Referenced by Rotate().

181 { fP[0] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetY() [2/2]

void PndCATrackParamVector::SetY ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 184 of file PndCATrackParamVector.h.

References fP, and m.

184 { fP[0](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SetZ() [1/2]

void PndCATrackParamVector::SetZ ( const float_v &  v)
inline

Definition at line 182 of file PndCATrackParamVector.h.

References fP, and v.

182 { fP[1] = v; }
__m128 v
Definition: P4_F32vec4.h:3

◆ SetZ() [2/2]

void PndCATrackParamVector::SetZ ( const float_v &  v,
const float_m &  m 
)
inline

Definition at line 185 of file PndCATrackParamVector.h.

References fP, and m.

185 { fP[1](m) = v; }
__m128 m
Definition: P4_F32vec4.h:26
__m128 v
Definition: P4_F32vec4.h:3

◆ SignCosPhi()

float_v PndCATrackParamVector::SignCosPhi ( ) const
inline

The sign of cos phi is always positive in the slice tracker. Only after coordinate transformation can the sign change to negative.

Definition at line 107 of file PndCATrackParamVector.h.

References fSignCosPhi.

Referenced by PndCATrackLinearisationVector::PndCATrackLinearisationVector(), SetTrackParam(), Tx1(), and Tx2().

107 { return fSignCosPhi; }

◆ SinPhi()

float_v PndCATrackParamVector::SinPhi ( ) const
inline

◆ Transport() [1/3]

float_m PndCATrackParamVector::Transport ( const int_v &  ista,
const PndCAParam param,
const float_m &  mask = float_m(true) 
)

Referenced by SetErr2QPt().

◆ Transport() [2/3]

float_m PndCATrackParamVector::Transport ( const PndCAHitV hit,
const PndCAParam p,
const float_m &  mask = float_m(true) 
)

◆ Transport() [3/3]

float_m PndCATrackParamVector::Transport ( const PndCAHit hit,
const PndCAParam p,
const float_m &  mask = float_m(true) 
)

◆ Transport0() [1/3]

float_m PndCATrackParamVector::Transport0 ( const int_v &  ista,
const PndCAParam param,
const float_m &  mask = float_m(true) 
)
inline

Definition at line 550 of file PndCATrackParamVector.h.

References PndCAParam::cBz(), PndCAParam::GetR(), and Transport0ToX().

Referenced by SetErr2QPt().

551 {
552  float_m active = mask;
553  // PndCATrackLinearisationVector tE( *this );
554  // active &= TransportToX( param.GetR( ista, active ), tE, param.cBz(), 0.999f, nullptr, active );
555  active &= Transport0ToX(param.GetR(ista, active), param.cBz(), active);
556  return active;
557 }
float_m Transport0ToX(const float_v &x, const float_v &Bz, const float_m &mask)
float GetR(short iSt) const
Definition: PndCAParam.h:66
float cBz() const
Definition: PndCAParam.h:48

◆ Transport0() [2/3]

float_m PndCATrackParamVector::Transport0 ( const PndCAHitV hit,
const PndCAParam param,
const float_m &  mask = float_m(true) 
)

◆ Transport0() [3/3]

float_m PndCATrackParamVector::Transport0 ( const PndCAHit hit,
const PndCAParam p,
const float_m &  mask = float_m(true) 
)
inline

Definition at line 559 of file PndCATrackParamVector.h.

References CAMath::Abs(), PndCAHit::Angle(), PndCAParam::cBz(), f, fAlpha, fX, Rotate(), Transport0ToX(), and PndCAHit::X0().

560 {
561  if (((CAMath::Abs(-fAlpha + hit.Angle()) < 1e-6f && CAMath::Abs(-fX + hit.X0()) < 2e-4f) || !mask).isFull())
562  return mask;
563  float_m active = mask;
564  // PndCATrackLinearisationVector tR( *this );
565  active &= Rotate(-fAlpha + hit.Angle(), .999f, active);
566  // active &= Rotate( -fAlpha + hit.Angle(), tR, .999f, active );
567  // active &= TransportToX( hit.X0(), tR, param.cBz(), 0.999f, nullptr, active );
568  active &= Transport0ToX(hit.X0(), param.cBz(), active);
569  return active;
570 }
float_m Rotate(const float_v &alpha, PndCATrackLinearisationVector &t0, const float maxSinPhi=.999f, const float_m &mask=float_m(true))
float_m Transport0ToX(const float_v &x, const float_v &Bz, const float_m &mask)
float Angle() const
Definition: PndCAHits.h:52
static T Abs(const T &x)
Definition: PndCAMath.h:56
float f
Definition: P4_F32vec4.h:20
float X0() const
Definition: PndCAHits.h:35

◆ Transport0ToX()

float_m PndCATrackParamVector::Transport0ToX ( const float_v &  x,
const float_v &  Bz,
const float_m &  mask 
)

Referenced by SetErr2QPt(), and Transport0().

◆ TransportJ0ToX0()

float_m PndCATrackParamVector::TransportJ0ToX0 ( const float_v &  x0,
const float_v &  cBz,
float_v &  extrDy,
float_v &  extrDz,
float_v  J[],
const float_m &  active = float_m(true) 
)
inline

Definition at line 521 of file PndCATrackParamVector.h.

References CAMath::Abs(), DzDs(), CAMath::RSqrt(), SinPhi(), and X().

Referenced by SetErr2QPt().

522 {
523  const float_v &ey = SinPhi();
524  const float_v &dx = x - X();
525  const float_v &exi = CAMath::RSqrt(float_v(Vc::One) - ey * ey); // RSqrt
526 
527  const float_v &dxBz = dx * cBz;
528  const float_v &dS = dx * exi;
529  const float_v &h2 = dS * exi * exi;
530  const float_v &h4 = .5f * h2 * dxBz;
531 
532  float_m mask = active && CAMath::Abs(exi) <= 1.e4f;
533 
534  extrDy(mask) = dS * ey;
535  extrDz(mask) = dS * DzDs();
536  J[0](mask) = dS;
537  J[1](mask) = 0;
538  J[2](mask) = h4;
539  J[3](mask) = dS;
540  J[4](mask) = dS;
541  J[5](mask) = 0;
542  return mask;
543 }
static T Abs(const T &x)
Definition: PndCAMath.h:56
static T RSqrt(const T &x)
Definition: PndCAMath.h:50

◆ TransportToX() [1/3]

float_m PndCATrackParamVector::TransportToX ( const float_v &  x,
const float_v &  Bz,
const float  maxSinPhi = .999f,
const float_m &  mask = float_m(true) 
)

Referenced by SetErr2QPt().

◆ TransportToX() [2/3]

float_m PndCATrackParamVector::TransportToX ( const float_v &  x,
PndCATrackLinearisationVector t0,
const float_v &  Bz,
const float  maxSinPhi = .999f,
float_v *  DL = 0,
const float_m &  mask = float_m(true) 
)

◆ TransportToX() [3/3]

float_m PndCATrackParamVector::TransportToX ( const float_v &  x,
const float_v &  sinPhi0,
const float_v &  Bz,
const float_v  maxSinPhi = .999f,
const float_m &  mask = float_m(true) 
)
inline

mvz start 23.01.2010

mvz end 23.01.2010

Definition at line 295 of file PndCATrackParamVector.h.

References CAMath::Abs(), DzDs(), f, fC, fP, fX, QPt(), CAMath::RSqrt(), SinPhi(), and X().

296 {
297  //* Transport the track parameters to X=x, using linearization at phi0 with 0 curvature,
298  //* and the field value Bz
299  //* maxSinPhi is the max. allowed value for |t0.SinPhi()|
300  //* linearisation of trajectory t0 is also transported to X=x,
301  //* returns 1 if OK
302  //*
303 
304  // debugKF() << "Start TransportToX(" << x << ", " << _mask << ")\n" << *this << std::endl;
305 
306  const float_v &ey = sinPhi0;
307  const float_v &dx = x - X();
308  const float_v &exi = float_v(Vc::One) * CAMath::RSqrt(float_v(Vc::One) - ey * ey); // RSqrt
309 
310  const float_v &dxBz = dx * Bz;
311  const float_v &dS = dx * exi;
312  const float_v &h2 = dS * exi * exi;
313  const float_v &h4 = .5f * h2 * dxBz;
315  // const float_v &sinPhi = SinPhi() * (float_v( Vc::One ) - 0.5f * dxBz * QPt() *dxBz * QPt()/ ( float_v( Vc::One ) - SinPhi()*SinPhi() )) + dxBz * QPt();
316  const float_v &sinPhi = SinPhi() + dxBz * QPt();
318 
319  float_m mask = _mask && CAMath::Abs(exi) <= 1.e4f;
320  mask &= ((CAMath::Abs(sinPhi) <= maxSinPhi) || (maxSinPhi <= 0.f));
321 
322  fX(mask) += dx;
323  fP[0](mask) += dS * ey + h2 * (SinPhi() - ey) + h4 * QPt();
324  fP[1](mask) += dS * DzDs();
325  fP[2](mask) = sinPhi;
326 
327  // const float_v c00 = fC[0];
328  // const float_v c11 = fC[2];
329  const float_v c20 = fC[3];
330  // const float_v c21 = fC[4];
331  const float_v c22 = fC[5];
332  // const float_v c30 = fC[6];
333  const float_v c31 = fC[7];
334  // const float_v c32 = fC[8];
335  const float_v c33 = fC[9];
336  const float_v c40 = fC[10];
337  // const float_v c41 = fC[11];
338  const float_v c42 = fC[12];
339  // const float_v c43 = fC[13];
340  const float_v c44 = fC[14];
341 
342  const float_v two(2.f);
343 
344  fC[0](mask) += h2 * h2 * c22 + h4 * h4 * c44 + two * (h2 * c20 + h4 * (c40 + h2 * c42));
345 
346  // fC[1] ( mask ) += h2 * c21 + h4 * c41 + dS * ( c30 + h2 * c32 + h4 * c43 );
347  fC[2](mask) += dS * (two * c31 + dS * c33);
348 
349  fC[3](mask) += h2 * c22 + h4 * c42 + dxBz * (c40 + h2 * c42 + h4 * c44);
350  // fC[4] ( mask ) += dS * c32 + dxBz * ( c41 + dS * c43 );
351  const float_v &dxBz_c44 = dxBz * c44;
352  fC[12](mask) += dxBz_c44;
353  fC[5](mask) += dxBz * (two * c42 + dxBz_c44);
354 
355  // fC[6] ( mask ) += h2 * c32 + h4 * c43;
356  fC[7](mask) += dS * c33;
357  // fC[8] ( mask ) += dxBz * c43;
358  // fC[9] ( mask ) = c33;
359 
360  fC[10](mask) += h2 * c42 + h4 * c44;
361  // fC[11]( mask ) += dS * c43;
362  // fC[13]( mask ) = c43;
363  // fC[14]( mask ) = c44;
364 
365  // debugKF() << mask << "\n" << *this << std::endl;
366  return mask;
367 }
static T Abs(const T &x)
Definition: PndCAMath.h:56
static T RSqrt(const T &x)
Definition: PndCAMath.h:50
float f
Definition: P4_F32vec4.h:20

◆ TransportToXWithMaterial() [1/3]

float_m PndCATrackParamVector::TransportToXWithMaterial ( const float_v &  x,
const float_v &  XOverX0,
const float_v &  XThimesRho,
const float_v &  Bz,
const float  maxSinPhi = .999f 
)

Referenced by SetErr2QPt().

◆ TransportToXWithMaterial() [2/3]

float_m PndCATrackParamVector::TransportToXWithMaterial ( const float_v &  x,
PndCATrackLinearisationVector t0,
PndCATrackFitParam par,
const float_v &  XOverX0,
const float_v &  XThimesRho,
const float_v &  Bz,
const float  maxSinPhi = .999f,
const float_m &  mask = float_m(true) 
)

◆ TransportToXWithMaterial() [3/3]

float_m PndCATrackParamVector::TransportToXWithMaterial ( const float_v &  x,
PndCATrackFitParam par,
const float_v &  XOverX0,
const float_v &  XThimesRho,
const float_v &  Bz,
const float  maxSinPhi = .999f 
)

◆ Tx1()

float_v PndCATrackParamVector::Tx1 ( ) const
inline

Definition at line 99 of file PndCATrackParamVector.h.

References SignCosPhi(), SinPhi(), and sqrt().

99 { return SinPhi() / (SignCosPhi() * sqrt(1 - SinPhi() * SinPhi())); } // CHECKME
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:28

◆ Tx2()

float_v PndCATrackParamVector::Tx2 ( ) const
inline

Definition at line 100 of file PndCATrackParamVector.h.

References DzDs(), SignCosPhi(), SinPhi(), and sqrt().

100 { return DzDs() / (SignCosPhi() * sqrt(1 - SinPhi() * SinPhi())); } // dx2/dx0 = dz/dx
friend F32vec4 sqrt(const F32vec4 &a)
Definition: P4_F32vec4.h:28

◆ X()

float_v PndCATrackParamVector::X ( ) const
inline

Definition at line 86 of file PndCATrackParamVector.h.

References fX.

Referenced by Rotate(), RotateXY(), SetTrackParam(), TransportJ0ToX0(), TransportToX(), and X0().

86 { return fX; }

◆ X0()

float_v PndCATrackParamVector::X0 ( ) const
inline

Definition at line 96 of file PndCATrackParamVector.h.

References X().

96 { return X(); }

◆ X1()

float_v PndCATrackParamVector::X1 ( ) const
inline

Definition at line 97 of file PndCATrackParamVector.h.

References Y().

97 { return Y(); }

◆ X2()

float_v PndCATrackParamVector::X2 ( ) const
inline

Definition at line 98 of file PndCATrackParamVector.h.

References Z().

98 { return Z(); }

◆ Y()

float_v PndCATrackParamVector::Y ( ) const
inline

Definition at line 87 of file PndCATrackParamVector.h.

References fP.

Referenced by FilterVtx(), Rotate(), RotateXY(), and X1().

87 { return fP[0]; }

◆ Z()

float_v PndCATrackParamVector::Z ( ) const
inline

Definition at line 88 of file PndCATrackParamVector.h.

References fP.

Referenced by FilterVtx(), and X2().

88 { return fP[1]; }

Friends And Related Function Documentation

◆ PndCATrackParam

friend class PndCATrackParam
friend

Definition at line 141 of file PndCATrackParamVector.h.

Member Data Documentation

◆ fAlpha

float_v PndCATrackParamVector::fAlpha

Definition at line 289 of file PndCATrackParamVector.h.

Referenced by Angle(), Rotate(), SetAngle(), SetTrackParam(), and Transport0().

◆ fC

◆ fChi2

float_v PndCATrackParamVector::fChi2

Definition at line 286 of file PndCATrackParamVector.h.

Referenced by Chi2(), FilterVtx(), GetChi2(), Reset(), SetChi2(), and SetTrackParam().

◆ fISec

int_v PndCATrackParamVector::fISec

Definition at line 290 of file PndCATrackParamVector.h.

Referenced by ISec(), SetISec(), and SetTrackParam().

◆ fNDF

int_v PndCATrackParamVector::fNDF

Definition at line 287 of file PndCATrackParamVector.h.

Referenced by GetNDF(), NDF(), Reset(), SetNDF(), and SetTrackParam().

◆ fP

◆ fSignCosPhi

float_v PndCATrackParamVector::fSignCosPhi

◆ fX

float_v PndCATrackParamVector::fX

Definition at line 282 of file PndCATrackParamVector.h.

Referenced by GetX(), Reset(), SetTrackParam(), SetX(), Transport0(), TransportToX(), and X().


The documentation for this class was generated from the following file: