DP3
SubtableWriter.h
Go to the documentation of this file.
1 // Copyright (C) 2023 ASTRON (Netherlands Institute for Radio Astronomy)
2 // SPDX-License-Identifier: GPL-3.0-or-later
3 
9 
12 
13 #ifndef DP3_BASE_SUBTABLEWRITER_H_
14 #define DP3_BASE_SUBTABLEWRITER_H_
15 
16 #include <array>
17 #include <complex>
18 #include <string>
19 #include <vector>
20 
21 #include <casacore/casa/Arrays/Cube.h>
22 #include <casacore/casa/Containers/Record.h>
23 #include <casacore/ms/MeasurementSets/MeasurementSet.h>
24 #include <casacore/tables/DataMan/IncrementalStMan.h>
25 #include <casacore/tables/Tables/ArrColDesc.h>
26 #include <casacore/tables/Tables/ArrayColumn.h>
27 #include <casacore/tables/Tables/ScaColDesc.h>
28 #include <casacore/tables/Tables/ScalarColumn.h>
29 #include <casacore/tables/Tables/SetupNewTab.h>
30 #include <casacore/tables/Tables/TableRecord.h>
31 
32 namespace dp3::base {
33 
35  public:
36  struct AntennaInfo {
37  std::string name, station;
38  std::string type, mount;
39  double x, y, z;
40  double diameter;
41  bool flag;
42  };
43 
44  struct ChannelInfo {
46  double channel_width;
48  double resolution;
49  };
50 
51  struct SourceInfo {
52  int source_id;
53  double time;
54  double interval;
56  int num_lines;
57  std::string name;
59  std::string code;
60  double ra;
61  double dec;
62  double proper_motion[2];
63  };
64 
65  struct FieldInfo {
66  std::string name;
67  std::string code;
68  double time;
69  int num_poly;
76  int source_id;
77  bool flag_row;
78  };
79 
80  struct ObservationInfo {
81  std::string telescope_name;
82  double start_time;
83  double end_time;
84  std::string observer;
85  std::string schedule_type;
86  std::string project;
87  double release_date;
88  bool flag_row;
89  std::string antenna_type;
90  // RCU -> ReCeiver Unit
91  int rcu_mode;
93  };
94 
96  SubtableWriter(std::string path, const int nr_channels = 1);
97 
99  void WriteBandInfo(const std::string &name,
100  const std::vector<ChannelInfo> &channels,
101  double reference_frequency, double total_bandwidth,
102  bool flag_row);
103  void WriteAntennas(const std::vector<AntennaInfo> &antennas,
104  const std::array<double, 9> &coordinate_axes, double time);
105  void WriteLinearPolarizations(bool flagRow, const int n_pol = 4);
106  void WriteSource(const SourceInfo &source);
107  void WriteField(const FieldInfo &field);
108  void WriteObservation(const ObservationInfo &observation);
109  void WriteHistoryItem(const std::string &commandLine,
110  const std::string &application,
111  const std::vector<std::string> &params);
112  const std::string &GetPath() { return path_; }
113 
114  private:
115  void WriteDataDescEntry(size_t spectral_window_id, size_t polarization_id,
116  bool flag_row);
117  void WriteFeedEntries(const std::vector<AntennaInfo> &antennas, double time);
118  std::string path_;
119  casacore::MeasurementSet ms_;
120 };
121 } // namespace dp3::base
122 #endif // DP3_BASE_SUBTABLEWRITER_H_
Definition: SubtableWriter.h:34
void WriteBandInfo(const std::string &name, const std::vector< ChannelInfo > &channels, double reference_frequency, double total_bandwidth, bool flag_row)
void WriteAntennas(const std::vector< AntennaInfo > &antennas, const std::array< double, 9 > &coordinate_axes, double time)
void WriteField(const FieldInfo &field)
void WriteObservation(const ObservationInfo &observation)
~SubtableWriter()
Definition: SubtableWriter.h:98
void WriteLinearPolarizations(bool flagRow, const int n_pol=4)
SubtableWriter()
Definition: SubtableWriter.h:95
void WriteHistoryItem(const std::string &commandLine, const std::string &application, const std::vector< std::string > &params)
const std::string & GetPath()
Definition: SubtableWriter.h:112
SubtableWriter(std::string path, const int nr_channels=1)
void WriteSource(const SourceInfo &source)
Definition: Apply.h:15
Definition: SubtableWriter.h:36
double x
Definition: SubtableWriter.h:39
std::string type
Definition: SubtableWriter.h:38
bool flag
Definition: SubtableWriter.h:41
double z
Definition: SubtableWriter.h:39
double y
Definition: SubtableWriter.h:39
std::string mount
Definition: SubtableWriter.h:38
std::string station
Definition: SubtableWriter.h:37
double diameter
Definition: SubtableWriter.h:40
std::string name
Definition: SubtableWriter.h:37
Definition: SubtableWriter.h:44
double channel_frequency
Definition: SubtableWriter.h:45
double effective_bandwidth
Definition: SubtableWriter.h:47
double channel_width
Definition: SubtableWriter.h:46
double resolution
Definition: SubtableWriter.h:48
Definition: SubtableWriter.h:65
double time
Definition: SubtableWriter.h:68
std::string code
Definition: SubtableWriter.h:67
int num_poly
Definition: SubtableWriter.h:69
double reference_direction_dec
Definition: SubtableWriter.h:75
double delay_direction_ra
Definition: SubtableWriter.h:70
std::string name
Definition: SubtableWriter.h:66
bool flag_row
Definition: SubtableWriter.h:77
double delay_direction_dec
Definition: SubtableWriter.h:71
double reference_direction_ra
Definition: SubtableWriter.h:74
double phase_direction_dec
Definition: SubtableWriter.h:73
double phase_direction_ra
Definition: SubtableWriter.h:72
int source_id
Definition: SubtableWriter.h:76
Definition: SubtableWriter.h:80
std::string project
Definition: SubtableWriter.h:86
std::string schedule_type
Definition: SubtableWriter.h:85
std::string observer
Definition: SubtableWriter.h:84
double release_date
Definition: SubtableWriter.h:87
double start_time
Definition: SubtableWriter.h:82
bool flag_row
Definition: SubtableWriter.h:88
int rcu_mode
Definition: SubtableWriter.h:91
std::string antenna_type
Definition: SubtableWriter.h:89
int flag_window_size
Definition: SubtableWriter.h:92
double end_time
Definition: SubtableWriter.h:83
std::string telescope_name
Definition: SubtableWriter.h:81
Definition: SubtableWriter.h:51
double proper_motion[2]
Definition: SubtableWriter.h:62
int source_id
Definition: SubtableWriter.h:52
int calibration_group
Definition: SubtableWriter.h:58
double time
Definition: SubtableWriter.h:53
double interval
Definition: SubtableWriter.h:54
std::string name
Definition: SubtableWriter.h:57
double ra
Definition: SubtableWriter.h:60
int spectral_window_id
Definition: SubtableWriter.h:55
double dec
Definition: SubtableWriter.h:61
int num_lines
Definition: SubtableWriter.h:56
std::string code
Definition: SubtableWriter.h:59