9 #ifndef DP3_STEPS_DDECAL_H_
10 #define DP3_STEPS_DDECAL_H_
16 #include <aocommon/recursivefor.h>
18 #include <schaapcommon/h5parm/h5cache.h>
19 #include <schaapcommon/h5parm/jonesparameters.h>
53 bool process(std::unique_ptr<base::DPBuffer> buffer)
override;
67 void show(std::ostream&)
const override;
69 void showTimings(std::ostream&,
double duration)
const override;
73 const std::string& prefix);
74 void initializeModelReuse();
76 const std::string& prefix);
78 const std::string& prefix);
80 const std::string& prefix);
82 void setModelNextSteps(
Step&,
const std::string& direction,
84 const std::string& prefix)
const;
92 void InitializeSolutions(
size_t buffer_index);
95 void WriteSolutions();
100 void SumModels(
size_t buffer_index);
106 const std::vector<std::complex<double>>& channel_block_solutions)
const;
113 void CorrectAndSubtractModels(
size_t buffer_index);
117 xt::xtensor<std::complex<float>, 3> ReadJonesMatrixFromH5Parm(
119 schaapcommon::h5parm::GainType gain_type,
120 schaapcommon::h5parm::SolTab* first_soltab,
121 schaapcommon::h5parm::SolTab* second_soltab);
127 std::vector<std::vector<std::unique_ptr<base::DPBuffer>>> input_buffers_;
132 xt::xtensor<bool, 5> original_flags_;
135 double average_time_;
140 std::vector<std::vector<std::vector<casacore::DComplex>>> solutions_;
141 std::vector<size_t> n_iterations_;
142 std::vector<size_t> n_approximating_iterations_;
146 std::vector<std::vector<std::vector<ddecal::ConstraintResult>>>
147 constraint_solutions_;
149 std::unique_ptr<ddecal::SolutionWriter> solution_writer_;
153 size_t requested_solution_interval_;
154 size_t n_solution_intervals_;
156 size_t first_solution_index_;
159 std::vector<std::pair<size_t, size_t>> visibilities_in_interval_;
162 std::vector<size_t> channel_block_start_;
163 std::vector<double> channel_block_frequencies_;
165 std::vector<std::vector<std::string>> patches_per_direction_;
167 std::vector<std::string> direction_names_;
169 std::vector<std::string> reused_direction_names_;
171 std::vector<base::Direction> source_directions_;
174 std::vector<int> antennas1_;
176 std::vector<int> antennas2_;
177 std::vector<double> weights_per_antenna_;
181 std::shared_ptr<ResultStep> data_result_step_;
184 std::vector<std::shared_ptr<ModelDataStep>> steps_;
186 std::vector<common::Fields> required_fields_;
189 std::vector<std::shared_ptr<MultiResultStep>> result_steps_;
193 bool store_solution_in_buffer_;
197 std::unique_ptr<schaapcommon::h5parm::H5Parm> initial_solutions_;
198 std::string initial_solutions_h5_parm_name;
199 std::vector<std::string> initial_solutions_table_;
200 std::vector<schaapcommon::h5parm::SolTab> solution_tables_;
201 bool initial_solutions_are_full_jones_;
205 schaapcommon::h5parm::JonesParameters::InterpolationType interpolation_type_;
206 schaapcommon::h5parm::JonesParameters::MissingAntennaBehavior
207 missing_antenna_behavior_;
208 std::vector<schaapcommon::h5parm::GainType> gain_types_;
215 std::mutex measures_mutex_;
216 std::unique_ptr<ddecal::SolverBase> solver_;
217 std::unique_ptr<std::ofstream> statistics_stream_;
DP3 step class to flag data on UVW coordinates.
Buffer holding the data of a timeslot/band.
Definition: DPBuffer.h:92
General info about DP3 data processing attributes like averaging.
Definition: DPInfo.h:35
Implements a map of Key-Value pairs.
Definition: ParameterSet.h:31
This class is a Step class to calibrate (direction dependent) gains.
Definition: DDECal.h:36
void checkMinimumVisibilities(size_t bufferIndex)
bool process(std::unique_ptr< base::DPBuffer > buffer) override
void showTimings(std::ostream &, double duration) const override
void doSolve()
Call the actual solver (called once per solution interval)
void flagChannelBlock(size_t cbIndex, size_t bufferIndex)
void updateInfo(const base::DPInfo &) override
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: DDECal.h:42
void finish() override
Finish the processing of this step and subsequent steps.
DDECal(const common::ParameterSet ¶meterSet, const std::string &prefix)
void show(std::ostream &) const override
Show the step parameters.
common::Fields getProvidedFields() const override
Definition: DDECal.h:46
Abstract base class for a DP3 step.
Definition: Step.h:52
static constexpr dp3::common::Fields kWeightsField
Definition: Step.h:64
static constexpr dp3::common::Fields kUvwField
Definition: Step.h:66
static constexpr dp3::common::Fields kDataField
Definition: Step.h:60
static constexpr dp3::common::Fields kFlagsField
Definition: Step.h:62
DP3 step class to flag data on UVW coordinates.
Definition: UVWFlagger.h:38
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
A direction on the celestial sphere.
Definition: Direction.h:15
This struct parses the DDECal parset settings and stores them.
Definition: Settings.h:33
const bool only_predict
Definition: Settings.h:140
const bool subtract
Definition: Settings.h:141
const bool keep_model_data
Definition: Settings.h:142