9 #ifndef DP3_STEPS_GAINCAL_H_
10 #define DP3_STEPS_GAINCAL_H_
15 #include <xtensor/containers/xtensor.hpp>
17 #include <schaapcommon/h5parm/h5parm.h>
20 #define H5Acreate_vers 2
21 #define H5Tarray_create_vers 2
22 #define H5Dcreate_vers 2
23 #define H5Gcreate_vers 2
62 bool process(std::unique_ptr<base::DPBuffer>)
override;
68 void show(std::ostream&)
const override;
70 void showTimings(std::ostream&,
double duration)
const override;
73 static std::vector<schaapcommon::h5parm::SolTab>
makeSolTab(
75 std::vector<schaapcommon::h5parm::AxisInfo>& axes);
89 const xt::xtensor<std::complex<float>, 3>& invsol);
92 xt::xtensor<std::complex<float>, 3> invertSol(
93 const xt::xtensor<std::complex<float>, 3>& sol);
105 std::string parmName();
108 void setAntennaUsed();
112 void writeSolutionsParmDB(
double startTime);
116 void writeSolutionsH5Parm(
double startTime);
121 std::vector<std::unique_ptr<base::DPBuffer>> itsBuffers;
122 bool itsUseModelColumn;
123 std::string itsModelColumnName;
124 std::string itsParmDBName;
126 std::shared_ptr<parmdb::ParmDB> itsParmDB;
127 std::string itsParsetString;
131 unsigned int itsDebugLevel;
132 bool itsDetectStalling;
134 bool itsApplySolution;
137 std::vector<xt::xtensor<std::complex<float>, 3>> itsSols;
139 std::vector<xt::xtensor<double, 2>> itsTECSols;
140 std::vector<double> itsFreqData;
142 std::vector<std::unique_ptr<PhaseFitter>> itsPhaseFitters;
144 std::vector<base::GainCalAlgorithm> algorithms_;
147 std::shared_ptr<ResultStep>
153 std::shared_ptr<Step> itsFirstSubStep;
154 std::shared_ptr<ResultStep> itsResultStep;
157 bool itsApplyBeamToModelColumn;
160 casacore::Vector<bool> itsSelectedBL;
162 casacore::Vector<bool> itsAntennaUsed;
165 std::map<std::string, int> itsParmIdMap;
167 unsigned int itsMaxIter;
169 bool itsPropagateSolutions;
170 unsigned int itsSolInt;
171 unsigned int itsNChan;
172 unsigned int itsNFreqCells;
174 unsigned int itsTimeSlotsPerParmUpdate;
175 unsigned int itsConverged;
176 unsigned int itsNonconverged;
177 unsigned int itsFailed;
178 unsigned int itsStalled;
179 std::vector<unsigned int>
182 unsigned int itsStepInParmUpdate;
183 double itsChunkStartTime;
184 unsigned int itsStepInSolInt;
187 xt::xtensor<std::complex<double>, 6> itsAllSolutions;
194 std::string itsModelDataName;
Class to handle the baseline selection.
DPPP step class to apply a calibration correction to the data.
Base class for a table holding parameters.
DP3 step class to flag data on UVW coordinates.
Class containing a few static functions to parse a baseline selection string.
Definition: BaselineSelection.h:47
Buffer holding the data of a timeslot/band.
Definition: DPBuffer.h:92
xt::xtensor< bool, 3 > FlagsType
Definition: DPBuffer.h:97
xt::xtensor< float, 3 > WeightsType
Definition: DPBuffer.h:96
aocommon::xt::UTensor< std::complex< float >, 3 > DataType
Definition: DPBuffer.h:95
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
This class is a Step class to calibrate (direction independent) gains.
Definition: GainCal.h:43
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: GainCal.h:49
void finish() override
Finish the processing of this step and subsequent steps.
void updateInfo(const base::DPInfo &) override
void showTimings(std::ostream &, double duration) const override
common::Fields getProvidedFields() const override
Definition: GainCal.h:54
GainCal(const common::ParameterSet &parset, const std::string &prefix)
static std::vector< schaapcommon::h5parm::SolTab > makeSolTab(schaapcommon::h5parm::H5Parm &h5parm, base::CalType caltype, std::vector< schaapcommon::h5parm::AxisInfo > &axes)
Make a soltab with the given type.
bool process(std::unique_ptr< base::DPBuffer >) 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
DP3 step class to flag data on UVW coordinates.
Definition: UVWFlagger.h:38
common::Fields getRequiredFields() const override
Get the fields required by the current step.
Definition: UVWFlagger.h:50
CalType
Definition: CalType.h:11
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53