CbmRoot
Loading...
Searching...
No Matches
CbmLitKalmanFilter.cxx
Go to the documentation of this file.
1/* Copyright (C) 2007-2017 GSI/JINR-LIT, Darmstadt/Dubna
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Andrey Lebedev [committer], Timur Ablyazimov */
4
11
12#include "TMath.h"
13#include "TMatrixD.h"
14#include "data/CbmLitPixelHit.h"
15#include "data/CbmLitStripHit.h"
18
19#include <cmath>
20#include <iostream>
21
22litfloat CbmLitTrackParam::fSpeedOfLight = 1.e-7 * TMath::C();
23
25
27
29 litfloat& chiSq)
30{
31 *parOut = *parIn;
32 return Update(parOut, hit, chiSq);
33}
34
36{
37 LitStatus result = kLITSUCCESS;
38 if (hit->GetType() == kLITSTRIPHIT) {
39 result = Update(par, static_cast<const CbmLitStripHit*>(hit), chiSq);
40 }
41 else if (hit->GetType() == kLITPIXELHIT) {
42 result = Update(par, static_cast<const CbmLitPixelHit*>(hit), chiSq);
43 }
44 return result;
45}
46
48{
49 std::vector<litfloat> cIn = par->GetCovMatrix();
50
51 static const litfloat ONE = 1., TWO = 2.;
52
53 litfloat dxx = hit->GetDx() * hit->GetDx();
54 litfloat dxy = hit->GetDxy();
55 litfloat dyy = hit->GetDy() * hit->GetDy();
56 litfloat dtt = hit->GetDt() * hit->GetDt();
57
58 // calculate residuals
59 litfloat dx = hit->GetX() - par->GetX();
60 litfloat dy = hit->GetY() - par->GetY();
61 litfloat dt = hit->GetT() - par->GetTime();
62
63 // Calculate and inverse residual covariance matrix
64 //litfloat t = ONE / (dxx * dyy + dxx * cIn[5] + dyy * cIn[0] + cIn[0] * cIn[5] -
65 //dxy * dxy - TWO * dxy * cIn[1] - cIn[1] * cIn[1]);
66 litfloat t = ONE
67 / ((cIn[0] + dxx) * ((cIn[6] + dyy) * (cIn[20] + dtt) - cIn[10] * cIn[10])
68 - (cIn[1] + dxy) * ((cIn[1] + dxy) * (cIn[20] + dtt) - cIn[5] * cIn[10])
69 + cIn[5] * ((cIn[1] + dxy) * cIn[10] - (cIn[6] + dyy) * cIn[5]));
70 //litfloat R00 = (dyy + cIn[5]) * t;
71 //litfloat R01 = -(dxy + cIn[1]) * t;
72 //litfloat R11 = (dxx + cIn[0]) * t;
73 litfloat R00 = ((cIn[6] + dyy) * (cIn[20] + dtt) - cIn[10] * cIn[10]) * t;
74 litfloat R01 = (cIn[5] * cIn[10] - (cIn[1] + dxy) * (cIn[20] + dtt)) * t;
75 litfloat R02 = ((cIn[1] + dxy) * cIn[10] - (cIn[6] + dyy) * cIn[5]) * t;
76 litfloat R11 = ((cIn[0] + dxx) * (cIn[20] + dtt) - cIn[5] * cIn[5]) * t;
77 litfloat R12 = ((cIn[1] + dxy) * cIn[5] - (cIn[0] + dxx) * cIn[10]) * t;
78 litfloat R22 = ((cIn[0] + dxx) * (cIn[6] + dyy) - (cIn[1] + dxy) * (cIn[1] + dxy)) * t;
79
80 /*TMatrixD ResM(3, 3);
81 ResM(0, 0) = dxx + cIn[0];
82 ResM(0, 1) = dxy + cIn[1];
83 ResM(0, 2) = cIn[5];
84 ResM(1, 0) = dxy + cIn[1];
85 ResM(1, 1) = dyy + cIn[6];
86 ResM(1, 2) = cIn[10];
87 ResM(2, 0) = cIn[5];
88 ResM(2, 1) = cIn[10];
89 ResM(2, 2) = dtt + cIn[20];
90 ResM.Invert();
91
92 litfloat R00 = ResM(0, 0);
93 litfloat R01 = ResM(0, 1);
94 litfloat R02 = ResM(0, 2);
95 litfloat R11 = ResM(1, 1);
96 litfloat R12 = ResM(1, 2);
97 litfloat R22 = ResM(2, 2);*/
98
99 // Calculate Kalman gain matrix
100 litfloat K00 = cIn[0] * R00 + cIn[1] * R01 + cIn[5] * R02;
101 litfloat K01 = cIn[0] * R01 + cIn[1] * R11 + cIn[5] * R12;
102 litfloat K02 = cIn[0] * R02 + cIn[1] * R12 + cIn[5] * R22;
103 litfloat K10 = cIn[1] * R00 + cIn[6] * R01 + cIn[10] * R02;
104 litfloat K11 = cIn[1] * R01 + cIn[6] * R11 + cIn[10] * R12;
105 litfloat K12 = cIn[1] * R02 + cIn[6] * R12 + cIn[10] * R22;
106 litfloat K20 = cIn[2] * R00 + cIn[7] * R01 + cIn[14] * R02;
107 litfloat K21 = cIn[2] * R01 + cIn[7] * R11 + cIn[14] * R12;
108 litfloat K22 = cIn[2] * R02 + cIn[7] * R12 + cIn[14] * R22;
109 litfloat K30 = cIn[3] * R00 + cIn[8] * R01 + cIn[17] * R02;
110 litfloat K31 = cIn[3] * R01 + cIn[8] * R11 + cIn[17] * R12;
111 litfloat K32 = cIn[3] * R02 + cIn[8] * R12 + cIn[17] * R22;
112 litfloat K40 = cIn[4] * R00 + cIn[9] * R01 + cIn[19] * R02;
113 litfloat K41 = cIn[4] * R01 + cIn[9] * R11 + cIn[19] * R12;
114 litfloat K42 = cIn[4] * R02 + cIn[9] * R12 + cIn[19] * R22;
115 litfloat K50 = cIn[5] * R00 + cIn[10] * R01 + cIn[20] * R02;
116 litfloat K51 = cIn[5] * R01 + cIn[10] * R11 + cIn[20] * R12;
117 litfloat K52 = cIn[5] * R02 + cIn[10] * R12 + cIn[20] * R22;
118
119 // Calculate filtered state vector
120 litfloat xOut[6] = {par->GetX(), par->GetY(), par->GetTx(), par->GetTy(), par->GetQp(), par->GetTime()};
121 xOut[0] += K00 * dx + K01 * dy + K02 * dt;
122 xOut[1] += K10 * dx + K11 * dy + K12 * dt;
123 xOut[2] += K20 * dx + K21 * dy + K22 * dt;
124 xOut[3] += K30 * dx + K31 * dy + K32 * dt;
125 xOut[4] += K40 * dx + K41 * dy + K42 * dt;
126 xOut[5] += K50 * dx + K51 * dy + K52 * dt;
127
128 // Calculate filtered covariance matrix
129 std::vector<litfloat> cOut = cIn;
130
131 cOut[0] -= K00 * cIn[0] + K01 * cIn[1] + K02 * cIn[5];
132 cOut[1] -= K00 * cIn[1] + K01 * cIn[6] + K02 * cIn[10];
133 cOut[2] -= K00 * cIn[2] + K01 * cIn[7] + K02 * cIn[14];
134 cOut[3] -= K00 * cIn[3] + K01 * cIn[8] + K02 * cIn[17];
135 cOut[4] -= K00 * cIn[4] + K01 * cIn[9] + K02 * cIn[19];
136 cOut[5] -= K00 * cIn[5] + K01 * cIn[10] + K02 * cIn[20];
137
138 cOut[6] -= K10 * cIn[1] + K11 * cIn[6] + K12 * cIn[10];
139 cOut[7] -= K10 * cIn[2] + K11 * cIn[7] + K12 * cIn[14];
140 cOut[8] -= K10 * cIn[3] + K11 * cIn[8] + K12 * cIn[17];
141 cOut[9] -= K10 * cIn[4] + K11 * cIn[9] + K12 * cIn[19];
142 cOut[10] -= K10 * cIn[5] + K11 * cIn[10] + K12 * cIn[20];
143
144 cOut[11] -= K20 * cIn[2] + K21 * cIn[7] + K22 * cIn[14];
145 cOut[12] -= K20 * cIn[3] + K21 * cIn[8] + K22 * cIn[17];
146 cOut[13] -= K20 * cIn[4] + K21 * cIn[9] + K22 * cIn[19];
147 cOut[14] -= K20 * cIn[5] + K21 * cIn[10] + K22 * cIn[20];
148
149 cOut[15] -= K30 * cIn[3] + K31 * cIn[8] + K32 * cIn[17];
150 cOut[16] -= K30 * cIn[4] + K31 * cIn[9] + K32 * cIn[19];
151 cOut[17] -= K30 * cIn[5] + K31 * cIn[10] + K32 * cIn[20];
152
153 cOut[18] -= K40 * cIn[4] + K41 * cIn[9] + K42 * cIn[19];
154 cOut[19] -= K40 * cIn[5] + K41 * cIn[10] + K42 * cIn[20];
155
156 cOut[20] -= K50 * cIn[5] + K51 * cIn[10] + K52 * cIn[20];
157
158 // Copy filtered state to output
159 par->SetX(xOut[0]);
160 par->SetY(xOut[1]);
161 par->SetTx(xOut[2]);
162 par->SetTy(xOut[3]);
163 par->SetQp(xOut[4]);
164 par->SetTime(xOut[5]);
165 par->SetCovMatrix(cOut);
166
167 // Calculate chi-square
168 litfloat xmx = hit->GetX() - par->GetX();
169 litfloat ymy = hit->GetY() - par->GetY();
170 litfloat tmt = hit->GetT() - par->GetTime();
171 litfloat C0 = cOut[0];
172 litfloat C1 = cOut[1];
173 litfloat C5 = cOut[6];
174
175 /*litfloat norm = dxx * dyy - dxx * C5 - dyy * C0 + C0 * C5
176 - dxy * dxy + 2 * dxy * C1 - C1 * C1;
177
178 chiSq = ((xmx * (dyy - C5) - ymy * (dxy - C1)) * xmx
179 +(-xmx * (dxy - C1) + ymy * (dxx - C0)) * ymy) / norm +
180 (hit->GetT() - par->GetTime()) * (hit->GetT() - par->GetTime()) / (hit->GetDt() * hit->GetDt() + cOut[20]);*/
181 litfloat norm = (dxx - cOut[0]) * ((dyy - cOut[6]) * (dtt - cOut[20]) - cOut[10] * cOut[10])
182 + (dxy - cOut[1]) * (cOut[5] * cOut[10] - (dxy - cOut[1]) * (dtt - cOut[20]))
183 + cOut[5] * ((dxy - cOut[1]) * cOut[10] - (dyy - cOut[6]) * cOut[5]);
184
185 if (norm == 0.) {
186 norm = 1e-10;
187 }
188
189 // Mij is the (symmetric) inverse of the residual matrix
190 litfloat M00 = ((dyy - cOut[6]) * (dtt - cOut[20]) - cOut[10] * cOut[10]) / norm;
191 litfloat M01 = ((dxy - cOut[1]) * (dtt - cOut[20]) - cOut[5] * cOut[10]) / norm;
192 litfloat M02 = ((dxy - cOut[1]) * cOut[10] - (dyy - cOut[6]) * cOut[5]) / norm;
193 litfloat M11 = ((dxx - cOut[0]) * (dtt - cOut[20]) - cOut[5] * cOut[5]) / norm;
194 litfloat M12 = ((dxx - cOut[0]) * cOut[10] - (dxy - cOut[1]) * cOut[5]) / norm;
195 litfloat M22 = ((dxx - cOut[0]) * (dyy - cOut[6]) - (dxy - cOut[1]) * (dxy - cOut[1])) / norm;
196 /*TMatrixD Chi2M(3, 3);
197 Chi2M(0, 0) = dxx - cOut[0];
198 Chi2M(0, 1) = dxy - cOut[1];
199 Chi2M(0, 2) = -cOut[5];
200 Chi2M(1, 0) = dxy - cOut[1];
201 Chi2M(1, 1) = dyy - cOut[6];
202 Chi2M(1, 2) = -cOut[10];
203 Chi2M(2, 0) = -cOut[5];
204 Chi2M(2, 1) = -cOut[10];
205 Chi2M(2, 2) = dtt - cOut[20];
206 Chi2M.Invert();
207
208 litfloat M00 = Chi2M(0, 0);
209 litfloat M01 = Chi2M(0, 1);
210 litfloat M02 = Chi2M(0, 2);
211 litfloat M11 = Chi2M(1, 1);
212 litfloat M12 = Chi2M(1, 2);
213 litfloat M22 = Chi2M(2, 2);*/
214
215 chiSq = xmx * (xmx * M00 + ymy * M01 + tmt * M02) + ymy * (xmx * M01 + ymy * M11 + tmt * M12)
216 + tmt * (xmx * M02 + ymy * M12 + tmt * M22);
217
218 return kLITSUCCESS;
219}
220
222{
223 litfloat xIn[5] = {par->GetX(), par->GetY(), par->GetTx(), par->GetTy(), par->GetQp()};
224
225 std::vector<litfloat> cIn = par->GetCovMatrix();
226 std::vector<litfloat> cInInv = par->GetCovMatrix();
227
228 litfloat dxx = hit->GetDx() * hit->GetDx();
229 litfloat dxy = hit->GetDxy();
230 litfloat dyy = hit->GetDy() * hit->GetDy();
231
232 // Inverse predicted cov matrix
233 InvSym15(cInInv);
234 // Calculate C1
235 std::vector<litfloat> C1 = cInInv;
236 litfloat det = dxx * dyy - dxy * dxy;
237 C1[0] += dyy / det;
238 C1[1] += -dxy / det;
239 C1[5] += dxx / det;
240 // Inverse C1 -> output updated covariance matrix
241 InvSym15(C1);
242
243 std::vector<litfloat> t(5);
244 t[0] = cInInv[0] * par->GetX() + cInInv[1] * par->GetY() + cInInv[2] * par->GetTx() + cInInv[3] * par->GetTy()
245 + cInInv[4] * par->GetQp() + (dyy * hit->GetX() - dxy * hit->GetY()) / det;
246 t[1] = cInInv[1] * par->GetX() + cInInv[5] * par->GetY() + cInInv[6] * par->GetTx() + cInInv[7] * par->GetTy()
247 + cInInv[8] * par->GetQp() + (-dxy * hit->GetX() + dxx * hit->GetY()) / det;
248 t[2] = cInInv[2] * par->GetX() + cInInv[6] * par->GetY() + cInInv[9] * par->GetTx() + cInInv[10] * par->GetTy()
249 + cInInv[11] * par->GetQp();
250 t[3] = cInInv[3] * par->GetX() + cInInv[7] * par->GetY() + cInInv[10] * par->GetTx() + cInInv[12] * par->GetTy()
251 + cInInv[13] * par->GetQp();
252 t[4] = cInInv[4] * par->GetX() + cInInv[8] * par->GetY() + cInInv[11] * par->GetTx() + cInInv[13] * par->GetTy()
253 + cInInv[14] * par->GetQp();
254
255 std::vector<litfloat> xOut(5);
256 Mult15On5(C1, t, xOut);
257
258 // Copy filtered state to output
259 par->SetX(xOut[0]);
260 par->SetY(xOut[1]);
261 par->SetTx(xOut[2]);
262 par->SetTy(xOut[3]);
263 par->SetQp(xOut[4]);
264 par->SetCovMatrix(C1);
265
266 // Calculate chi square
267 litfloat dx0 = xOut[0] - xIn[0];
268 litfloat dx1 = xOut[1] - xIn[1];
269 litfloat dx2 = xOut[2] - xIn[2];
270 litfloat dx3 = xOut[3] - xIn[3];
271 litfloat dx4 = xOut[4] - xIn[4];
272 litfloat xmx = hit->GetX() - par->GetX();
273 litfloat ymy = hit->GetY() - par->GetY();
274 chiSq = ((xmx * dyy - ymy * dxy) * xmx + (-xmx * dxy + ymy * dxx) * ymy) / det
275 + (dx0 * cInInv[0] + dx1 * cInInv[1] + dx2 * cInInv[2] + dx3 * cInInv[3] + dx4 * cInInv[4]) * dx0
276 + (dx0 * cInInv[1] + dx1 * cInInv[5] + dx2 * cInInv[6] + dx3 * cInInv[7] + dx4 * cInInv[8]) * dx1
277 + (dx0 * cInInv[2] + dx1 * cInInv[6] + dx2 * cInInv[9] + dx3 * cInInv[10] + dx4 * cInInv[11]) * dx2
278 + (dx0 * cInInv[3] + dx1 * cInInv[7] + dx2 * cInInv[10] + dx3 * cInInv[12] + dx4 * cInInv[13]) * dx3
279 + (dx0 * cInInv[4] + dx1 * cInInv[8] + dx2 * cInInv[11] + dx3 * cInInv[13] + dx4 * cInInv[14]) * dx4;
280
281 return kLITSUCCESS;
282}
283
285{
286 litfloat xIn[5] = {par->GetX(), par->GetY(), par->GetTx(), par->GetTy(), par->GetQp()};
287 std::vector<litfloat> cIn = par->GetCovMatrix();
288
289 litfloat u = hit->GetU();
290 litfloat duu = hit->GetDu() * hit->GetDu();
291 litfloat phiCos = hit->GetCosPhi();
292 litfloat phiSin = hit->GetSinPhi();
293 litfloat phiCosSq = phiCos * phiCos;
294 litfloat phiSinSq = phiSin * phiSin;
295 litfloat phi2SinCos = 2 * phiCos * phiSin;
296
297 // Inverted covariance matrix of predicted residual
298 litfloat R = 1. / (duu + cIn[0] * phiCosSq + phi2SinCos * cIn[1] + cIn[5] * phiSinSq);
299
300 // Calculate Kalman gain matrix
301 litfloat K0 = cIn[0] * phiCos + cIn[1] * phiSin;
302 litfloat K1 = cIn[1] * phiCos + cIn[5] * phiSin;
303 litfloat K2 = cIn[2] * phiCos + cIn[6] * phiSin;
304 litfloat K3 = cIn[3] * phiCos + cIn[7] * phiSin;
305 litfloat K4 = cIn[4] * phiCos + cIn[8] * phiSin;
306
307 litfloat KR0 = K0 * R;
308 litfloat KR1 = K1 * R;
309 litfloat KR2 = K2 * R;
310 litfloat KR3 = K3 * R;
311 litfloat KR4 = K4 * R;
312
313 // Residual of predictions
314 litfloat r = u - xIn[0] * phiCos - xIn[1] * phiSin;
315
316 // Calculate filtered state vector
317 std::vector<litfloat> xOut(5);
318 xOut[0] = xIn[0] + KR0 * r;
319 xOut[1] = xIn[1] + KR1 * r;
320 xOut[2] = xIn[2] + KR2 * r;
321 xOut[3] = xIn[3] + KR3 * r;
322 xOut[4] = xIn[4] + KR4 * r;
323
324 // Calculate filtered covariance matrix
325 std::vector<litfloat> cOut(15);
326 cOut[0] = cIn[0] - KR0 * K0;
327 cOut[1] = cIn[1] - KR0 * K1;
328 cOut[2] = cIn[2] - KR0 * K2;
329 cOut[3] = cIn[3] - KR0 * K3;
330 cOut[4] = cIn[4] - KR0 * K4;
331
332 cOut[5] = cIn[5] - KR1 * K1;
333 cOut[6] = cIn[6] - KR1 * K2;
334 cOut[7] = cIn[7] - KR1 * K3;
335 cOut[8] = cIn[8] - KR1 * K4;
336
337 cOut[9] = cIn[9] - KR2 * K2;
338 cOut[10] = cIn[10] - KR2 * K3;
339 cOut[11] = cIn[11] - KR2 * K4;
340
341 cOut[12] = cIn[12] - KR3 * K3;
342 cOut[13] = cIn[13] - KR3 * K4;
343
344 cOut[14] = cIn[14] - KR4 * K4;
345
346 // Copy filtered state to output
347 par->SetX(xOut[0]);
348 par->SetY(xOut[1]);
349 par->SetTx(xOut[2]);
350 par->SetTy(xOut[3]);
351 par->SetQp(xOut[4]);
352 par->SetCovMatrix(cOut);
353
354 // Filtered resuduals
355 litfloat ru = u - xOut[0] * phiCos - xOut[1] * phiSin;
356
357 // Calculate chi-square
358 chiSq = (ru * ru) / (duu - phiCosSq * cOut[0] - phi2SinCos * cOut[1] - phiSinSq * cOut[5]);
359
360 return kLITSUCCESS;
361}
362
364{
365 litfloat xIn[5] = {par->GetX(), par->GetY(), par->GetTx(), par->GetTy(), par->GetQp()};
366
367 std::vector<litfloat> cIn = par->GetCovMatrix();
368 std::vector<litfloat> cInInv = par->GetCovMatrix();
369
370 litfloat duu = hit->GetDu() * hit->GetDu();
371 litfloat phiCos = hit->GetCosPhi();
372 litfloat phiSin = hit->GetSinPhi();
373
374 // Inverse predicted cov matrix
375 InvSym15(cInInv);
376 // Calculate C1
377 std::vector<litfloat> C1 = cInInv;
378 C1[0] += phiCos * phiCos / duu;
379 C1[1] += phiCos * phiSin / duu;
380 C1[5] += phiSin * phiSin / duu;
381 // Inverse C1 -> output updated covariance matrix
382 InvSym15(C1);
383
384 std::vector<litfloat> t(5);
385 t[0] = cInInv[0] * par->GetX() + cInInv[1] * par->GetY() + cInInv[2] * par->GetTx() + cInInv[3] * par->GetTy()
386 + cInInv[4] * par->GetQp() + phiCos * hit->GetU() / duu;
387 t[1] = cInInv[1] * par->GetX() + cInInv[5] * par->GetY() + cInInv[6] * par->GetTx() + cInInv[7] * par->GetTy()
388 + cInInv[8] * par->GetQp() + phiSin * hit->GetU() / duu;
389 t[2] = cInInv[2] * par->GetX() + cInInv[6] * par->GetY() + cInInv[9] * par->GetTx() + cInInv[10] * par->GetTy()
390 + cInInv[11] * par->GetQp();
391 t[3] = cInInv[3] * par->GetX() + cInInv[7] * par->GetY() + cInInv[10] * par->GetTx() + cInInv[12] * par->GetTy()
392 + cInInv[13] * par->GetQp();
393 t[4] = cInInv[4] * par->GetX() + cInInv[8] * par->GetY() + cInInv[11] * par->GetTx() + cInInv[13] * par->GetTy()
394 + cInInv[14] * par->GetQp();
395
396 std::vector<litfloat> xOut(5);
397 Mult15On5(C1, t, xOut);
398
399 // Copy filtered state to output
400 par->SetX(xOut[0]);
401 par->SetY(xOut[1]);
402 par->SetTx(xOut[2]);
403 par->SetTy(xOut[3]);
404 par->SetQp(xOut[4]);
405 par->SetCovMatrix(C1);
406
407 // Calculate chi square
408 litfloat zeta = hit->GetU() - phiCos * xOut[0] - phiSin * xOut[1];
409 litfloat dx0 = xOut[0] - xIn[0];
410 litfloat dx1 = xOut[1] - xIn[1];
411 litfloat dx2 = xOut[2] - xIn[2];
412 litfloat dx3 = xOut[3] - xIn[3];
413 litfloat dx4 = xOut[4] - xIn[4];
414 chiSq = zeta * zeta / duu
415 + (dx0 * cInInv[0] + dx1 * cInInv[1] + dx2 * cInInv[2] + dx3 * cInInv[3] + dx4 * cInInv[4]) * dx0
416 + (dx0 * cInInv[1] + dx1 * cInInv[5] + dx2 * cInInv[6] + dx3 * cInInv[7] + dx4 * cInInv[8]) * dx1
417 + (dx0 * cInInv[2] + dx1 * cInInv[6] + dx2 * cInInv[9] + dx3 * cInInv[10] + dx4 * cInInv[11]) * dx2
418 + (dx0 * cInInv[3] + dx1 * cInInv[7] + dx2 * cInInv[10] + dx3 * cInInv[12] + dx4 * cInInv[13]) * dx3
419 + (dx0 * cInInv[4] + dx1 * cInInv[8] + dx2 * cInInv[11] + dx3 * cInInv[13] + dx4 * cInInv[14]) * dx4;
420
421 return kLITSUCCESS;
422}
@ kLITPIXELHIT
Definition CbmLitEnums.h:21
@ kLITSTRIPHIT
Definition CbmLitEnums.h:20
LitStatus
Definition CbmLitEnums.h:29
@ kLITSUCCESS
Definition CbmLitEnums.h:30
double litfloat
Definition CbmLitFloat.h:19
bool Mult15On5(const std::vector< litfloat > &a, const std::vector< litfloat > &b, std::vector< litfloat > &c)
bool InvSym15(std::vector< litfloat > &a)
Base data class for pixel hits.
Base data class for strip hits.
Data class for track parameters.
Base data class for hits.
Definition CbmLitHit.h:29
LitHitType GetType() const
Definition CbmLitHit.h:43
litfloat GetT() const
Definition CbmLitHit.h:46
litfloat GetDt() const
Definition CbmLitHit.h:47
LitStatus UpdateWMF(CbmLitTrackParam *par, const CbmLitPixelHit *hit, litfloat &chiSq)
virtual LitStatus Update(const CbmLitTrackParam *parIn, CbmLitTrackParam *parOut, const CbmLitHit *hit, litfloat &chiSq)
Main function to be implemented for concrete track update algorithm.
Base data class for pixel hits.
litfloat GetDxy() const
litfloat GetDy() const
litfloat GetX() const
litfloat GetY() const
litfloat GetDx() const
Base data class for strip hits.
litfloat GetU() const
litfloat GetSinPhi() const
litfloat GetCosPhi() const
litfloat GetDu() const
Data class for track parameters.
litfloat GetTx() const
void SetX(litfloat x)
void SetQp(litfloat qp)
void SetTx(litfloat tx)
static litfloat fSpeedOfLight
litfloat GetX() const
void SetY(litfloat y)
litfloat GetY() const
void SetTy(litfloat ty)
litfloat GetTy() const
void SetTime(litfloat t)
litfloat GetTime() const
const vector< litfloat > & GetCovMatrix() const
void SetCovMatrix(const vector< litfloat > &C)
litfloat GetQp() const