EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
HelixKalman.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file HelixKalman.h
1 #ifndef KALMAN_HELIXKALMAN_H
2 #define KALMAN_HELIXKALMAN_H
3 
4 #include <Eigen/Core>
5 
6 class HelixKalmanState;
7 class SimpleHit3D;
8 
9 
11 {
12  public:
13  HelixKalman(float B);
14  virtual ~HelixKalman();
15 
16  void addHit(SimpleHit3D& hit, HelixKalmanState& state);
17 
18  protected:
19  virtual void calculateProjections(SimpleHit3D& hit, HelixKalmanState& state, Eigen::Matrix<float,2,5>& H, Eigen::Matrix<float,2,1>& ha) = 0;
20  virtual void calculateMeasurements(SimpleHit3D& hit, Eigen::Matrix<float,2,1>& m, Eigen::Matrix<float,2,2>& G) = 0;
21  virtual bool calculateScatteringVariance(HelixKalmanState& state, float& var) = 0;
22  virtual void updateIntersection(HelixKalmanState& state, int layer) = 0;
23  virtual void subtractProjections(Eigen::Matrix<float,2,1>& m, Eigen::Matrix<float,2,1>& ha, Eigen::Matrix<float,2,1>& diff);
24 
25  void calculateMSCovariance(HelixKalmanState& state, Eigen::Matrix<float,5,5>& Q);
26  void calculate_dbdt(Eigen::Matrix<float,3,2>& dbdt_out);
27  void calculate_dpdb(Eigen::Vector3f& p, Eigen::Matrix<float,3,3>& dpdb);
28  void calculate_dApdp(HelixKalmanState& state, Eigen::Matrix<float,3,3>& dApdp, Eigen::Vector3f& p, float phi, float cosphi, float sinphi);
29  void calculate_dAdAp(HelixKalmanState& state, Eigen::Matrix<float,5,3>& dAdAp, float& phi_p, float& cosphi_p, float& sinphi_p);
30 
32 };
33 
34 
35 #endif