CbmRoot
Loading...
Searching...
No Matches
KfMeasurementU.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: Sergey Gorbunov [committer], Igor Kulakov, Sergei Zharko */
4
7
8#pragma once // include this header only once per compilation unit
9
10
11#include "KfDefs.h"
12#include "KfUtils.h"
13
14#include <boost/serialization/access.hpp>
15
16#include <string>
17
18namespace cbm::algo::kf
19{
34 template<typename DataT>
35 class alignas(VcMemAlign) MeasurementU {
36
37 public:
38 friend class boost::serialization::access;
39
41 MeasurementU() = default;
42
51 MeasurementU(DataT cosPhi, DataT sinPhi, DataT u, DataT du2, DataT ndf)
52 : fCosPhi(cosPhi)
53 , fSinPhi(sinPhi)
54 , fU(u)
55 , fDu2(du2)
56 , fNdf(ndf)
57 {
58 }
59
62
63 void SetCosPhi(DataT cosPhi) { fCosPhi = cosPhi; }
64 void SetSinPhi(DataT sinPhi) { fSinPhi = sinPhi; }
65 void SetU(DataT u) { fU = u; }
66 void SetDu2(DataT du2) { fDu2 = du2; }
67 void SetNdf(DataT ndf) { fNdf = ndf; }
68
69 DataT CosPhi() const { return fCosPhi; }
70 DataT SinPhi() const { return fSinPhi; }
71 DataT U() const { return fU; }
72 DataT Du2() const { return fDu2; }
73 DataT Ndf() const { return fNdf; }
74
77
80 std::string ToString(int indentLevel = 0) const;
81
83 bool IsFinite() const
84 {
85 return (utils::IsFinite(CosPhi()) && utils::IsFinite(SinPhi()) && utils::IsFinite(U()) && utils::IsFinite(Du2())
86 && utils::IsFinite(Ndf()));
87 }
88
90 bool IsUndefined() const
91 {
92 return (utils::IsUndefined(CosPhi()) || utils::IsUndefined(SinPhi()) || utils::IsUndefined(U())
93 || utils::IsUndefined(Du2()) || utils::IsUndefined(Ndf()));
94 }
95
97 friend class boost::serialization::access;
98 template<class Archive>
99 void serialize(Archive& ar, const unsigned int)
100 {
101 ar& fCosPhi;
102 ar& fSinPhi;
103 ar& fU;
104 ar& fDu2;
105 ar& fNdf;
106 }
107
108 private:
111
112 DataT fCosPhi = defs::Undef<DataT>;
113 DataT fSinPhi = defs::Undef<DataT>;
114 DataT fU = defs::Undef<DataT>;
115 DataT fDu2 = defs::Undef<DataT>;
116
120 DataT fNdf = defs::Undef<DataT>;
122
123} // namespace cbm::algo::kf
std::string ToString(ECbmModuleId modId)
Definition CbmDefs.cxx:70
Common constant definitions for the Kalman Filter library.
#define _fvecalignment
The class describes a 1D - measurement U in XY coordinate system.
MeasurementU(DataT cosPhi, DataT sinPhi, DataT u, DataT du2, DataT ndf)
bool IsFinite() const
Checks, if all fields are finite.
void SetSinPhi(DataT sinPhi)
MeasurementU()=default
default constructor
void serialize(Archive &ar, const unsigned int)
bool IsUndefined() const
Checks, if some fields are undefined.
void SetCosPhi(DataT cosPhi)