DP3
InitialSolutions.h
Go to the documentation of this file.
1 #ifndef DP3_DDECAL_INITIAL_SOLUTIONS_H_
2 #define DP3_DDECAL_INITIAL_SOLUTIONS_H_
3 
4 #include <memory>
5 #include <string>
6 #include <vector>
7 
8 #include <xtensor/containers/xtensor.hpp>
9 
10 #include <schaapcommon/h5parm/jonesparameters.h>
11 #include <schaapcommon/h5parm/h5parm.h>
12 #include <schaapcommon/h5parm/soltab.h>
13 
14 #include "Settings.h"
15 
16 #include "common/ParameterSet.h"
17 
18 namespace dp3::ddecal {
19 
21  public:
23  const std::string& prefix);
24 
25  void Initialize(size_t n_directions,
26  size_t n_polarization_parameters_per_solution);
27 
28  void Read(const Settings& settings,
29  std::vector<std::vector<std::complex<double>>>& solutions_data,
30  const std::vector<std::string>& antenna_names,
31  const std::vector<double>& frequencies,
32  const std::vector<base::Direction>& source_directions,
33  double average_time);
34 
35  bool Empty() const { return initial_solutions_h5_parm_name_.empty(); }
36 
37  void Show(std::ostream& os) const;
38 
39  private:
40  xt::xtensor<std::complex<float>, 3> ReadJonesMatrix(
41  const base::Direction& direction, double timestamp,
42  schaapcommon::h5parm::GainType gain_type,
43  schaapcommon::h5parm::SolTab* first_soltab,
44  schaapcommon::h5parm::SolTab* second_soltab,
45  const std::vector<double>& frequencies,
46  const std::vector<std::string>& antenna_names);
47 
50  std::unique_ptr<schaapcommon::h5parm::H5Parm> solutions_;
51  std::string initial_solutions_h5_parm_name_;
52  std::vector<std::string> initial_solutions_table_;
53  std::vector<schaapcommon::h5parm::SolTab> solution_tables_;
54  bool initial_solutions_are_full_jones_ = false;
55  schaapcommon::h5parm::JonesParameters::InterpolationType interpolation_type_;
56  schaapcommon::h5parm::JonesParameters::MissingAntennaBehavior
57  missing_antenna_behavior_;
58  std::vector<schaapcommon::h5parm::GainType> gain_types_;
59 
60  size_t n_directions_ = 0;
61  size_t n_polarization_parameters_per_solution_ = 0;
62 };
63 
64 } // namespace dp3::ddecal
65 
66 #endif
Implements a map of Key-Value pairs.
Definition: ParameterSet.h:28
Definition: InitialSolutions.h:20
void Read(const Settings &settings, std::vector< std::vector< std::complex< double >>> &solutions_data, const std::vector< std::string > &antenna_names, const std::vector< double > &frequencies, const std::vector< base::Direction > &source_directions, double average_time)
void Initialize(size_t n_directions, size_t n_polarization_parameters_per_solution)
bool Empty() const
Definition: InitialSolutions.h:35
void Show(std::ostream &os) const
InitialSolutions(const common::ParameterSet &parset, const std::string &prefix)
Definition: AmplitudeOnlyConstraint.h:12
A direction on the celestial sphere.
Definition: Direction.h:15
This struct parses the DDECal parset settings and stores them.
Definition: Settings.h:33