19 nopd(0), jnopd(0), fnopd(0),
20 inopd(0), ijnopd(0), ifnopd(0),dtot(0)
21 {
for (
int i=0;
i<5;++
i) idmm[
i]=0; }
23 std::atomic<long long> tot;
24 std::atomic<long long> nopd;
25 std::atomic<long long> jnopd;
26 std::atomic<long long> fnopd;
27 std::atomic<long long> inopd;
28 std::atomic<long long> ijnopd;
29 std::atomic<long long> ifnopd;
31 std::atomic<unsigned long long> dtot;
32 std::atomic<unsigned long long> idmm[5];
37 double n = 1.e-3/double(dtot);
38 std::cout <<
"KF " << tot*1.e-9 <<
"G " << mm <<
" " 39 <<dmm[0]<<
'/'<<dmm[1]<<
'/'<<dmm[2]<<
'/'<<dmm[3]<<
'/'<<dmm[4]<<
'\n' 40 <<dtot <<
' ' <<idmm[0]<<
'/'<<idmm[1]<<
'/'<<idmm[2]<<
'/'<<idmm[3]<<
'/'<<idmm[4]<<
'\n' 42 <<
" " << nopd <<
" " << jnopd <<
" " << fnopd
43 <<
" " << inopd <<
" " << ijnopd <<
" " << ifnopd
51 return m(0,0)<0 ||
m(1,1)<0 ||
m(2,2)<0 ||
m(3,3)<0 ||
m(4,4)<0;
59 template <
unsigned int D>
67 using ROOT::Math::SMatrixNoInit;
78 SMatDD V(SMatrixNoInit{}), VMeas(SMatrixNoInit{});
81 holder.template setup<D>(&
r, &V, &
pf, &rMeas, &VMeas,
x,
C);
92 Mat5D K =
C*pf.project(R);
93 pf.projectAndSubtractFrom(M,K);
100 #define KU_JosephForm 117 auto n1 = isNopd(fse);
118 auto n2 = isNopd(fse2);
119 if (n1&&n2)
stat.nopd++;
120 if (n1)
stat.jnopd++;
121 if (n2)
stat.fnopd++;
124 auto dda = dd.Array();
125 auto fsa = fse.Array();
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);
144 if (n1&&n2)
stat.inopd++;
145 if (n1)
stat.ijnopd++;
146 if (n2)
stat.ifnopd++;
162 edm::LogError(
"KFUpdator")<<
" could not invert martix:\n"<< (V+VMeas);
172 case 1:
return lupdate<1>(tsos,aRecHit);
173 case 2:
return lupdate<2>(tsos,aRecHit);
174 case 3:
return lupdate<3>(tsos,aRecHit);
175 case 4:
return lupdate<4>(tsos,aRecHit);
176 case 5:
return lupdate<5>(tsos,aRecHit);
178 throw cms::Exception(
"Rec hit of invalid dimension (not 1,2,3,4,5)") <<
179 "The value was " << aRecHit.
dimension() <<
180 ", type is " <<
typeid(aRecHit).
name() <<
"\n";
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::MatRepSym< double, 5 > > AlgebraicSymMatrix55
AlgebraicVector5 vector() const
ROOT::Math::SMatrix< double, D1, D2, ROOT::Math::MatRepStd< double, D1, D2 > > Matrix
TrajectoryStateOnSurface update(const TrajectoryStateOnSurface &, const TrackingRecHit &) const override
const SurfaceType & surface() const
virtual int dimension() const =0
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)
const AlgebraicSymMatrix55 & matrix() const
const LocalTrajectoryError & localError() const
ROOT::Math::SVector< double, D1 > Vector
ROOT::Math::SVector< double, 5 > AlgebraicVector5
const GlobalTrajectoryParameters & globalParameters() const
const MagneticField & magneticField() const
float pzSign() const
Sign of the z-component of the momentum in the local frame.
ROOT::Math::SMatrix< double, 5, 5, ROOT::Math::MatRepStd< double, 5, 5 > > AlgebraicMatrix55