9 #ifndef DP3_BASE_DPINFO_H_
10 #define DP3_BASE_DPINFO_H_
14 #include <aocommon/polarization.h>
16 #include <casacore/measures/Measures/MDirection.h>
17 #include <casacore/measures/Measures/MPosition.h>
18 #include <casacore/measures/Measures/MeasureHolder.h>
19 #include <casacore/casa/Arrays/Vector.h>
20 #include <casacore/casa/Containers/Record.h>
37 explicit DPInfo(
unsigned int n_correlations = 0,
38 unsigned int n_original_channels = 0,
39 std::string antenna_set = std::string());
45 void setTimes(
double first_time,
double last_time,
double time_interval);
47 void setMsName(
const std::string& ms_name) { ms_name_ = ms_name; }
50 const std::string& data_column_name,
51 const std::string& flag_column_name,
52 const std::string& weight_column_name);
55 bda_interval_factor_is_integer_ = isIntervalInteger;
71 std::vector<double>&&
resolutions = std::vector<double>(),
72 std::vector<double>&&
effectiveBW = std::vector<double>(),
92 std::vector<std::vector<double>>(),
94 std::vector<std::vector<double>>(),
104 const std::vector<double>& antDiam,
105 const std::vector<casacore::MPosition>& antPos,
106 const std::vector<int>& ant1,
const std::vector<int>& ant2);
122 unsigned int update(
unsigned int chanAvg,
unsigned int timeAvg);
125 void update(std::vector<unsigned int>&& timeAvg);
131 phase_center_ = phase_center;
139 const std::string&
msName()
const {
return ms_name_; }
143 const std::string&
antennaSet()
const {
return antenna_set_; }
144 unsigned int ncorr()
const {
return n_correlations_; }
150 unsigned int nchan()
const {
return n_channels_; }
155 unsigned int startchan()
const {
return start_channel_; }
160 unsigned int origNChan()
const {
return original_n_channels_; }
161 unsigned int nchanAvg()
const {
return channel_averaging_factor_; }
162 unsigned int nantenna()
const {
return antenna_names_.size(); }
164 unsigned int ntime()
const {
return n_times_; }
165 unsigned int ntimeAvg(
unsigned int baseline = 0)
const {
166 return time_averaging_factors_[baseline];
169 return time_averaging_factors_;
171 double startTime()
const {
return first_time_ - 0.5 * time_interval_; }
181 return bda_interval_factor_is_integer_;
183 const std::vector<int>&
getAnt1()
const {
return antenna1_; }
184 const std::vector<int>&
getAnt2()
const {
return antenna2_; }
186 return antenna_names_;
189 const std::vector<double>&
antennaDiam()
const {
return antenna_diameters_; }
191 return antenna_positions_;
193 const casacore::MPosition&
arrayPos()
const {
return array_position_; }
195 return copyMeasure(casacore::MeasureHolder(array_position_)).asMPosition();
198 return original_phase_center_;
200 const casacore::MDirection&
phaseCenter()
const {
return phase_center_; }
202 return copyMeasure(casacore::MeasureHolder(phase_center_)).asMDirection();
206 const casacore::MDirection&
delayCenter()
const {
return delay_center_; }
208 return copyMeasure(casacore::MeasureHolder(delay_center_)).asMDirection();
211 return tile_beam_direction_;
214 return copyMeasure(casacore::MeasureHolder(tile_beam_direction_))
217 const std::vector<double>&
chanFreqs(std::size_t baseline = 0)
const {
218 return channel_frequencies_[baseline];
221 return channel_frequencies_;
223 const std::vector<double>&
chanWidths(std::size_t baseline = 0)
const {
224 return channel_widths_[baseline];
227 return channel_widths_;
229 const std::vector<double>&
resolutions(std::size_t baseline = 0)
const {
230 return resolutions_[baseline];
232 const std::vector<double>&
effectiveBW(std::size_t baseline = 0)
const {
233 return effective_bandwidth_[baseline];
236 return channel_frequencies_.size() ==
nbaselines();
238 double totalBW()
const {
return total_bandwidth_; }
239 double refFreq()
const {
return reference_frequency_; }
244 const std::vector<int>&
antennaUsed()
const {
return antennas_used_; }
249 const std::vector<int>&
antennaMap()
const {
return antenna_map_; }
275 return beam_correction_direction_;
278 beam_correction_direction_ = dir;
285 return polarizations_;
289 return extra_directions_;
293 return extra_directions_;
301 static casacore::MeasureHolder copyMeasure(
302 const casacore::MeasureHolder fromMeas);
305 std::string ms_name_;
306 std::string data_column_name_;
307 std::string flag_column_name_;
308 std::string weight_column_name_;
309 std::string antenna_set_;
310 unsigned int n_correlations_;
311 unsigned int start_channel_;
312 unsigned int original_n_channels_;
313 unsigned int n_channels_;
314 unsigned int channel_averaging_factor_;
315 std::vector<unsigned int> time_averaging_factors_;
319 double time_interval_;
321 unsigned int n_times_;
322 bool bda_interval_factor_is_integer_{
false};
324 casacore::MDirection original_phase_center_;
325 casacore::MDirection phase_center_;
326 casacore::MDirection delay_center_;
327 casacore::MDirection tile_beam_direction_;
328 std::map<std::string, Direction> extra_directions_;
331 int beam_correction_mode_;
332 casacore::MDirection beam_correction_direction_;
333 casacore::MPosition array_position_;
337 std::vector<std::vector<double>> channel_frequencies_;
338 std::vector<std::vector<double>> channel_widths_;
339 std::vector<std::vector<double>> resolutions_;
340 std::vector<std::vector<double>> effective_bandwidth_;
341 double total_bandwidth_;
342 double reference_frequency_;
343 int spectral_window_;
344 std::vector<std::string> antenna_names_;
345 std::vector<double> antenna_diameters_;
346 std::vector<casacore::MPosition> antenna_positions_;
347 std::vector<int> antennas_used_;
348 std::vector<int> antenna_map_;
350 std::vector<int> antenna1_;
352 std::vector<int> antenna2_;
353 mutable std::vector<double> baseline_lengths_;
355 mutable std::vector<int> auto_correlation_indices_;
356 std::set<aocommon::PolarizationEnum> polarizations_;
General info about DP3 data processing attributes like averaging.
Definition: DPInfo.h:35
const casacore::MDirection tileBeamDirCopy() const
Definition: DPInfo.h:213
const std::string & weightColumnName() const
Definition: DPInfo.h:142
double refFreq() const
Definition: DPInfo.h:239
const casacore::MDirection & beamCorrectionDir() const
Definition: DPInfo.h:274
DPInfo(unsigned int n_correlations=0, unsigned int n_original_channels=0, std::string antenna_set=std::string())
const std::vector< int > & getAnt2() const
Definition: DPInfo.h:184
const std::vector< std::string > & antennaNames() const
Definition: DPInfo.h:185
void setArrayInformation(const casacore::MPosition &arrayPos, const casacore::MDirection &phaseCenter, const casacore::MDirection &delayCenter, const casacore::MDirection &tileBeamDir)
void setTimeIntervalAndSteps(double timeInterval, unsigned int ntime)
Set the time interval and the number of time steps.
Definition: DPInfo.h:59
int spectralWindow() const
Definition: DPInfo.h:240
const casacore::MDirection delayCenterCopy() const
Definition: DPInfo.h:207
unsigned int nchan() const
Definition: DPInfo.h:150
const std::vector< int > & antennaUsed() const
Definition: DPInfo.h:244
std::map< std::string, Direction > & GetDirections()
Definition: DPInfo.h:292
unsigned int nantenna() const
Definition: DPInfo.h:162
unsigned int nchanAvg() const
Definition: DPInfo.h:161
const casacore::MDirection & originalPhaseCenter() const
Definition: DPInfo.h:197
const std::set< aocommon::PolarizationEnum > & polarizations() const
Definition: DPInfo.h:284
const casacore::MDirection & tileBeamDir() const
Definition: DPInfo.h:210
const std::vector< std::vector< double > > & BdaChanFreqs() const
Definition: DPInfo.h:220
const std::vector< double > & effectiveBW(std::size_t baseline=0) const
Definition: DPInfo.h:232
unsigned int ntime() const
Definition: DPInfo.h:164
double totalBW() const
Definition: DPInfo.h:238
double firstTime() const
Definition: DPInfo.h:172
const std::vector< double > & getBaselineLengths() const
Get the lengths of the baselines (in meters).
void setChannels(std::vector< double > &&chanFreqs, std::vector< double > &&chanWidths, std::vector< double > &&resolutions=std::vector< double >(), std::vector< double > &&effectiveBW=std::vector< double >(), double refFreq=0, int spectralWindow=0)
int beamCorrectionMode() const
Definition: DPInfo.h:267
const std::vector< double > & antennaDiam() const
Definition: DPInfo.h:189
const casacore::MDirection phaseCenterCopy() const
Definition: DPInfo.h:201
const std::vector< std::vector< double > > & BdaChanWidths() const
Definition: DPInfo.h:226
const casacore::MPosition & arrayPos() const
Definition: DPInfo.h:193
unsigned int update(unsigned int chanAvg, unsigned int timeAvg)
unsigned int ntimeAvg(unsigned int baseline=0) const
Definition: DPInfo.h:165
const std::string & msName() const
Definition: DPInfo.h:139
void SelectBaselines(const std::vector< unsigned int > &baselines)
void setTimes(double first_time, double last_time, double time_interval)
bool metaChanged() const
Has the meta data been changed in a step (precluding an update)?
Definition: DPInfo.h:252
unsigned int origNChan() const
Definition: DPInfo.h:160
void RemoveUnusedAntennas()
Remove unused stations from the antenna lists.
const std::map< std::string, Direction > & GetDirections() const
Definition: DPInfo.h:288
void setMsNames(const std::string &ms_name, const std::string &data_column_name, const std::string &flag_column_name, const std::string &weight_column_name)
const std::vector< std::string > GetUsedAntennaNames() const
void clearMetaChanged()
Definition: DPInfo.h:256
void setPhaseCenter(const casacore::MDirection &phase_center)
Definition: DPInfo.h:130
bool hasBDAChannels() const
Definition: DPInfo.h:235
void setMsName(const std::string &ms_name)
Definition: DPInfo.h:47
const std::vector< int > & getAutoCorrIndex() const
void setIsBDAIntervalFactorInteger(bool isIntervalInteger)
Definition: DPInfo.h:54
void setBeamCorrectionMode(int mode)
Definition: DPInfo.h:272
bool channelsAreRegular() const
Determine if the channels have a regular layout.
const casacore::MPosition arrayPosCopy() const
Definition: DPInfo.h:194
const std::vector< unsigned int > & ntimeAvgs() const
Definition: DPInfo.h:168
const std::vector< double > & chanFreqs(std::size_t baseline=0) const
Definition: DPInfo.h:217
unsigned int nbaselines() const
Definition: DPInfo.h:163
const std::string & antennaSet() const
Definition: DPInfo.h:143
void setChannels(std::vector< std::vector< double >> &&chanFreqs, std::vector< std::vector< double >> &&chanWidths, std::vector< std::vector< double >> &&resolutions=std::vector< std::vector< double >>(), std::vector< std::vector< double >> &&effectiveBW=std::vector< std::vector< double >>(), double refFreq=0, int spectralWindow=0)
const std::string & flagColumnName() const
Definition: DPInfo.h:141
const casacore::MDirection & delayCenter() const
Definition: DPInfo.h:206
void setPolarizations(const std::set< aocommon::PolarizationEnum > &polarizations)
Definition: DPInfo.h:134
unsigned int startchan() const
Definition: DPInfo.h:155
double lastTime() const
Definition: DPInfo.h:173
const std::string & dataColumnName() const
Definition: DPInfo.h:140
unsigned int ncorr() const
Definition: DPInfo.h:144
const std::vector< casacore::MPosition > & antennaPos() const
Definition: DPInfo.h:190
void setMetaChanged()
Set change of meta data.
Definition: DPInfo.h:255
const std::vector< double > & resolutions(std::size_t baseline=0) const
Definition: DPInfo.h:229
const std::vector< int > & getAnt1() const
Definition: DPInfo.h:183
double startTime() const
Definition: DPInfo.h:171
void update(std::vector< unsigned int > &&timeAvg)
Update the info for the given average factors.
const casacore::MDirection & phaseCenter() const
Definition: DPInfo.h:200
const std::vector< int > & antennaMap() const
Definition: DPInfo.h:249
double timeInterval() const
Definition: DPInfo.h:179
void setBeamCorrectionDir(const casacore::MDirection &dir)
Definition: DPInfo.h:277
void SelectChannels(unsigned int start_channel, unsigned int n_channels)
bool isBDAIntervalFactorInteger() const
Definition: DPInfo.h:180
const std::vector< double > & chanWidths(std::size_t baseline=0) const
Definition: DPInfo.h:223
void setAntennas(const std::vector< std::string > &antNames, const std::vector< double > &antDiam, const std::vector< casacore::MPosition > &antPos, const std::vector< int > &ant1, const std::vector< int > &ant2)
Set the info for the given antennae and baselines.
Direction phaseCenterDirection() const
This file has generic helper routines for testing steps.
Definition: AntennaConfig.h:53
A direction on the celestial sphere.
Definition: Direction.h:15