32 m_pPrevState(nullptr) {
62 for (
int i = 0;
i < 5;
i++) {
65 for (
int i = 0;
i < 5;
i++)
66 for (
int j = 0; j < 5; j++)
m_Gk[
i][j] = pTS->
m_Gk[
i][j];
76 std::cerr <<
"Cannot open file " <<
fileName <<
" for write.\n";
79 fprintf(pFile,
"%f %f %f %f %f\n",
81 for (
int i = 0;
i < 5;
i++) {
82 for (
int j = 0; j < 5; j++) {
83 if (j <
i) fprintf(pFile,
" ");
92 printf(
"STATE x0=%f y0=%f phi=%f theta=%f qOverP=%f pT=%f\n",
94 printf(
"COVARIANCE \n");
95 for (
auto &
i :
m_Gk) {
113 for (
int i = 0;
i < 5;
i++)
m_Rk[
i] += pUpd[
i];
123 for (
int i = 0;
i < 5;
i++) {
124 for (
int j =
i; j < 5; j++) {
145 for (
int i = 0;
i < 5;
i++)
146 for (
int j = 0; j < 5; j++)
155 for (
int i = 0;
i < 5;
i++)
156 for (
int j = 0; j < 5; j++)
161 double lenCorr, sigmaMS,
s2, a2, radLength, lV[3], gV[3],
a;
164 if (pS ==
nullptr)
return;
170 lenCorr = 1.0 / fabs(lV[2]);
172 sigmaMS = 13.6 * fabs(
m_Re[4]) * sqrt(radLength) * (1.0 + 0.038 *
log(radLength));
173 s2 = sigmaMS * sigmaMS;
187 double lenCorr, effLength, lV[3], gV[3];
190 if (pS ==
nullptr)
return;
196 lenCorr = 1.0 / fabs(lV[2]);
200 m_Re[4] +=
dir * (
m_Re[4] * effLength * (1.0 - 0.5 * effLength));
201 m_Ge[4][4] +=
m_Re[4] *
m_Re[4] * effLength * (0.415 - 0.744 * effLength);
204 }
else if (abs(
dir) == 2) {
221 double dR[5], dG[5][5], B[5][5];
226 for (
i = 0;
i < 5;
i++) {
228 for (j = 0; j < 5; j++) dG[
i][j] =
m_Gk[
i][j] -
m_Ge[
i][j];
231 if (dR[2] >
M_PI) dR[2] -= 2 *
M_PI;
232 if (dR[2] < -
M_PI) dR[2] += 2 *
M_PI;
233 for (
i = 0;
i < 5;
i++) {
241 for (
i = 0;
i < 5;
i++)
242 for (j = 0; j < 5; j++) {
244 for (
m = 0;
m < 5;
m++) B[
i][j] +=
m_A[
i][
m] * dG[
m][j];
246 for (
i = 0;
i < 5;
i++)
247 for (j = 0; j < 5; j++) {
248 for (
m = 0;
m < 5;
m++)