18 :
KFbase(settings, nHelixPar, fitterName),
33 vecX[
Z0] = l1track3D.
z0();
36 vecX[
D0] = l1track3D.
d0();
52 const float inv2Rsigma = 0.0314 * invPtToInv2R;
53 constexpr
float phi0sigma = 0.0102;
54 constexpr
float z0sigma = 5.0;
55 constexpr
float tanLsigma = 0.5;
56 constexpr
float d0Sigma = 1.0;
62 matC[
T][
T] =
pow(tanLsigma, 2);
83 double inv2R2 = inv2R * inv2R;
86 double tanl2 = tanl * tanl;
94 double r2 = stub->
r() * stub->
r();
95 double invr2 = 1. /
r2;
99 double sigmaScat2 = sigmaScat * sigmaScat;
102 vphi = (a * invr2) + sigmaScat2;
106 float scaleTilted = 1.;
109 scaleTilted =
approxB(stub->
z(), stub->
r());
112 scaleTilted =
sin(tilt) +
cos(tilt) * tanl;
115 float scaleTilted2 = scaleTilted * scaleTilted;
117 vz = b * scaleTilted2;
128 vphi = a * invr2 + sigmaScat2;
138 beta += -stub->
alpha();
140 double beta2 = beta *
beta;
142 vcorr = b * (beta * tanl);
146 vphi = (a * invr2) + (b * inv2R2) + sigmaScat2;
156 matV(
PHI,
Z) = vcorr;
157 matV(
Z,
PHI) = vcorr;
167 double r = stub->
r();
188 TVectorD vecX = state->
vectorX();
205 TVectorD vecX = state->
vectorX();
206 TMatrixD matC = state->
matrixC();
208 double delChi2rphi = (vecX[
D0] * vecX[
D0]) / matC[
D0][
D0];
209 chi2rphi = state->
chi2rphi() + delChi2rphi;
233 bool goodState(
true);
236 double qOverPt = vecY[
QOVERPT];
242 if (z0 > kfLayerVsZ0Cut[nStubLayers])
256 if (chi2scaled > kfLayerVsChiSqCut[nStubLayers])
259 const bool countUpdateCalls =
false;
263 std::stringstream
text;
264 text << std::fixed << std::setprecision(4);
266 text <<
"State veto:";
268 text <<
"State kept:";
269 text <<
" nlay=" << nStubLayers <<
" nskip=" << state.
nSkippedLayers() <<
" chi2_scaled=" << chi2scaled;
271 text <<
" pt(mc)=" <<
tpa_->
pt();
272 text <<
" pt=" << pt <<
" q/pt=" << qOverPt <<
" tanL=" << vecY[
T] <<
" z0=" << vecY[
Z0]
273 <<
" phi0=" << vecY[
PHI0];
275 text <<
" d0=" << vecY[
D0];
276 text <<
" fake" << (
tpa_ ==
nullptr);
278 text <<
" pt(mc)=" << tpa_->pt();
TVectorD trackParams(const KalmanState *state) const override
constexpr double deltaPhi(double phi1, double phi2)
const L1track3D & candidate() const
float phi0() const override
kfLayerVsChiSq4_({999., 999., 10., 30., 80., 120., 160.})
bool kalmanHOtilted() const
TMatrixD matrixF(const Stub *stub, const KalmanState *state) const override
const TMatrixD & matrixC() const
float qOverPt() const override
kfLayerVsD0Cut5_({999., 999., 999., 10., 10., 10., 10.})
bool tiltedBarrel() const
double invPtToInvR() const
double chi2scaled() const
Sin< T >::type sin(const T &t)
kfLayerVsPtToler_({999., 999., 0.1, 0.1, 0.05, 0.05, 0.05})
std::vector< double > kfLayerVsZ0Cut5_
TMatrixD matrixH(const Stub *stub) const override
kfLayerVsZ0Cut4_({999., 999., 15., 15., 15., 15., 15.})
unsigned kalmanDebugLevel() const
std::vector< double > kfLayerVsChiSq4_
TVectorD trackParams_BeamConstr(const KalmanState *state, double &chi2rphi) const override
unsigned nSkippedLayers() const
TVectorD vectorM(const Stub *stub) const override
std::vector< double > kfLayerVsPtToler_
bool isGoodState(const KalmanState &state) const override
std::vector< double > kfLayerVsChiSq5_
std::vector< double > kfLayerVsZ0Cut4_
Cos< T >::type cos(const T &t)
Abs< T >::type abs(const T &t)
kfLayerVsChiSq5_({999., 999., 10., 30., 80., 120., 160.})
const Settings * settings_
unsigned int kalmanHOalpha() const
TMatrixD seedC(const L1track3D &l1track3D) const override
static constexpr float d0
unsigned nStubLayers() const
const TVectorD & vectorX() const
double kalmanMultiScattTerm() const
unsigned int kalmanHOprojZcorr() const
kfLayerVsZ0Cut5_({999., 999., 25.5, 25.5, 25.5, 25.5, 25.5})
TVectorD seedX(const L1track3D &l1track3D) const override
Power< A, B >::type pow(const A &a, const B &b)
TMatrixD matrixV(const Stub *stub, const KalmanState *state) const override
float approxB(float z, float r) const
std::vector< double > kfLayerVsD0Cut5_