explicit_mapmaking
 All Classes Files Pages
atfa.hpp
Go to the documentation of this file.
1 
8 #ifndef EXPLICIT_MAPMAKING_ATFA_HPP
9 #define EXPLICIT_MAPMAKING_ATFA_HPP
10 
11 #include "matrix.hpp"
12 #include "eigenstructure.hpp"
13 #include "data_manager.hpp"
14 
15 //TODO AtFa should inherit from a SquaredMatrix class and Invert should be moved
16 //therein
17 
18 namespace mapmaking {
19 class AtFA : public Matrix {
20  public:
21  AtFA() {}
22  AtFA(const Matrix& matrix) : Matrix(matrix) {}
23  AtFA(Grid* grid, DataManager* data_manager, int matrix_side) : data_manager_(data_manager),
24  Matrix(grid, matrix_side, matrix_side) {}
25 
26  void ComputeAtfA();
27  Eigenstructure Invert(double cn_threshold=1e-6);
28  //AtFA& operator=(const Matrix& matrix);
29 
30  private:
31  //TODO getter with NULL check or (better) move invert in a SquaredMatrix class
32  DataManager* data_manager_ = NULL;
33  virtual int NStokes() = 0;
34  virtual void UpdateAtFAPart(const double& contrib, const int& n_row_this_block,
35  const CES& ces, const int t1, const int t2,
36  int& index, std::vector<double>& afa_part) = 0;
37 };
38 }
39 
40 #endif // EXPLICIT_MAPMAKING_ATFA_HPP
Definition: data_manager.hpp:21
Distributed matrix (see scalapack)
Definition: grid.hpp:16
Definition: atfa.hpp:18
Definition: atfa.hpp:19
Definition: eigenstructure.hpp:19
Definition: ces.hpp:34
Handle eigenvectors and eigenvalues of a matrix.
Definition: matrix.hpp:22
Data Handler.