7 #ifndef DP3_STEPS_SAGECALPREDICT_H_
8 #define DP3_STEPS_SAGECALPREDICT_H_
10 #include <Dirac_radio.h>
31 std::vector<double> data;
32 std::vector<double> u;
33 std::vector<double> v;
34 std::vector<double> w;
35 std::vector<double> frequencies;
36 std::vector<clus_source_t> cluster_arr;
37 std::vector<baseline_t> baseline_arr;
52 std::vector<double> time_utc;
53 bool sources_are_precessed =
false;
65 struct BeamDataSingle {
67 BeamDataSingle(BeamDataSingle
const&) =
delete;
68 BeamDataSingle& operator=(BeamDataSingle
const&) =
delete;
71 static BeamDataSingle* get_instance() {
72 static BeamDataSingle instance;
76 void update_metadata(
const base::DPInfo& _info,
const double freq_f0,
77 const size_t n_channels,
78 std::vector<double>& freq_channel,
82 std::vector<int> n_elem;
85 std::vector<double> sx;
86 std::vector<double> sy;
88 std::vector<std::vector<double>> xx;
89 std::vector<std::vector<double>> yy;
90 std::vector<std::vector<double>> zz;
93 std::vector<double*> xx_ptr;
94 std::vector<double*> yy_ptr;
95 std::vector<double*> zz_ptr;
107 double reference_dec;
109 int beam_mode{DOBEAM_NONE};
113 explicit BeamDataSingle() : is_updated_(
false) {}
122 H5ParmSingle(H5ParmSingle
const&) =
delete;
123 H5ParmSingle& operator=(H5ParmSingle
const&) =
delete;
126 static H5ParmSingle& GetInstance() {
127 static H5ParmSingle instance;
131 schaapcommon::h5parm::H5Parm& OpenFile(
const std::string& h5_name);
134 explicit H5ParmSingle() {}
142 std::unique_ptr<schaapcommon::h5parm::H5Parm> h5_parm_;
150 const std::vector<std::string>& given_source_patterns,
158 if ((operation_ == Operation::kAdd) ||
159 (operation_ == Operation::kSubtract)) {
173 bool process(std::unique_ptr<dp3::base::DPBuffer> buffer)
override;
180 void show(std::ostream&)
const override;
182 void showTimings(std::ostream& os,
double duration)
const override;
187 enum class Operation { kReplace, kAdd, kSubtract };
191 void SetOperation(
const std::string& operation);
193 unsigned int nPol(
const std::string& parmName);
195 void SetCorrectType(schaapcommon::h5parm::H5Parm& h5_parm,
196 const std::vector<std::string>& sol_tabs);
198 void updateFromH5(
const double startTime);
202 const std::vector<std::string>& source_patterns);
209 Operation operation_;
211 std::string h5_name_;
212 std::vector<std::string>
214 std::vector<std::shared_ptr<model::Patch>> patch_list_;
215 std::string source_db_name_;
216 std::vector<std::pair<std::shared_ptr<base::ModelComponent>,
217 std::shared_ptr<model::Patch>>>
219 bool any_orientation_is_absolute_{
false};
223 std::string solset_name_;
224 std::string soltab_name_;
226 bool parm_on_disk_{
false};
227 bool use_amp_phase_{
false};
228 schaapcommon::h5parm::GainType gain_type_;
229 schaapcommon::h5parm::JonesParameters::InterpolationType interp_type_;
230 schaapcommon::h5parm::JonesParameters::MissingAntennaBehavior
231 missing_ant_behavior_;
233 schaapcommon::h5parm::SolTab* sol_tab_;
235 schaapcommon::h5parm::SolTab* sol_tab2_;
236 std::vector<casacore::String> parm_expressions_;
237 unsigned int timeslots_per_parmupdate_;
238 unsigned int timestep_;
239 double time_interval_;
241 std::vector<std::string> soltab_names_;
243 std::vector<double> params_;
245 base::Direction phase_ref_;
250 BeamData runtime_beam_data_;
251 BeamDataSingle* beam_data_{
nullptr};
252 int beam_mode{DOBEAM_NONE};
253 std::vector<int> ignore_list_;
DP3 step class to apply multiple calibration solutions.
Buffer holding the data of a timeslot/band.
Class to hold code for virtual base class for Flaggers in DP3.
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
Common interface for steps that produce model data.
Definition: Step.h:172
Definition: SagecalPredict.h:29
void finish() override
Finish the processing of this step and subsequent steps.
common::Fields getProvidedFields() const override
Definition: SagecalPredict.h:165
bool process(std::unique_ptr< dp3::base::DPBuffer > buffer) override
buffer, copies the buffer and change its data.
void show(std::ostream &) const override
Show the step parameters.
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: SagecalPredict.h:155
void showTimings(std::ostream &os, double duration) const override
base::Direction GetFirstDirection() const override
SagecalPredict(const common::ParameterSet &, const std::string &prefix, const std::vector< std::string > &given_source_patterns, MsType input_type=MsType::kRegular)
~SagecalPredict() override
void updateInfo(const base::DPInfo &) override
Update the general info.
SagecalPredict(const common::ParameterSet &, const std::string &prefix, MsType input_type=MsType::kRegular)
static constexpr dp3::common::Fields kUvwField
Definition: Step.h:66
MsType
To check compatibility between steps before running.
Definition: Step.h:57
static constexpr dp3::common::Fields kDataField
Definition: Step.h:60
BaseTimer< std::chrono::steady_clock > NSTimer
Definition: Timer.h:129
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
A direction on the celestial sphere.
Definition: Direction.h:15