Line data Source code
1 : //# CalMainColumns.cc: Implementation of CalMainColumns.h
2 : //# Copyright (C) 1996,1997,1998,2001,2002,2003
3 : //# Associated Universities, Inc. Washington DC, USA.
4 : //#
5 : //# This library is free software; you can redistribute it and/or modify it
6 : //# under the terms of the GNU Library General Public License as published by
7 : //# the Free Software Foundation; either version 2 of the License, or (at your
8 : //# option) any later version.
9 : //#
10 : //# This library is distributed in the hope that it will be useful, but WITHOUT
11 : //# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
12 : //# FITNESS FOR A PARTICULAR PURPOSE. See the GNU Library General Public
13 : //# License for more details.
14 : //#
15 : //# You should have received a copy of the GNU Library General Public License
16 : //# along with this library; if not, write to the Free Software Foundation,
17 : //# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
18 : //#
19 : //# Correspondence concerning AIPS++ should be addressed as follows:
20 : //# Internet email: aips2-request@nrao.edu.
21 : //# Postal address: AIPS++ Project Office
22 : //# National Radio Astronomy Observatory
23 : //# 520 Edgemont Road
24 : //# Charlottesville, VA 22903-2475 USA
25 : //#
26 : //# $Id$
27 : //----------------------------------------------------------------------------
28 :
29 : #include <synthesis/CalTables/CalMainColumns2.h>
30 :
31 : namespace casa { //# NAMESPACE CASA - BEGIN
32 :
33 : //----------------------------------------------------------------------------
34 :
35 : template<class T>
36 0 : CalMainColumns2<T>::CalMainColumns2(CalTable2& calTable)
37 : {
38 : // Construct from a calibration table
39 : // casacore::Input:
40 : // casacore::Input:
41 : // calTable const CalTable& Calibration table
42 : // Output to private data:
43 : // time_p casacore::ScalarColumn<casacore::Double>& Time
44 : // timeMeas_p casacore::ScalarMeasColumn<casacore::MEpoch>& casacore::Time as a Measure
45 : // timeEP_p casacore::ScalarColumn<casacore::Double>& Extended precision time
46 : // timeEPQuant_p casacore::ScalarQuantColumn<casacore::Double>& EP time as Quantum
47 : // interval_p casacore::ScalarColumn<casacore::Double>& casacore::Time interval
48 : // intervalQuant_p casacore::ScalarQuantColumn<casacore::Double>& casacore::Time interval as Quantum
49 : // antenna1_p casacore::ScalarColumn<casacore::Int>& Antenna 1
50 : // feed1_p casacore::ScalarColumn<casacore::Int>& Feed 1
51 : // fieldId_p casacore::ScalarColumn<casacore::Int>& Field id.
52 : // arrayId_p casacore::ScalarColumn<casacore::Int>& casacore::Array id.
53 : // obsId_p casacore::ScalarColumn<casacore::Int>& Observation id.
54 : // scanNo_p casacore::ScalarColumn<casacore::Int>& Scan no.
55 : // processorId_p casacore::ScalarColumn<casacore::Int>& Processor id.
56 : // stateId_p casacore::ScalarColumn<casacore::Int>& State id.
57 : // phaseId_p casacore::ScalarColumn<casacore::Int>& Phase id.
58 : // pulsarBin_p casacore::ScalarColumn<casacore::Int>& Pulsar bin
59 : // pulsarGateId_p casacore::ScalarColumn<casacore::Int>& Pulsar gate id.
60 : // freqGrp_p casacore::ScalarColumn<casacore::Int>& Frequency group
61 : // freqGrpName_p casacore::ScalarColumn<casacore::String>& Frequency group name
62 : // fieldName_p casacore::ScalarColumn<casacore::String>& Field name
63 : // fieldCode_p casacore::ScalarColumn<casacore::String>& Field code
64 : // sourceName_p casacore::ScalarColumn<casacore::String>& Source name
65 : // sourceCode_p casacore::ScalarColumn<casacore::String>& Source code
66 : // calGrp_p casacore::ScalarColumn<casacore::Int>& Calibration group
67 : // gain_p casacore::ArrayColumn<casacore::Complex>& Gain
68 : // refAnt_p casacore::ArrayColumn<casacore::Int>& Reference antenna
69 : // refFeed_p casacore::ArrayColumn<casacore::Int>& Reference feed
70 : // refReceptor_p casacore::ArrayColumn<casacore::Int>& Reference receptor
71 : // refFreq_p casacore::ArrayColumn<casacore::Double>& Reference frequency
72 : // refFreqMeas_p casacore::ArrayMeasColumn<casacore::MFrequency>& Ref. freq. as Measure
73 : // measFreqRef_p casacore::ScalarColumn<casacore::Int>& Frequency measures ref.
74 : // refDir_p casacore::ArrayColumn<casacore::Double>& Reference direction
75 : // refDirMeas_p casacore::ArrayMeasColumn<casacore::MDirection>& Ref. dir. as Measure
76 : // measDirRef_p casacore::ScalarColumn<casacore::Int>& Direction measures ref.
77 : // calDescId_p casacore::ScalarColumn<casacore::Int>& CAL_DESC id.
78 : // calHistoryId_p casacore::ScalarColumn<casacore::Int>& CAL_HISTORY id.
79 : //
80 : // Attach all the column accessors (including required and
81 : // optional columns)
82 0 : attach (calTable, time_p, MSC::TIME);
83 0 : attach (calTable, timeMeas_p, MSC::TIME);
84 0 : attach (calTable, timeEP_p, MSC::TIME_EXTRA_PREC, true);
85 0 : attach (calTable, timeEPQuant_p, MSC::TIME_EXTRA_PREC, true);
86 0 : attach (calTable, interval_p, MSC::INTERVAL);
87 0 : attach (calTable, intervalQuant_p, MSC::INTERVAL);
88 0 : attach (calTable, antenna1_p, MSC::ANTENNA1);
89 0 : attach (calTable, feed1_p, MSC::FEED1);
90 0 : attach (calTable, fieldId_p, MSC::FIELD_ID);
91 0 : attach (calTable, arrayId_p, MSC::ARRAY_ID);
92 0 : attach (calTable, obsId_p, MSC::OBSERVATION_ID);
93 0 : attach (calTable, scanNo_p, MSC::SCAN_NUMBER);
94 0 : attach (calTable, processorId_p, MSC::PROCESSOR_ID);
95 0 : attach (calTable, stateId_p, MSC::STATE_ID);
96 0 : attach (calTable, phaseId_p, MSC::PHASE_ID, true);
97 0 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN, true);
98 :
99 0 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID, true);
100 0 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
101 0 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
102 0 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
103 0 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
104 0 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
105 0 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
106 0 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
107 0 : attach (calTable, gain_p, MSC::GAIN);
108 0 : attach (calTable, refAnt_p, MSC::REF_ANT);
109 0 : attach (calTable, refFeed_p, MSC::REF_FEED);
110 0 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
111 0 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN);
112 :
113 0 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID);
114 0 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
115 0 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
116 0 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
117 0 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
118 0 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
119 0 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
120 0 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
121 0 : attach (calTable, gain_p, MSC::GAIN);
122 0 : attach (calTable, refAnt_p, MSC::REF_ANT);
123 0 : attach (calTable, refFeed_p, MSC::REF_FEED);
124 0 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
125 :
126 0 : attach (calTable, refFreq_p, MSC::REF_FREQUENCY);
127 0 : attach (calTable, refFreqMeas_p, MSC::REF_FREQUENCY);
128 0 : attach (calTable, measFreqRef_p, MSC::MEAS_FREQ_REF);
129 0 : attach (calTable, refDir_p, MSC::REF_DIRECTION);
130 0 : attach (calTable, refDirMeas_p, MSC::REF_DIRECTION);
131 0 : attach (calTable, measDirRef_p, MSC::MEAS_DIR_REF);
132 0 : attach (calTable, calDescId_p, MSC::CAL_DESC_ID);
133 0 : attach (calTable, calHistoryId_p, MSC::CAL_HISTORY_ID);
134 0 : };
135 :
136 : //----------------------------------------------------------------------------
137 :
138 : template<class T>
139 0 : void CalMainColumns2<T>::attach (CalTable2& calTable,
140 : casacore::TableColumn& tabCol,
141 : MSCalEnums::colDef colEnum,
142 : const casacore::Bool& optional)
143 : {
144 : // Attach a column accessor to the calibration table
145 : // casacore::Input:
146 : // calTable CalTable& Calibration table
147 : // tabCol casacore::TableColumn& casacore::Table column accessor
148 : // colEnum MSCalEnums::colDef Column enum
149 : // optional const casacore::Bool& true if optional column
150 : // Output to private data:
151 : //
152 : // Convert to column name
153 0 : casacore::String colName = MSC::fieldName (colEnum);
154 :
155 : // Check if an optional column
156 0 : if (optional) {
157 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
158 0 : tabCol.attach (asTable(calTable), colName);
159 : };
160 : } else {
161 0 : tabCol.attach (asTable(calTable), colName);
162 : };
163 0 : };
164 :
165 : //----------------------------------------------------------------------------
166 :
167 : template<class T>
168 : void CalMainColumns2<T>::attach (CalTable2& calTable,
169 : casacore::ArrayMeasColumn<casacore::MEpoch>& tabCol,
170 : MSCalEnums::colDef colEnum,
171 : const casacore::Bool& optional)
172 : {
173 : // Attach a column accessor to the calibration table
174 : // casacore::Input:
175 : // calTable CalTable& Calibration table
176 : // tabCol casacore::ArrayMeasColumn<casacore::MEpoch>& casacore::Table measures column
177 : // accessor
178 : // colEnum MSCalEnums::colDef Column enum
179 : // optional const casacore::Bool& true if optional column
180 : // Output to private data:
181 : //
182 : // Convert to column name
183 : casacore::String colName = MSC::fieldName (colEnum);
184 :
185 : // Check if an optional column
186 : if (optional) {
187 : if (asTable(calTable).tableDesc().isColumn(colName)) {
188 : tabCol.attach (asTable(calTable), colName);
189 : };
190 : } else {
191 : tabCol.attach (asTable(calTable), colName);
192 : };
193 : };
194 :
195 : //----------------------------------------------------------------------------
196 :
197 : template<class T>
198 0 : void CalMainColumns2<T>::attach (CalTable2& calTable,
199 : casacore::ArrayMeasColumn<casacore::MFrequency>& tabCol,
200 : MSCalEnums::colDef colEnum,
201 : const casacore::Bool& optional)
202 : {
203 : // Attach a column accessor to the calibration table
204 : // casacore::Input:
205 : // calTable CalTable& Calibration table
206 : // tabCol casacore::ArrayMeasColumn<casacore::MFrequency>& casacore::Table measures column
207 : // accessor
208 : // colEnum MSCalEnums::colDef Column enum
209 : // optional const casacore::Bool& true if optional column
210 : // Output to private data:
211 : //
212 : // Convert to column name
213 0 : casacore::String colName = MSC::fieldName (colEnum);
214 :
215 : // Check if an optional column
216 0 : if (optional) {
217 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
218 0 : tabCol.attach (asTable(calTable), colName);
219 : };
220 : } else {
221 0 : tabCol.attach (asTable(calTable), colName);
222 : };
223 0 : };
224 :
225 : //----------------------------------------------------------------------------
226 :
227 : template<class T>
228 0 : void CalMainColumns2<T>::attach (CalTable2& calTable,
229 : casacore::ArrayMeasColumn<casacore::MDirection>& tabCol,
230 : MSCalEnums::colDef colEnum,
231 : const casacore::Bool& optional)
232 : {
233 : // Attach a column accessor to the calibration table
234 : // casacore::Input:
235 : // calTable CalTable& Calibration table
236 : // tabCol casacore::ArrayMeasColumn<casacore::MDirection>& casacore::Table measures column
237 : // accessor
238 : // colEnum MSCalEnums::colDef Column enum
239 : // optional const casacore::Bool& true if optional column
240 : // Output to private data:
241 : //
242 : // Convert to column name
243 0 : casacore::String colName = MSC::fieldName (colEnum);
244 :
245 : // Check if an optional column
246 0 : if (optional) {
247 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
248 0 : tabCol.attach (asTable(calTable), colName);
249 : };
250 : } else {
251 0 : tabCol.attach (asTable(calTable), colName);
252 : };
253 0 : };
254 :
255 : //----------------------------------------------------------------------------
256 :
257 : template<class T>
258 0 : void CalMainColumns2<T>::attach (CalTable2& calTable,
259 : casacore::ScalarMeasColumn<casacore::MEpoch>& tabCol,
260 : MSCalEnums::colDef colEnum,
261 : const casacore::Bool& optional)
262 : {
263 : // Attach a column accessor to the calibration table
264 : // casacore::Input:
265 : // calTable CalTable& Calibration table
266 : // tabCol casacore::ScalarMeasColumn<casacore::MEpoch>& casacore::Table measures column
267 : // accessor
268 : // colEnum MSCalEnums::colDef Column enum
269 : // optional const casacore::Bool& true if optional column
270 : // Output to private data:
271 : //
272 : // Convert to column name
273 0 : casacore::String colName = MSC::fieldName (colEnum);
274 :
275 : // Check if an optional column
276 0 : if (optional) {
277 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
278 0 : tabCol.attach (asTable(calTable), colName);
279 : };
280 : } else {
281 0 : tabCol.attach (asTable(calTable), colName);
282 : };
283 0 : };
284 :
285 : //----------------------------------------------------------------------------
286 :
287 : template<class T>
288 0 : void CalMainColumns2<T>::attach (CalTable2& calTable,
289 : casacore::ScalarQuantColumn<casacore::Double>& tabCol,
290 : MSCalEnums::colDef colEnum,
291 : const casacore::Bool& optional)
292 : {
293 : // Attach a column accessor to the calibration table
294 : // casacore::Input:
295 : // calTable CalTable& Calibration table
296 : // tabCol casacore::ScalarQuantColumn<casacore::Double>& casacore::Table measures column accessor
297 : // colEnum MSCalEnums::colDef Column enum
298 : // optional const casacore::Bool& true if optional column
299 : // Output to private data:
300 : //
301 : // Convert to column name
302 0 : casacore::String colName = MSC::fieldName (colEnum);
303 :
304 : // Check if an optional column
305 0 : if (optional) {
306 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
307 0 : tabCol.attach (asTable(calTable), colName);
308 : };
309 : } else {
310 0 : tabCol.attach (asTable(calTable), colName);
311 : };
312 0 : };
313 :
314 : //----------------------------------------------------------------------------
315 :
316 :
317 : } //# NAMESPACE CASA - END
318 :
|