EIC Software
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
CylinderKalman.h
Go to the documentation of this file. Or view the newest version in sPHENIX GitHub for file CylinderKalman.h
1 #ifndef KALMAN_CYLINDERKALMAN_H
2 #define KALMAN_CYLINDERKALMAN_H
3 
4 #include "HelixKalman.h"
5 
6 #include <Eigen/Core>
7 
8 #include <vector>
9 
10 class HelixKalmanState;
11 class SimpleHit3D;
12 
13 
15 {
16  public:
17  CylinderKalman(std::vector<float>& detector_radii, std::vector<float>& detector_material, float B);
18  virtual ~CylinderKalman();
19 
20  protected:
21  void calculateProjections(SimpleHit3D& hit, HelixKalmanState& state, Eigen::Matrix<float,2,5>& H, Eigen::Matrix<float,2,1>& ha);
22  void calculateMeasurements(SimpleHit3D& hit, Eigen::Matrix<float,2,1>& m, Eigen::Matrix<float,2,2>& G);
23  bool calculateScatteringVariance(HelixKalmanState& state, float& var);
24  void updateIntersection(HelixKalmanState& state, int layer);
25  void subtractProjections(Eigen::Matrix<float,2,1>& m, Eigen::Matrix<float,2,1>& ha, Eigen::Matrix<float,2,1>& diff);
26 
27  private:
28  void calculate_dxda(SimpleHit3D& hit, HelixKalmanState& state, Eigen::Matrix<float,3,5>& dxda, float& x, float& y, float& z);
29  std::vector<float> det_rad;
30  std::vector<float> det_scatter_variance;
31  unsigned int nlayers;
32  float signk_store;
33 };
34 
35 
36 #endif