17 Stat() : tot(0), nopd(0), jnopd(0), fnopd(0), inopd(0), ijnopd(0), ifnopd(0), dtot(0) {
18 for (
int i = 0;
i < 5; ++
i)
22 std::atomic<long long> tot;
23 std::atomic<long long> nopd;
24 std::atomic<long long> jnopd;
25 std::atomic<long long> fnopd;
26 std::atomic<long long> inopd;
27 std::atomic<long long> ijnopd;
28 std::atomic<long long> ifnopd;
30 std::atomic<unsigned long long> dtot;
31 std::atomic<unsigned long long> idmm[5];
36 double n = 1.e-3 / double(dtot);
37 std::cout <<
"KF " << tot * 1.e-9 <<
"G " << mm <<
" " << dmm[0] <<
'/' << dmm[1] <<
'/' << dmm[2] <<
'/'
38 << dmm[3] <<
'/' << dmm[4] <<
'\n'
39 << dtot <<
' ' << idmm[0] <<
'/' << idmm[1] <<
'/' << idmm[2] <<
'/' << idmm[3] <<
'/' << idmm[4]
42 <<
std::sqrt(idmm[3] * n) <<
'/' <<
std::sqrt(idmm[4] * n) <<
" " << nopd <<
" " << jnopd <<
" "
43 << fnopd <<
" " << inopd <<
" " << ijnopd <<
" " << ifnopd << std::endl;
50 return m(0, 0) < 0 ||
m(1, 1) < 0 ||
m(2, 2) < 0 ||
m(3, 3) < 0 ||
m(4, 4) < 0;
57 template <
unsigned int D>
63 using ROOT::Math::SMatrixNoInit;
74 SMatDD
V(SMatrixNoInit{}), VMeas(SMatrixNoInit{});
77 holder.template setup<D>(&
r, &
V, &pf, &rMeas, &VMeas,
x,
C);
88 Mat5D K =
C * pf.project(R);
89 pf.projectAndSubtractFrom(M, K);
100 ROOT::Math::AssignSym::Evaluate(fse, M *
C);
107 ROOT::Math::AssignSym::Evaluate(fse2, M *
C);
113 auto n1 = isNopd(fse);
114 auto n2 = isNopd(fse2);
123 auto dda = dd.Array();
124 auto fsa = fse.Array();
126 for (
int i = 0;
i < 15; ++
i)
128 auto mm = *std::max_element(ddd, ddd + 15);
130 if (
stat.ok && !(n1 || n2)) {
132 for (
int i = 0; i < 5; ++
i) {
135 stat.idmm[
i] += (
unsigned long long)(1000. * dmm * dmm);
171 edm::LogError(
"KFUpdator") <<
" could not invert martix:\n" << (V + VMeas);
180 return lupdate<1>(tsos, aRecHit);
182 return lupdate<2>(tsos, aRecHit);
184 return lupdate<3>(tsos, aRecHit);
186 return lupdate<4>(tsos, aRecHit);
188 return lupdate<5>(tsos, aRecHit);
190 throw cms::Exception(
"Rec hit of invalid dimension (not 1,2,3,4,5)")
191 <<
"The value was " << aRecHit.
dimension() <<
", type is " <<
typeid(aRecHit).
name() <<
"\n";
virtual int dimension() const =0
virtual void getKfComponents(KfComponentsHolder &holder) const
ROOT::Math::SMatrix< double, D1, D1, ROOT::Math::MatRepSym< double, D1 > > SymMatrix
const LocalTrajectoryParameters & localParameters() const
ROOT::Math::SMatrixIdentity AlgebraicMatrixID
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55
Log< level::Error, false > LogError
ROOT::Math::SMatrix< double, D1, D2, ROOT::Math::MatRepStd< double, D1, D2 > > Matrix
AlgebraicVector5 vector() const
const SurfaceType & surface() const
uint32_t T const *__restrict__ uint32_t const *__restrict__ int32_t int Histo::index_type cudaStream_t V
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
SurfaceSide surfaceSide() const
Position relative to material, defined relative to momentum vector.
bool invertPosDefMatrix(ROOT::Math::SMatrix< T, N, N, ROOT::Math::MatRepSym< T, N > > &m)
Abs< T >::type abs(const T &t)
ROOT::Math::SVector< double, 5 > AlgebraicVector5
uint16_t const *__restrict__ x
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
const GlobalTrajectoryParameters & globalParameters() const
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepSym< double, 5 > > AlgebraicSymMatrix55
ROOT::Math::SVector< double, D1 > Vector
const MagneticField & magneticField() const
float pzSign() const
Sign of the z-component of the momentum in the local frame.