CbmRoot
Loading...
Searching...
No Matches
KfTrackParam.h
Go to the documentation of this file.
1/* Copyright (C) 2007-2023 GSI Helmholtzzentrum fuer Schwerionenforschung, Darmstadt
2 SPDX-License-Identifier: GPL-3.0-only
3 Authors: Igor Kulakov [committer], Maksym Zyzak, Sergei Zharko */
4
5
10
11#ifndef CA_CORE_CaTrackParam_h
12#define CA_CORE_CaTrackParam_h 1
13
14#include "KfDefs.h"
15#include "KfSimd.h"
16#include "KfUtils.h"
17
18#include <boost/serialization/access.hpp>
19
20#include <string>
21
22namespace cbm::algo::kf
23{
32 template<typename T>
33 class alignas(VcMemAlign) TrackParamBase {
34
35 public:
36 friend class boost::serialization::access;
37
38 static constexpr int kNtrackParam{7};
39 static constexpr int kNcovParam{(kNtrackParam) * (kNtrackParam + 1) / 2};
40
41 typedef std::array<T, kNcovParam> CovMatrix_t;
42
43 TrackParamBase() = default;
44
45 template<typename T1>
47 {
48 Set(tr);
49 }
50
54 template<typename T1>
55 void Set(const TrackParamBase<T1>& Tb)
56 {
57 CopyBase<T1, true, true>(0, Tb, 0);
58 }
59
62 void Set(const TrackParamBase<fvec>& Tb, const int ib) { CopyBase<fvec, true, false>(0, Tb, ib); }
63
66 template<typename T1>
67 void SetOneEntry(const int ia, const TrackParamBase<T1>& Tb)
68 {
69 CopyBase<T1, false, true>(ia, Tb, 0);
70 }
71
74 void SetOneEntry(const int ia, const TrackParamBase<fvec>& Tb, const int ib)
75 {
76 CopyBase<fvec, false, false>(ia, Tb, ib);
77 }
78
82
84 T Z() const { return fZ; }
85
87 T X() const { return fX; }
88
90 T Y() const { return fY; }
91
93 T Tx() const { return fTx; }
94
96 T Ty() const { return fTy; }
97
99 T Qp() const { return fQp; }
100
102 T Time() const { return fT; }
103
105 T Vi() const { return fVi; }
106
108 T ChiSq() const { return fChiSq; }
109
111 T Ndf() const { return fNdf; }
112
114 T ChiSqTime() const { return fChiSqTime; }
115
117 T NdfTime() const { return fNdfTime; }
118
123 T C(int i, int j) const
124 {
125 int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
126 return fCovMatrix[ind];
127 }
128
133 template<int i, int j>
134 T C() const
135 {
136 constexpr int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
137 return fCovMatrix[ind];
138 }
139
143 T C00() const { return C<0, 0>(); }
144 T C01() const { return C<0, 1>(); }
145 T C02() const { return C<0, 2>(); }
146 T C03() const { return C<0, 3>(); }
147 T C04() const { return C<0, 4>(); }
148 T C05() const { return C<0, 5>(); }
149 T C06() const { return C<0, 6>(); }
150
151 T C10() const { return C<1, 0>(); }
152 T C11() const { return C<1, 1>(); }
153 T C12() const { return C<1, 2>(); }
154 T C13() const { return C<1, 3>(); }
155 T C14() const { return C<1, 4>(); }
156 T C15() const { return C<1, 5>(); }
157 T C16() const { return C<1, 6>(); }
158
159 T C20() const { return C<2, 0>(); }
160 T C21() const { return C<2, 1>(); }
161 T C22() const { return C<2, 2>(); }
162 T C23() const { return C<2, 3>(); }
163 T C24() const { return C<2, 4>(); }
164 T C25() const { return C<2, 5>(); }
165 T C26() const { return C<2, 6>(); }
166
167 T C30() const { return C<3, 0>(); }
168 T C31() const { return C<3, 1>(); }
169 T C32() const { return C<3, 2>(); }
170 T C33() const { return C<3, 3>(); }
171 T C34() const { return C<3, 4>(); }
172 T C35() const { return C<3, 5>(); }
173 T C36() const { return C<3, 6>(); }
174
175 T C40() const { return C<4, 0>(); }
176 T C41() const { return C<4, 1>(); }
177 T C42() const { return C<4, 2>(); }
178 T C43() const { return C<4, 3>(); }
179 T C44() const { return C<4, 4>(); }
180 T C45() const { return C<4, 5>(); }
181 T C46() const { return C<4, 6>(); }
182
183 T C50() const { return C<5, 0>(); }
184 T C51() const { return C<5, 1>(); }
185 T C52() const { return C<5, 2>(); }
186 T C53() const { return C<5, 3>(); }
187 T C54() const { return C<5, 4>(); }
188 T C55() const { return C<5, 5>(); }
189 T C56() const { return C<5, 6>(); }
190
191 T C60() const { return C<6, 0>(); }
192 T C61() const { return C<6, 1>(); }
193 T C62() const { return C<6, 2>(); }
194 T C63() const { return C<6, 3>(); }
195 T C64() const { return C<6, 4>(); }
196 T C65() const { return C<6, 5>(); }
197 T C66() const { return C<6, 6>(); }
198
202
204 T GetZ() const { return fZ; }
205
207 T GetX() const { return fX; }
208
210 T GetXError() const { return sqrt(C00()); }
211
213 T GetY() const { return fY; }
214
216 T GetYError() const { return sqrt(C11()); }
217
219 T GetTx() const { return fTx; }
220
222 T GetTxError() const { return sqrt(C22()); }
223
225 T GetTy() const { return fTy; }
226
228 T GetTyError() const { return sqrt(C33()); }
229
231 T GetQp() const { return fQp; }
232
234 T GetQpError() const { return sqrt(C44()); }
235
237 T GetTime() const { return fT; }
238
240 T GetTimeError() const { return sqrt(C55()); }
241
243 T GetVi() const { return fVi; }
244
246 T GetViError() const { return sqrt(C66()); }
247
249 const CovMatrix_t& GetCovMatrix() const { return fCovMatrix; }
250
255 T GetCovariance(int i, int j) const { return C(i, j); }
256
258 T GetChiSq() const { return fChiSq; }
259
261 T GetNdf() const { return fNdf; }
262
264 T GetChiSqTime() const { return fChiSqTime; }
265
267 T GetNdfTime() const { return fNdfTime; }
268
270 T GetCharge() const { return utils::iif(GetQp() > T(0.), T(1.), T(-1.)); }
271
273 T GetPhi() const { return atan2(GetTy(), GetTx()); }
274
276 T GetPhiError() const;
277
279 T GetTheta() const { return atan(sqrt(GetTx() * GetTx() + GetTy() * GetTy())); }
280
282 T GetThetaError() const;
283
285 T GetP() const { return utils::iif(utils::fabs(GetQp()) > T(1.e-4), T(1.) / utils::fabs(GetQp()), T(1.e4)); }
286
288 T GetPz() const { return GetP() / sqrt(T(1.) + GetTx() * GetTx() + GetTy() * GetTy()); }
289
291 T GetPx() const { return GetPz() * GetTx(); }
292
294 T GetPy() const { return GetPz() * GetTy(); }
295
297 T GetPt() const
298 {
299 T t2 = GetTx() * GetTx() + GetTy() * GetTy();
300 return GetP() * sqrt(t2 / (T(1.) + t2));
301 }
302
306
308 void SetZ(T v) { fZ = v; }
309
311 void SetX(T v) { fX = v; }
312
314 void SetY(T v) { fY = v; }
315
317 void SetTx(T v) { fTx = v; }
318
320 void SetTy(T v) { fTy = v; }
321
323 void SetQp(T v) { fQp = v; }
324
326 void SetTime(T v) { fT = v; }
327
329 void SetVi(T v) { fVi = v; }
330
332 void SetChiSq(T v) { fChiSq = v; }
333
335 void SetNdf(T v) { fNdf = v; }
336
338 void SetChiSqTime(T v) { fChiSqTime = v; }
339
341 void SetNdfTime(T v) { fNdfTime = v; }
342
344 void SetCovMatrix(const CovMatrix_t& val) { fCovMatrix = val; }
345
350 void SetCovariance(int i, int j, T val)
351 {
352 int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
353 fCovMatrix[ind] = val;
354 }
355
360 template<int i, int j>
361 void SetCovariance(T val)
362 {
363 constexpr int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
364 fCovMatrix[ind] = val;
365 }
366
369 void SetC00(T val) { SetCovariance<0, 0>(val); }
370 void SetC10(T val) { SetCovariance<1, 0>(val); }
371 void SetC11(T val) { SetCovariance<1, 1>(val); }
372 void SetC20(T val) { SetCovariance<2, 0>(val); }
373 void SetC21(T val) { SetCovariance<2, 1>(val); }
374 void SetC22(T val) { SetCovariance<2, 2>(val); }
375 void SetC30(T val) { SetCovariance<3, 0>(val); }
376 void SetC31(T val) { SetCovariance<3, 1>(val); }
377 void SetC32(T val) { SetCovariance<3, 2>(val); }
378 void SetC33(T val) { SetCovariance<3, 3>(val); }
379 void SetC40(T val) { SetCovariance<4, 0>(val); }
380 void SetC41(T val) { SetCovariance<4, 1>(val); }
381 void SetC42(T val) { SetCovariance<4, 2>(val); }
382 void SetC43(T val) { SetCovariance<4, 3>(val); }
383 void SetC44(T val) { SetCovariance<4, 4>(val); }
384 void SetC50(T val) { SetCovariance<5, 0>(val); }
385 void SetC51(T val) { SetCovariance<5, 1>(val); }
386 void SetC52(T val) { SetCovariance<5, 2>(val); }
387 void SetC53(T val) { SetCovariance<5, 3>(val); }
388 void SetC54(T val) { SetCovariance<5, 4>(val); }
389 void SetC55(T val) { SetCovariance<5, 5>(val); }
390 void SetC60(T val) { SetCovariance<6, 0>(val); }
391 void SetC61(T val) { SetCovariance<6, 1>(val); }
392 void SetC62(T val) { SetCovariance<6, 2>(val); }
393 void SetC63(T val) { SetCovariance<6, 3>(val); }
394 void SetC64(T val) { SetCovariance<6, 4>(val); }
395 void SetC65(T val) { SetCovariance<6, 5>(val); }
396 void SetC66(T val) { SetCovariance<6, 6>(val); }
397
402
404 T& Z() { return fZ; }
405
407 T& X() { return fX; }
408
410 T& Y() { return fY; }
411
413 T& Tx() { return fTx; }
414
416 T& Ty() { return fTy; }
417
419 T& Qp() { return fQp; }
420
422 T& Time() { return fT; }
423
425 T& Vi() { return fVi; }
426
428 CovMatrix_t& CovMatrix() { return fCovMatrix; }
429
431 T& ChiSq() { return fChiSq; }
432
434 T& Ndf() { return fNdf; }
435
437 T& ChiSqTime() { return fChiSqTime; }
438
440 T& NdfTime() { return fNdfTime; }
441
446 T& C(int i, int j)
447 {
448 int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
449 return fCovMatrix[ind];
450 }
451
456 template<int i, int j>
457 T& C()
458 {
459 constexpr int ind = (j <= i) ? i * (1 + i) / 2 + j : j * (1 + j) / 2 + i;
460 return fCovMatrix[ind];
461 }
462
465 T& C00() { return C<0, 0>(); }
466 T& C01() { return C<0, 1>(); }
467 T& C02() { return C<0, 2>(); }
468 T& C03() { return C<0, 3>(); }
469 T& C04() { return C<0, 4>(); }
470 T& C05() { return C<0, 5>(); }
471 T& C06() { return C<0, 6>(); }
472
473 T& C10() { return C<1, 0>(); }
474 T& C11() { return C<1, 1>(); }
475 T& C12() { return C<1, 2>(); }
476 T& C13() { return C<1, 3>(); }
477 T& C14() { return C<1, 4>(); }
478 T& C15() { return C<1, 5>(); }
479 T& C16() { return C<1, 6>(); }
480
481 T& C20() { return C<2, 0>(); }
482 T& C21() { return C<2, 1>(); }
483 T& C22() { return C<2, 2>(); }
484 T& C23() { return C<2, 3>(); }
485 T& C24() { return C<2, 4>(); }
486 T& C25() { return C<2, 5>(); }
487 T& C26() { return C<2, 6>(); }
488
489 T& C30() { return C<3, 0>(); }
490 T& C31() { return C<3, 1>(); }
491 T& C32() { return C<3, 2>(); }
492 T& C33() { return C<3, 3>(); }
493 T& C34() { return C<3, 4>(); }
494 T& C35() { return C<3, 5>(); }
495 T& C36() { return C<3, 6>(); }
496
497 T& C40() { return C<4, 0>(); }
498 T& C41() { return C<4, 1>(); }
499 T& C42() { return C<4, 2>(); }
500 T& C43() { return C<4, 3>(); }
501 T& C44() { return C<4, 4>(); }
502 T& C45() { return C<4, 5>(); }
503 T& C46() { return C<4, 6>(); }
504
505 T& C50() { return C<5, 0>(); }
506 T& C51() { return C<5, 1>(); }
507 T& C52() { return C<5, 2>(); }
508 T& C53() { return C<5, 3>(); }
509 T& C54() { return C<5, 4>(); }
510 T& C55() { return C<5, 5>(); }
511 T& C56() { return C<5, 6>(); }
512
513 T& C60() { return C<6, 0>(); }
514 T& C61() { return C<6, 1>(); }
515 T& C62() { return C<6, 2>(); }
516 T& C63() { return C<6, 3>(); }
517 T& C64() { return C<6, 4>(); }
518 T& C65() { return C<6, 5>(); }
519 T& C66() { return C<6, 6>(); }
520
521
524
533 void ResetErrors(T c00, T c11, T c22, T c33, T c44, T c55, T c66);
534
537 std::string ToString(int i = -1) const;
538
541 std::string ToStringCorrelations(int i = -1) const;
542
544 bool IsFinite(bool printWhenWrong) const;
545
547 bool IsEntryConsistent(bool printWhenWrong, int i) const;
548
550 bool IsConsistent(bool printWhenWrong, int nFilled) const;
551
554
555
559 template<class Archive>
560 void serialize(Archive& ar, const unsigned int /*version*/)
561 {
562 ar& fX;
563 ar& fY;
564 ar& fTx;
565 ar& fTy;
566 ar& fQp;
567 ar& fZ;
568 ar& fT;
569 ar& fVi;
570 ar& fCovMatrix;
571 ar& fChiSq;
572 ar& fNdf;
573 ar& fChiSqTime;
574 ar& fNdfTime;
575 }
576
577 private:
585 template<typename T1, bool TDoAllA, bool TDoAllB>
586 void CopyBase(const int ia, const TrackParamBase<T1>& Tb, const int ib);
587
588
589 private:
592
593 // Initializing parameters with NANs spoils the track fit where
594 // the masked-out SIMD entries are suppressed by a multication by 0.
595 // Therefore, we initialize the data members here with finite numbers.
596 // For the numerical safety, with some reasonable numbers.
597
598 // clang-format off
599 CovMatrix_t fCovMatrix {1.,
600 0., 1.,
601 0., 0., 1.,
602 0., 0., 0., 1.,
603 0., 0., 0., 0., 1.,
604 0., 0., 0., 0., 0., 1.,
605 0., 0., 0., 0., 0., 0., 1.};
606 // clang-format on
607
608 T fX{0.};
609 T fY{0.};
610 T fZ{0.};
611 T fTx{0.};
612 T fTy{0.};
613 T fQp{0.};
614 T fT{0.};
615 T fVi{0.};
616
617 T fChiSq{0.};
618 T fNdf{0.};
619 T fChiSqTime{0.};
620 T fNdfTime{0.};
621
622 }; // class TrackParamBase
623
624
629 template<typename T>
631 public:
632 using TrackParamBase<T>::TrackParamBase;
633
636 T GetEta() const { return -log(tan(this->GetTheta() * T(0.5))); }
637 };
638
639
640 // ---------------------------------------------------------------------------------------------------------------------
642
646 template<typename T>
647 class TrackParam : public TrackParamBaseScalar<T> {
648 public:
650 };
651
652 template<>
653 class TrackParam<fvec> : public TrackParamBase<fvec> {
654 public:
655 using TrackParamBase<fvec>::TrackParamBase;
656 };
657
658
662
663
666
667
670 template<typename T>
672 {
673 // phi = atan( tx / ty ); }
674
675 T phiDdenom = GetTx() * GetTx() + GetTy() * GetTy();
676 T phiDTx = -GetTy() / phiDdenom; // partial derivative of phi over Tx
677 T phiDTy = +GetTx() / phiDdenom; // partial derivative of phi over Ty
678
679 T varTx = C22(); // variance of Tx
680 T varTy = C33(); // variance of Ty
681 T covTxTy = C32(); // covariance of Tx and Ty
682
683 T varPhi = phiDTx * phiDTx * varTx + phiDTy * phiDTy * varTy + T(2.) * phiDTx * phiDTy * covTxTy;
684 return sqrt(varPhi);
685 }
686
687
690 template<typename T>
692 {
693 // theta = atan(sqrt( tx * tx + ty * ty) )
694
695 T sumSqSlopes = GetTx() * GetTx() + GetTy() * GetTy();
696 T thetaDdenom = sqrt(sumSqSlopes) * (T(1.) + sumSqSlopes);
697 T thetaDTx = GetTx() / thetaDdenom;
698 T thetaDTy = GetTy() / thetaDdenom;
699
700 T varTx = C22(); // variance of Tx
701 T varTy = C33(); // variance of Ty
702 T covTxTy = C32(); // covariance of Tx and Ty
703
704 T varTheta = thetaDTx * thetaDTx * varTx + thetaDTy * thetaDTy * varTy + T(2.) * thetaDTx * thetaDTy * covTxTy;
705
706 return sqrt(varTheta);
707 }
708
709
710 // ---------------------------------------------------------------------------------------------------------------------
711 //
712 template<typename TdataA>
713 template<typename TdataB, bool TDoAllA, bool TDoAllB>
714 inline void TrackParamBase<TdataA>::CopyBase(const int ia, const TrackParamBase<TdataB>& Tb, const int ib)
715 {
716 auto copy = [&](TdataA& a, const TdataB& b) {
718 };
719
720 copy(fX, Tb.GetX());
721 copy(fY, Tb.GetY());
722 copy(fTx, Tb.GetTx());
723 copy(fTy, Tb.GetTy());
724 copy(fQp, Tb.GetQp());
725 copy(fZ, Tb.GetZ());
726 copy(fT, Tb.GetTime());
727 copy(fVi, Tb.GetVi());
728
729 for (int i = 0; i < kNcovParam; ++i) {
730 copy(fCovMatrix[i], Tb.GetCovMatrix()[i]);
731 }
732
733 copy(fChiSq, Tb.GetChiSq());
734 copy(fNdf, Tb.GetNdf());
735 copy(fChiSqTime, Tb.GetChiSqTime());
736 copy(fNdfTime, Tb.GetNdfTime());
737
738 } // CopyBase
739
740
741 // ---------------------------------------------------------------------------------------------------------------------
742 //
743 template<typename T>
744 inline void TrackParamBase<T>::ResetErrors(T c00, T c11, T c22, T c33, T c44, T c55, T c66)
745 {
746 fCovMatrix.fill(0.);
747
748 SetC00(c00);
749 SetC11(c11);
750 SetC22(c22);
751 SetC33(c33);
752 SetC44(c44);
753 SetC55(c55);
754 SetC66(c66);
755
756 SetChiSq(0.);
757 SetNdf(-5.);
758 SetChiSqTime(0.);
759 SetNdfTime(-2.);
760 }
761
762 // ---------------------------------------------------------------------------------------------------------------------
763 //
764 template<typename T>
766 {
767 // initialise the velocity range with respect to the minimal momentum minP {GeV/c}
768 using defs::ProtonMass;
769 using defs::SpeedOfLightInv;
770 fscal maxVi = sqrt(1. + (ProtonMass<double> / minP) * (ProtonMass<double> / minP)) * SpeedOfLightInv<double>;
771 fscal minVi = SpeedOfLightInv<fscal>;
772 fscal vmean = minVi + 0.4 * (maxVi - minVi);
773 fscal dvi = (maxVi - vmean) / 3.;
774 SetVi(vmean);
775 SetC66(dvi * dvi);
776 }
777
778} // namespace cbm::algo::kf
779
780#endif // CA_CORE_CaTrackParam_h
std::string ToString(ECbmModuleId modId)
Definition CbmDefs.cxx:70
Common constant definitions for the Kalman Filter library.
friend fvec sqrt(const fvec &a)
fscal v[fmask::Size]
Definition KfSimdPseudo.h:4
friend fvec log(const fvec &a)
Implementation selection for the SIMD utilities (VS or pseudo)
Scalar version of TrackParamBase.
T GetEta() const
Gets pseudo-rapidity.
It is a technical base class of kf::TrackParam.
T GetPx() const
Gets x-component of the momentum [GeV/ec].
T C00() const
Individual getters for covariance matrix elements.
void SetOneEntry(const int ia, const TrackParamBase< fvec > &Tb, const int ib)
void SetChiSqTime(T v)
Sets Chi-square of time measurements.
T Ndf() const
Gets NDF of track fit model.
T Vi() const
Gets inverse velocity [ns/cm].
T GetPhiError() const
Gets azimuthal angle error [rad].
T GetTxError() const
Gets error of slope along x-axis.
T GetVi() const
Gets inverse velocity [ns/cm] in downstream direction.
void SetCovariance(int i, int j, T val)
Get covariance matrix element.
void SetTx(T v)
Sets slope along x-axis.
T & Ndf()
Reference to NDF of track fit model.
T GetXError() const
Gets x position error [cm].
T GetPy() const
Gets y-component of the momentum [GeV/ec].
void Set(const TrackParamBase< fvec > &Tb, const int ib)
T NdfTime() const
Gets NDF of time measurements.
T GetYError() const
Gets y position error [cm].
const CovMatrix_t & GetCovMatrix() const
Gets covariance matrix.
T GetTy() const
Gets slope along y-axis.
T C() const
Get covariance matrix element when indices are known at compile time.
T GetTimeError() const
Gets time error [ns].
T & Tx()
Reference to slope along x-axis.
T GetCharge() const
Gets charge.
void SetCovMatrix(const CovMatrix_t &val)
Sets covariance matrix.
void SetZ(T v)
Sets z position [cm].
T GetThetaError() const
Gets polar angle error [rad].
T & Time()
Reference to time [ns].
T GetPz() const
Gets z-component of the momentum [GeV/ec].
T GetZ() const
Gets z position [cm].
T & C(int i, int j)
Get a reference to the covariance matrix element.
T GetP() const
Gets momentum [GeV/ec]. For the straight tracks returns 1.e4 [GeV/ec].
void ResetErrors(T c00, T c11, T c22, T c33, T c44, T c55, T c66)
Resets variances of track parameters and chi2, ndf values.
T ChiSq() const
Gets Chi-square of track fit model.
T & Qp()
Reference to charge over momentum [ec/GeV].
T GetPhi() const
Gets azimuthal angle [rad].
T Tx() const
Gets slope along x-axis.
T GetTime() const
Gets time [ns].
void SetC00(T val)
Individual setters for covariance matrix elements.
T GetTyError() const
Gets error of slope along y-axis.
void SetY(T v)
Sets y position [cm].
void CopyBase(const int ia, const TrackParamBase< T1 > &Tb, const int ib)
Copies all/one entries from the other class.
void SetChiSq(T v)
Sets Chi-square of track fit model.
T X() const
Gets x position [cm].
T & Z()
Reference to z position [cm].
T GetTheta() const
Gets polar angle [rad].
void serialize(Archive &ar, const unsigned int)
void SetVi(T v)
Sets inverse velocity [ns/cm].
T ChiSqTime() const
Gets Chi-square of time measurements.
T GetTx() const
Gets slope along x-axis.
T & ChiSq()
Reference to Chi-square of track fit model.
T & Ty()
Reference to slope along y-axis.
T & NdfTime()
Reference to NDF of time measurements.
T & C()
Get a reference to the covariance matrix element when indices are known at compile time.
T GetViError() const
Gets inverse velocity error [ns/cm].
void SetNdf(T v)
Sets NDF of track fit model.
T & Y()
Reference to y position [cm].
T GetNdfTime() const
Gets NDF of time measurements.
T GetQp() const
Gets charge over momentum [ec/GeV].
T Y() const
Gets y position [cm].
void SetOneEntry(const int ia, const TrackParamBase< T1 > &Tb)
T GetChiSqTime() const
Gets Chi-square of time measurements.
T Qp() const
Gets charge over momentum [ec/GeV].
T Z() const
Gets z position [cm].
void InitVelocityRange(fscal minP)
Initializes inverse velocity range.
T GetPt() const
Gets transverse momentum.
T GetNdf() const
Gets NDF of track fit model.
T GetQpError() const
Gets error of charge over momentum [ec/GeV].
T Time() const
Gets time [ns].
T GetY() const
Gets y position [cm].
T & Vi()
Reference to inverse velocity [ns/cm].
T C(int i, int j) const
Get covariance matrix element.
void SetX(T v)
Sets x position [cm].
void SetNdfTime(T v)
Sets NDF of time measurements.
void SetTy(T v)
Sets slope along y-axis.
void SetCovariance(T val)
Get covariance matrix element when indices are known at compile time.
T & ChiSqTime()
Reference to Chi-square of time measurements.
CovMatrix_t & CovMatrix()
Reference to covariance matrix.
std::array< T, kNcovParam > CovMatrix_t
covariance matrix type
T GetCovariance(int i, int j) const
Get covariance matrix element.
void Set(const TrackParamBase< T1 > &Tb)
TrackParamBase(const TrackParamBase< T1 > &tr)
T GetChiSq() const
Gets Chi-square of track fit model.
T & C00()
Individual references to covariance matrix elements.
T Ty() const
Gets slope along y-axis.
void SetQp(T v)
Sets charge over momentum [ec/GeV].
T & X()
Reference to x position [cm].
void SetTime(T v)
Sets time [ns].
T GetX() const
Gets x position [cm].
TrackParam classes of different types.
Copies all/one SIMD entries from one class to the other class.
Definition KfUtils.h:179