9 #ifndef DP3_STEPS_DDECAL_H_
10 #define DP3_STEPS_DDECAL_H_
16 #include <schaapcommon/h5parm/jonesparameters.h>
17 #include <schaapcommon/h5parm/soltab.h>
18 #include <schaapcommon/threading/recursivefor.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 void setModelNextSteps(
Step&,
const std::string& direction,
82 const std::string& prefix)
const;
90 void InitializeSolutions(
size_t buffer_index);
93 void WriteSolutions();
98 void SumModels(
size_t buffer_index);
104 const std::vector<std::complex<double>>& channel_block_solutions)
const;
111 void CorrectAndSubtractModels(
size_t buffer_index);
115 xt::xtensor<std::complex<float>, 3> ReadJonesMatrixFromH5Parm(
117 schaapcommon::h5parm::GainType gain_type,
118 schaapcommon::h5parm::SolTab* first_soltab,
119 schaapcommon::h5parm::SolTab* second_soltab);
125 std::vector<std::vector<std::unique_ptr<base::DPBuffer>>> input_buffers_;
130 xt::xtensor<bool, 5> original_flags_;
133 double average_time_;
138 std::vector<std::vector<std::vector<casacore::DComplex>>> solutions_;
139 std::vector<size_t> n_iterations_;
140 std::vector<size_t> n_approximating_iterations_;
144 std::vector<std::vector<std::vector<ddecal::ConstraintResult>>>
145 constraint_solutions_;
147 std::unique_ptr<ddecal::SolutionWriter> solution_writer_;
152 size_t requested_solution_interval_;
153 size_t n_solution_intervals_;
155 size_t first_solution_index_;
158 std::vector<std::pair<size_t, size_t>> visibilities_in_interval_;
161 std::vector<size_t> channel_block_start_;
162 std::vector<double> channel_block_frequencies_;
164 std::vector<std::vector<std::string>> patches_per_direction_;
166 std::vector<std::string> direction_names_;
168 std::vector<std::string> reused_direction_names_;
170 std::vector<base::Direction> source_directions_;
173 std::vector<int> antennas1_;
175 std::vector<int> antennas2_;
176 std::vector<double> weights_per_antenna_;
180 std::shared_ptr<ResultStep> data_result_step_;
183 std::vector<std::shared_ptr<ModelDataStep>> steps_;
185 std::vector<common::Fields> required_fields_;
188 std::vector<std::shared_ptr<MultiResultStep>> result_steps_;
192 bool store_solution_in_buffer_;
198 std::mutex measures_mutex_;
199 std::unique_ptr<ddecal::SolverBase> solver_;
200 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:28
Definition: InitialSolutions.h:20
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