75 double tx = trackParam.
GetTx();
76 double ty = trackParam.
GetTy();
77 double qp = trackParam.
GetQp();
87 double t2i = 1. / (1. + tx * tx + ty * ty);
88 double t1i =
sqrt(t2i);
89 double t3i = t1i * t2i;
94 if ((q != 0) && fabs(qp / q) >= 1e-4) {
103 par[0] = trackParam.
GetX();
104 par[1] = trackParam.
GetY();
105 par[2] = trackParam.
GetZ();
112 double DpzDtx = -px * t2i;
113 double DpzDty = -py * t2i;
114 double DpzDqp = DpDqp * t1i;
116 double DpxDtx = (1. + ty * ty) * t3i * p;
117 double DpxDty = -tx * ty * t3i * p;
118 double DpxDqp = tx * DpzDqp;
120 double DpyDtx = DpxDty;
121 double DpyDty = (1. + tx * tx) * t3i * p;
122 double DpyDqp = ty * DpzDqp;
124 double J[6][5] = {{1., 0., 0., 0., 0.},
125 {0., 1., 0., 0., 0.},
126 {0., 0., 0., 0., 0.},
127 {0., 0., DpxDtx, DpxDty, DpxDqp},
128 {0., 0., DpyDtx, DpyDty, DpyDqp},
129 {0., 0., DpzDtx, DpzDty, DpzDqp}};
132 for (
int i = 0; i < 5; i++) {
133 for (
int j = 0; j < 6; j++) {
135 for (
int k = 0; k < 5; k++) {
142 for (
int i = 0, l = 0; i < 6; i++) {
143 for (
int j = 0; j <= i; j++, l++) {
145 for (
int k = 0; k < 5; k++) {
146 cov[l] += J[i][k] * CJt[k][j];
151 KFParticle kfParticle;
152 kfParticle.Create(par, cov, q, mass);
164 double z0 = trackParam.
GetZ();
165 double z1 = z0 - 10.;
166 double z2 = z0 - 20.;
180 fieldInterpolated.Set(B0, B1, B2);
182 for (
int i = 0, j = 0; j < 3; j++) {
183 for (
int k = 0; k < 3; k++, i++) {
184 kfParticle.SetFieldCoeff(fieldInterpolated.GetCoefficients()[j][k], i);
188 kfParticle.SetFieldCoeff(fieldInterpolated.GetZfirst(), 9);