9 #ifndef DP3_STEPS_ONEAPPLYCAL_H_
10 #define DP3_STEPS_ONEAPPLYCAL_H_
14 #include <casacore/casa/Arrays/Cube.h>
15 #include <casacore/casa/Arrays/ArrayMath.h>
16 #include <schaapcommon/h5parm/h5parm.h>
17 #include <schaapcommon/h5parm/jonesparameters.h>
39 const std::string& defaultPrefix,
bool substep =
false,
40 std::string predictDirection =
"");
57 bool process(std::unique_ptr<base::DPBuffer> buffer)
override;
66 void show(std::ostream&)
const override;
69 void showTimings(std::ostream&,
double duration)
const override;
76 void updateParmsParmDB(
const double bufStartTime);
80 void updateParmsH5(
const double bufStartTime, hsize_t direction_index,
81 const std::string& direction_name,
82 const std::vector<double>& times);
85 void showCounts(std::ostream&)
const override;
87 void initDataArrays();
90 unsigned int nPol(schaapcommon::h5parm::SolTab& solution_table);
93 unsigned int nPol(
const std::string& parmName);
95 std::vector<double> CalculateBufferTimes(
double buffer_start_time,
99 void MakeSolutionTables(schaapcommon::h5parm::H5Parm& h5parm);
101 std::string getDirectionPatch(
const std::string& direction_name);
104 const std::string& direction_name);
109 std::string itsParmDBName;
113 bool itsParmDBOnDisk;
115 std::string itsSolSetName;
116 std::shared_ptr<parmdb::ParmFacade> itsParmDB;
117 std::string specified_correction_;
118 size_t n_polarizations_in_sol_tab_ = 0;
119 schaapcommon::h5parm::JonesParameters::MissingAntennaBehavior
120 itsMissingAntennaBehavior;
121 schaapcommon::h5parm::GainType itsCorrectType;
123 schaapcommon::h5parm::JonesParameters::InterpolationType itsInterpolationType;
124 unsigned int itsTimeSlotsPerParmUpdate;
125 bool itsUpdateWeights;
126 bool itsUseModelData;
128 unsigned int itsCount;
131 std::vector<casacore::String> itsParmExprs;
136 std::map<std::string, std::unique_ptr<schaapcommon::h5parm::JonesParameters>>
137 itsJonesParametersPerDirection;
139 unsigned int itsTimeStep;
140 unsigned int itsNCorr;
144 hsize_t itsDirection;
146 std::vector<std::string> solution_table_names_;
152 std::vector<schaapcommon::h5parm::SolTab> solution_tables_;
154 static std::mutex theirHDF5Mutex;
Buffer holding the data of a timeslot/band.
Class to keep counts of nr of flagged points.
Set of parameters to be used.
Class giving access to a parameter.
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
Class to keep counts of nr of flagged points.
Definition: FlagCounter.h:35
Implements a map of Key-Value pairs.
Definition: ParameterSet.h:31
DP3 step class to apply a calibration correction to the data.
Definition: OneApplyCal.h:34
void finish() override
Finish the processing of this step and subsequent steps.
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: OneApplyCal.h:44
OneApplyCal(const common::ParameterSet &, const std::string &prefix, const std::string &defaultPrefix, bool substep=false, std::string predictDirection="")
void showTimings(std::ostream &, double duration) const override
Show the timings.
bool invert()
Definition: OneApplyCal.h:71
common::Fields getProvidedFields() const override
Definition: OneApplyCal.h:48
void updateInfo(const base::DPInfo &) override
Update the general info.
bool process(std::unique_ptr< base::DPBuffer > buffer) override
void show(std::ostream &) const override
Show the step parameters.
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 kDataField
Definition: Step.h:60
static constexpr dp3::common::Fields kFlagsField
Definition: Step.h:62
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53