23 if(p_kmfit ==
nullptr)
33 if(p_kmfit !=
nullptr)
47 _extrapolator.
init(field, geom);
66 LogInfo(
"In prediction: Prediction already done for this node!");
72 LogInfo(
"Current track parameter is undefined! ");
78 double z_pred = _node.
getZ();
115 LogInfo(
"In filtering: Filter already done for this node!");
121 LogInfo(
"In filtering: Prediction not done for this node!");
146 TMatrixD p_filter = p_pred + k*(m - proj*p_pred);
153 TMatrixD r_filter = m - proj*p_filter;
161 TMatrixD dp = p_filter - p_pred;
189 LogInfo(
"In smoother: Filter not done!");
195 LogInfo(
"In smoother: Smooth already done!");
201 LogInfo(
"In smoother: Smooth not done for the last node");
217 TMatrixD p_smooth = p_filter + a*(p_smooth_prev - p_pred_prev);
221 TMatrixD cov_smooth = cov_filter +
SMatrix::getABCt(a, cov_smooth_prev - cov_pred_prev, a);
bool predict(Node &_node)
Kalman filter steps.
TrkPar & getPredicted()
Gets.
TMatrixD & getMeasurement()
static TMatrixD getABtCinv(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
static TMatrixD getAtBC(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
void setChisq(double chisq)
transient DST object for field storage and access
static recoConsts * instance()
static TMatrixD invertMatrix(const TMatrixD &m)
void setPredictionDone(bool flag=true)
TMatrixD & getProjector()
bool fit_node(Node &_node)
Fit one node.
TMatrixD & getMeasurementCov()
static KalmanFilter * instance()
singlton instance
TMatrixD _state_kf
State vectors and its covariance.
static TMatrixD getABCt(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
bool smooth(Node &_node, Node &_node_prev)
void setFilterDone(bool flag=true)
TMatrixD & getPropagator()
KalmanFilter(bool limitedStep=true)
Real constructor.
static TMatrixD getABtC(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
bool initExtrapolator(const PHField *field, const TGeoManager *geom)
void setSmoothDone(bool flag=true)