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_; }
146 telescope_name_ = telescope_name;
150 void SetObserver(
const std::string& observer) { observer_ = observer; }
153 void SetFieldName(
const std::string& field_name) { field_name_ = field_name; }
156 unsigned int ncorr()
const {
return n_correlations_; }
162 unsigned int nchan()
const {
return n_channels_; }
167 unsigned int startchan()
const {
return start_channel_; }
172 unsigned int origNChan()
const {
return original_n_channels_; }
173 unsigned int nchanAvg()
const {
return channel_averaging_factor_; }
174 unsigned int nantenna()
const {
return antenna_names_.size(); }
176 unsigned int ntime()
const {
return n_times_; }
177 unsigned int ntimeAvg(
unsigned int baseline = 0)
const {
178 return time_averaging_factors_[baseline];
181 return time_averaging_factors_;
183 double startTime()
const {
return first_time_ - 0.5 * time_interval_; }
193 return bda_interval_factor_is_integer_;
195 const std::vector<int>&
getAnt1()
const {
return antenna1_; }
196 const std::vector<int>&
getAnt2()
const {
return antenna2_; }
198 return antenna_names_;
201 const std::vector<double>&
antennaDiam()
const {
return antenna_diameters_; }
203 return antenna_positions_;
205 const casacore::MPosition&
arrayPos()
const {
return array_position_; }
207 return copyMeasure(casacore::MeasureHolder(array_position_)).asMPosition();
210 return original_phase_center_;
212 const casacore::MDirection&
phaseCenter()
const {
return phase_center_; }
214 return copyMeasure(casacore::MeasureHolder(phase_center_)).asMDirection();
218 const casacore::MDirection&
delayCenter()
const {
return delay_center_; }
220 return copyMeasure(casacore::MeasureHolder(delay_center_)).asMDirection();
223 return tile_beam_direction_;
226 return copyMeasure(casacore::MeasureHolder(tile_beam_direction_))
229 const std::vector<double>&
chanFreqs(std::size_t baseline = 0)
const {
230 return channel_frequencies_[baseline];
233 return channel_frequencies_;
235 const std::vector<double>&
chanWidths(std::size_t baseline = 0)
const {
236 return channel_widths_[baseline];
239 return channel_widths_;
241 const std::vector<double>&
resolutions(std::size_t baseline = 0)
const {
242 return resolutions_[baseline];
244 const std::vector<double>&
effectiveBW(std::size_t baseline = 0)
const {
245 return effective_bandwidth_[baseline];
248 return channel_frequencies_.size() ==
nbaselines();
250 double totalBW()
const {
return total_bandwidth_; }
251 double refFreq()
const {
return reference_frequency_; }
256 const std::vector<int>&
antennaUsed()
const {
return antennas_used_; }
261 const std::vector<int>&
antennaMap()
const {
return antenna_map_; }
287 return beam_correction_direction_;
290 beam_correction_direction_ = dir;
297 return polarizations_;
301 return extra_directions_;
305 return extra_directions_;
313 static casacore::MeasureHolder copyMeasure(
314 const casacore::MeasureHolder fromMeas);
317 std::string ms_name_;
318 std::string data_column_name_;
319 std::string flag_column_name_;
320 std::string weight_column_name_;
321 std::string antenna_set_;
322 std::string telescope_name_;
323 std::string observer_;
324 std::string field_name_;
325 unsigned int n_correlations_;
326 unsigned int start_channel_;
327 unsigned int original_n_channels_;
328 unsigned int n_channels_;
329 unsigned int channel_averaging_factor_;
330 std::vector<unsigned int> time_averaging_factors_;
334 double time_interval_;
336 unsigned int n_times_;
337 bool bda_interval_factor_is_integer_{
false};
339 casacore::MDirection original_phase_center_;
340 casacore::MDirection phase_center_;
341 casacore::MDirection delay_center_;
342 casacore::MDirection tile_beam_direction_;
343 std::map<std::string, Direction> extra_directions_;
346 int beam_correction_mode_;
347 casacore::MDirection beam_correction_direction_;
348 casacore::MPosition array_position_;
352 std::vector<std::vector<double>> channel_frequencies_;
353 std::vector<std::vector<double>> channel_widths_;
354 std::vector<std::vector<double>> resolutions_;
355 std::vector<std::vector<double>> effective_bandwidth_;
356 double total_bandwidth_;
357 double reference_frequency_;
358 int spectral_window_;
359 std::vector<std::string> antenna_names_;
360 std::vector<double> antenna_diameters_;
361 std::vector<casacore::MPosition> antenna_positions_;
362 std::vector<int> antennas_used_;
363 std::vector<int> antenna_map_;
365 std::vector<int> antenna1_;
367 std::vector<int> antenna2_;
368 mutable std::vector<double> baseline_lengths_;
370 mutable std::vector<int> auto_correlation_indices_;
371 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:225
const std::string & weightColumnName() const
Definition: DPInfo.h:142
double refFreq() const
Definition: DPInfo.h:251
const casacore::MDirection & beamCorrectionDir() const
Definition: DPInfo.h:286
DPInfo(unsigned int n_correlations=0, unsigned int n_original_channels=0, std::string antenna_set=std::string())
void SetObserver(const std::string &observer)
Definition: DPInfo.h:150
const std::vector< int > & getAnt2() const
Definition: DPInfo.h:196
const std::vector< std::string > & antennaNames() const
Definition: DPInfo.h:197
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:252
const casacore::MDirection delayCenterCopy() const
Definition: DPInfo.h:219
unsigned int nchan() const
Definition: DPInfo.h:162
const std::vector< int > & antennaUsed() const
Definition: DPInfo.h:256
std::map< std::string, Direction > & GetDirections()
Definition: DPInfo.h:304
unsigned int nantenna() const
Definition: DPInfo.h:174
unsigned int nchanAvg() const
Definition: DPInfo.h:173
const casacore::MDirection & originalPhaseCenter() const
Definition: DPInfo.h:209
const std::set< aocommon::PolarizationEnum > & polarizations() const
Definition: DPInfo.h:296
const casacore::MDirection & tileBeamDir() const
Definition: DPInfo.h:222
const std::string & GetObserver() const
Definition: DPInfo.h:151
const std::vector< std::vector< double > > & BdaChanFreqs() const
Definition: DPInfo.h:232
const std::vector< double > & effectiveBW(std::size_t baseline=0) const
Definition: DPInfo.h:244
unsigned int ntime() const
Definition: DPInfo.h:176
const std::string & GetTelescopeName() const
Definition: DPInfo.h:148
double totalBW() const
Definition: DPInfo.h:250
double firstTime() const
Definition: DPInfo.h:184
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:279
const std::vector< double > & antennaDiam() const
Definition: DPInfo.h:201
const casacore::MDirection phaseCenterCopy() const
Definition: DPInfo.h:213
const std::vector< std::vector< double > > & BdaChanWidths() const
Definition: DPInfo.h:238
const casacore::MPosition & arrayPos() const
Definition: DPInfo.h:205
unsigned int update(unsigned int chanAvg, unsigned int timeAvg)
unsigned int ntimeAvg(unsigned int baseline=0) const
Definition: DPInfo.h:177
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)
const std::string & GetFieldName() const
Definition: DPInfo.h:154
bool metaChanged() const
Has the meta data been changed in a step (precluding an update)?
Definition: DPInfo.h:264
unsigned int origNChan() const
Definition: DPInfo.h:172
void RemoveUnusedAntennas()
Remove unused stations from the antenna lists.
const std::map< std::string, Direction > & GetDirections() const
Definition: DPInfo.h:300
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:268
void setPhaseCenter(const casacore::MDirection &phase_center)
Definition: DPInfo.h:130
bool hasBDAChannels() const
Definition: DPInfo.h:247
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:284
bool channelsAreRegular() const
Determine if the channels have a regular layout.
const casacore::MPosition arrayPosCopy() const
Definition: DPInfo.h:206
const std::vector< unsigned int > & ntimeAvgs() const
Definition: DPInfo.h:180
const std::vector< double > & chanFreqs(std::size_t baseline=0) const
Definition: DPInfo.h:229
unsigned int nbaselines() const
Definition: DPInfo.h:175
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:218
void setPolarizations(const std::set< aocommon::PolarizationEnum > &polarizations)
Definition: DPInfo.h:134
unsigned int startchan() const
Definition: DPInfo.h:167
void SetTelescopeName(const std::string &telescope_name)
Definition: DPInfo.h:145
double lastTime() const
Definition: DPInfo.h:185
const std::string & dataColumnName() const
Definition: DPInfo.h:140
unsigned int ncorr() const
Definition: DPInfo.h:156
const std::vector< casacore::MPosition > & antennaPos() const
Definition: DPInfo.h:202
void setMetaChanged()
Set change of meta data.
Definition: DPInfo.h:267
const std::vector< double > & resolutions(std::size_t baseline=0) const
Definition: DPInfo.h:241
const std::vector< int > & getAnt1() const
Definition: DPInfo.h:195
double startTime() const
Definition: DPInfo.h:183
void update(std::vector< unsigned int > &&timeAvg)
Update the info for the given average factors.
void SetFieldName(const std::string &field_name)
Definition: DPInfo.h:153
const casacore::MDirection & phaseCenter() const
Definition: DPInfo.h:212
const std::vector< int > & antennaMap() const
Definition: DPInfo.h:261
double timeInterval() const
Definition: DPInfo.h:191
void setBeamCorrectionDir(const casacore::MDirection &dir)
Definition: DPInfo.h:289
void SelectChannels(unsigned int start_channel, unsigned int n_channels)
bool isBDAIntervalFactorInteger() const
Definition: DPInfo.h:192
const std::vector< double > & chanWidths(std::size_t baseline=0) const
Definition: DPInfo.h:235
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