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();
117 LogInfo(
"In filtering: Filter already done for this node!");
123 LogInfo(
"In filtering: Prediction not done for this node!");
148 TMatrixD p_filter = p_pred + k*(m - proj*p_pred);
155 TMatrixD r_filter = m - proj*p_filter;
163 TMatrixD dp = p_filter - p_pred;
191 LogInfo(
"In smoother: Filter not done!");
197 LogInfo(
"In smoother: Smooth already done!");
203 LogInfo(
"In smoother: Smooth not done for the last node");
219 TMatrixD p_smooth = p_filter + a*(p_smooth_prev - p_pred_prev);
223 TMatrixD cov_smooth = cov_filter +
SMatrix::getABCt(a, cov_smooth_prev - cov_pred_prev, a);
bool initExtrapolator(const PHField *field, const TGeoManager *geom)
bool smooth(Node &_node, Node &_node_prev)
static KalmanFilter * instance()
singlton instance
bool fit_node(Node &_node)
Fit one node.
bool predict(Node &_node)
Kalman filter steps.
KalmanFilter(bool limitedStep=true)
Real constructor.
void setPredictionDone(bool flag=true)
TrkPar & getPredicted()
Gets.
void setFilterDone(bool flag=true)
TMatrixD & getMeasurement()
void setChisq(double chisq)
TMatrixD & getProjector()
TMatrixD & getMeasurementCov()
void setSmoothDone(bool flag=true)
TMatrixD & getPropagator()
transient DST object for field storage and access
static TMatrixD getABtCinv(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
static TMatrixD getABtC(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
static TMatrixD getABCt(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
static TMatrixD getAtBC(const TMatrixD &A, const TMatrixD &B, const TMatrixD &C)
static TMatrixD invertMatrix(const TMatrixD &m)
TMatrixD _state_kf
State vectors and its covariance.