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: casa-feedback@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/CalMainColumns.h>
30 :
31 : using namespace casacore;
32 : namespace casa { //# NAMESPACE CASA - BEGIN
33 :
34 : //----------------------------------------------------------------------------
35 :
36 0 : ROCalMainColumns::ROCalMainColumns (const CalTable& calTable)
37 : {
38 : // Construct from a calibration table
39 : // Input:
40 : // calTable const CalTable& Calibration table
41 : // Output to private data:
42 : // time_p ScalarColumn<Double>& Time
43 : // timeMeas_p ROScalarMeasColumn<MEpoch>& Time as a Measure
44 : // timeEP_p ScalarColumn<Double>& Extended precision time
45 : // timeEPQuant_p ROScalarQuantColumn<Double>& EP time as Quantum
46 : // interval_p ScalarColumn<Double>& Time interval
47 : // intervalQuant_p ROScalarQuantColumn<Double>& Time interval as Quantum
48 : // antenna1_p ScalarColumn<Int>& Antenna 1
49 : // feed1_p ScalarColumn<Int>& Feed 1
50 : // fieldId_p ScalarColumn<Int>& Field id.
51 : // arrayId_p ScalarColumn<Int>& Array id.
52 : // obsId_p ScalarColumn<Int>& Observation id.
53 : // scanNo_p ScalarColumn<Int>& Scan no.
54 : // processorId_p ScalarColumn<Int>& Processor id.
55 : // stateId_p ScalarColumn<Int>& State id.
56 : // phaseId_p ScalarColumn<Int>& Phase id.
57 : // pulsarBin_p ScalarColumn<Int>& Pulsar bin
58 : // pulsarGateId_p ScalarColumn<Int>& Pulsar gate id.
59 : // freqGrp_p ScalarColumn<Int>& Frequency group
60 : // freqGrpName_p ScalarColumn<String>& Frequency group name
61 : // fieldName_p ScalarColumn<String>& Field name
62 : // fieldCode_p ScalarColumn<String>& Field code
63 : // sourceName_p ScalarColumn<String>& Source name
64 : // sourceCode_p ScalarColumn<String>& Source code
65 : // calGrp_p ScalarColumn<Int>& Calibration group
66 : // gain_p ArrayColumn<Complex>& Gain
67 : // refAnt_p ArrayColumn<Int>& Reference antenna
68 : // refFeed_p ArrayColumn<Int>& Reference feed
69 : // refReceptor_p ArrayColumn<Int>& Reference receptor
70 : // refFreq_p ArrayColumn<Double>& Reference frequency
71 : // refFreqMeas_p ROArrayMeasColumn<MFrequency>& Ref. freq. as Measure
72 : // measFreqRef_p ScalarColumn<Int>& Frequency measures ref.
73 : // refDir_p ArrayColumn<Double>& Reference direction
74 : // refDirMeas_p ROArrayMeasColumn<MDirection>& Ref. dir. as Measure
75 : // measDirRef_p ScalarColumn<Int>& Direction measures ref.
76 : // calDescId_p ScalarColumn<Int>& CAL_DESC id.
77 : // calHistoryId_p ScalarColumn<Int>& CAL_HISTORY id.
78 : //
79 : // Attach all the column accessors (including required and
80 : // optional columns)
81 0 : attach (calTable, time_p, MSC::TIME);
82 0 : attach (calTable, timeMeas_p, MSC::TIME);
83 0 : attach (calTable, timeEP_p, MSC::TIME_EXTRA_PREC, true);
84 0 : attach (calTable, timeEPQuant_p, MSC::TIME_EXTRA_PREC, true);
85 0 : attach (calTable, interval_p, MSC::INTERVAL);
86 0 : attach (calTable, intervalQuant_p, MSC::INTERVAL);
87 0 : attach (calTable, antenna1_p, MSC::ANTENNA1);
88 0 : attach (calTable, feed1_p, MSC::FEED1);
89 0 : attach (calTable, fieldId_p, MSC::FIELD_ID);
90 0 : attach (calTable, arrayId_p, MSC::ARRAY_ID);
91 0 : attach (calTable, obsId_p, MSC::OBSERVATION_ID);
92 0 : attach (calTable, scanNo_p, MSC::SCAN_NUMBER);
93 0 : attach (calTable, processorId_p, MSC::PROCESSOR_ID);
94 0 : attach (calTable, stateId_p, MSC::STATE_ID);
95 0 : attach (calTable, phaseId_p, MSC::PHASE_ID, true);
96 0 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN, true);
97 0 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID, true);
98 0 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
99 0 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
100 0 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
101 0 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
102 0 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
103 0 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
104 0 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
105 0 : attach (calTable, gain_p, MSC::GAIN);
106 0 : attach (calTable, refAnt_p, MSC::REF_ANT);
107 0 : attach (calTable, refFeed_p, MSC::REF_FEED);
108 0 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
109 0 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN);
110 0 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID);
111 0 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
112 0 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
113 0 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
114 0 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
115 0 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
116 0 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
117 0 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
118 0 : attach (calTable, gain_p, MSC::GAIN);
119 0 : attach (calTable, refAnt_p, MSC::REF_ANT);
120 0 : attach (calTable, refFeed_p, MSC::REF_FEED);
121 0 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
122 0 : attach (calTable, refFreq_p, MSC::REF_FREQUENCY);
123 0 : attach (calTable, refFreqMeas_p, MSC::REF_FREQUENCY);
124 0 : attach (calTable, measFreqRef_p, MSC::MEAS_FREQ_REF);
125 0 : attach (calTable, refDir_p, MSC::REF_DIRECTION);
126 0 : attach (calTable, refDirMeas_p, MSC::REF_DIRECTION);
127 0 : attach (calTable, measDirRef_p, MSC::MEAS_DIR_REF);
128 0 : attach (calTable, calDescId_p, MSC::CAL_DESC_ID);
129 0 : attach (calTable, calHistoryId_p, MSC::CAL_HISTORY_ID);
130 0 : };
131 :
132 : //----------------------------------------------------------------------------
133 :
134 0 : void ROCalMainColumns::attach (const CalTable& calTable,
135 : TableColumn& tabCol,
136 : MSCalEnums::colDef colEnum,
137 : const Bool& optional)
138 : {
139 : // Attach a column accessor to the calibration table
140 : // Input:
141 : // calTable const CalTable& Calibration table
142 : // tabCol TableColumn& Table column accessor
143 : // colEnum MSCalEnums::colDef Column enum
144 : // optional const Bool& true if optional column
145 : // Output to private data:
146 : //
147 : // Convert to column name
148 0 : String colName = MSC::fieldName (colEnum);
149 :
150 : // Check if an optional column
151 0 : if (optional) {
152 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
153 0 : tabCol.attach (asTable(calTable), colName);
154 : };
155 : } else {
156 0 : tabCol.attach (asTable(calTable), colName);
157 : };
158 0 : };
159 :
160 : //----------------------------------------------------------------------------
161 :
162 0 : void ROCalMainColumns::attach (const CalTable& calTable,
163 : ROArrayMeasColumn<MFrequency>& tabCol,
164 : MSCalEnums::colDef colEnum,
165 : const Bool& optional)
166 : {
167 : // Attach a column accessor to the calibration table
168 : // Input:
169 : // calTable const CalTable& Calibration table
170 : // tabCol ROArrayMeasColumn<MFrequency>& Table measures
171 : // column accessor
172 : // colEnum MSCalEnums::colDef Column enum
173 : // optional const Bool& true if optional column
174 : // Output to private data:
175 : //
176 : // Convert to column name
177 0 : String colName = MSC::fieldName (colEnum);
178 :
179 : // Check if an optional column
180 0 : if (optional) {
181 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
182 0 : tabCol.attach (asTable(calTable), colName);
183 : };
184 : } else {
185 0 : tabCol.attach (asTable(calTable), colName);
186 : };
187 0 : };
188 :
189 : //----------------------------------------------------------------------------
190 :
191 0 : void ROCalMainColumns::attach (const CalTable& calTable,
192 : ROArrayMeasColumn<MEpoch>& tabCol,
193 : MSCalEnums::colDef colEnum,
194 : const Bool& optional)
195 : {
196 : // Attach a column accessor to the calibration table
197 : // Input:
198 : // calTable const CalTable& Calibration table
199 : // tabCol ROArrayMeasColumn<MEpoch>& Table measures
200 : // column accessor
201 : // colEnum MSCalEnums::colDef Column enum
202 : // optional const Bool& true if optional column
203 : // Output to private data:
204 : //
205 : // Convert to column name
206 0 : String colName = MSC::fieldName (colEnum);
207 :
208 : // Check if an optional column
209 0 : if (optional) {
210 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
211 0 : tabCol.attach (asTable(calTable), colName);
212 : };
213 : } else {
214 0 : tabCol.attach (asTable(calTable), colName);
215 : };
216 0 : };
217 :
218 : //----------------------------------------------------------------------------
219 :
220 0 : void ROCalMainColumns::attach (const CalTable& calTable,
221 : ROArrayMeasColumn<MDirection>& tabCol,
222 : MSCalEnums::colDef colEnum,
223 : const Bool& optional)
224 : {
225 : // Attach a column accessor to the calibration table
226 : // Input:
227 : // calTable const CalTable& Calibration table
228 : // tabCol ROArrayMeasColumn<MDirection>& Table measures
229 : // column accessor
230 : // colEnum MSCalEnums::colDef Column enum
231 : // optional const Bool& true if optional column
232 : // Output to private data:
233 : //
234 : // Convert to column name
235 0 : String colName = MSC::fieldName (colEnum);
236 :
237 : // Check if an optional column
238 0 : if (optional) {
239 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
240 0 : tabCol.attach (asTable(calTable), colName);
241 : };
242 : } else {
243 0 : tabCol.attach (asTable(calTable), colName);
244 : };
245 0 : };
246 :
247 : //----------------------------------------------------------------------------
248 :
249 0 : void ROCalMainColumns::attach (const CalTable& calTable,
250 : ROScalarMeasColumn<MEpoch>& tabCol,
251 : MSCalEnums::colDef colEnum,
252 : const Bool& optional)
253 : {
254 : // Attach a column accessor to the calibration table
255 : // Input:
256 : // calTable const CalTable& Calibration table
257 : // tabCol ROScalarMeasColumn<MEpoch>& Table measures column
258 : // accessor
259 : // colEnum MSCalEnums::colDef Column enum
260 : // optional const Bool& true if optional column
261 : // Output to private data:
262 : //
263 : // Convert to column name
264 0 : String colName = MSC::fieldName (colEnum);
265 :
266 : // Check if an optional column
267 0 : if (optional) {
268 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
269 0 : tabCol.attach (asTable(calTable), colName);
270 : };
271 : } else {
272 0 : tabCol.attach (asTable(calTable), colName);
273 : };
274 0 : };
275 :
276 : //----------------------------------------------------------------------------
277 :
278 0 : void ROCalMainColumns::attach (const CalTable& calTable,
279 : ROScalarQuantColumn<Double>& tabCol,
280 : MSCalEnums::colDef colEnum,
281 : const Bool& optional)
282 : {
283 : // Attach a column accessor to the calibration table
284 : // Input:
285 : // calTable const CalTable& Calibration table
286 : // tabCol ROScalarQuantColumn<Double>& Scalar quantum column accessor
287 : // colEnum MSCalEnums::colDef Column enum
288 : // optional const Bool& true if optional column
289 : // Output to private data:
290 : //
291 : // Convert to column name
292 0 : String colName = MSC::fieldName (colEnum);
293 :
294 : // Check if an optional column
295 0 : if (optional) {
296 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
297 0 : tabCol.attach (asTable(calTable), colName);
298 : };
299 : } else {
300 0 : tabCol.attach (asTable(calTable), colName);
301 : };
302 0 : };
303 :
304 : //----------------------------------------------------------------------------
305 :
306 4 : CalMainColumns::CalMainColumns (CalTable& calTable)
307 : {
308 : // Construct from a calibration table
309 : // Input:
310 : // Input:
311 : // calTable const CalTable& Calibration table
312 : // Output to private data:
313 : // time_p ScalarColumn<Double>& Time
314 : // timeMeas_p ScalarMeasColumn<MEpoch>& Time as a Measure
315 : // timeEP_p ScalarColumn<Double>& Extended precision time
316 : // timeEPQuant_p ScalarQuantColumn<Double>& EP time as Quantum
317 : // interval_p ScalarColumn<Double>& Time interval
318 : // intervalQuant_p ScalarQuantColumn<Double>& Time interval as Quantum
319 : // antenna1_p ScalarColumn<Int>& Antenna 1
320 : // feed1_p ScalarColumn<Int>& Feed 1
321 : // fieldId_p ScalarColumn<Int>& Field id.
322 : // arrayId_p ScalarColumn<Int>& Array id.
323 : // obsId_p ScalarColumn<Int>& Observation id.
324 : // scanNo_p ScalarColumn<Int>& Scan no.
325 : // processorId_p ScalarColumn<Int>& Processor id.
326 : // stateId_p ScalarColumn<Int>& State id.
327 : // phaseId_p ScalarColumn<Int>& Phase id.
328 : // pulsarBin_p ScalarColumn<Int>& Pulsar bin
329 : // pulsarGateId_p ScalarColumn<Int>& Pulsar gate id.
330 : // freqGrp_p ScalarColumn<Int>& Frequency group
331 : // freqGrpName_p ScalarColumn<String>& Frequency group name
332 : // fieldName_p ScalarColumn<String>& Field name
333 : // fieldCode_p ScalarColumn<String>& Field code
334 : // sourceName_p ScalarColumn<String>& Source name
335 : // sourceCode_p ScalarColumn<String>& Source code
336 : // calGrp_p ScalarColumn<Int>& Calibration group
337 : // gain_p ArrayColumn<Complex>& Gain
338 : // refAnt_p ArrayColumn<Int>& Reference antenna
339 : // refFeed_p ArrayColumn<Int>& Reference feed
340 : // refReceptor_p ArrayColumn<Int>& Reference receptor
341 : // refFreq_p ArrayColumn<Double>& Reference frequency
342 : // refFreqMeas_p ArrayMeasColumn<MFrequency>& Ref. freq. as Measure
343 : // measFreqRef_p ScalarColumn<Int>& Frequency measures ref.
344 : // refDir_p ArrayColumn<Double>& Reference direction
345 : // refDirMeas_p ArrayMeasColumn<MDirection>& Ref. dir. as Measure
346 : // measDirRef_p ScalarColumn<Int>& Direction measures ref.
347 : // calDescId_p ScalarColumn<Int>& CAL_DESC id.
348 : // calHistoryId_p ScalarColumn<Int>& CAL_HISTORY id.
349 : //
350 : // Attach all the column accessors (including required and
351 : // optional columns)
352 4 : attach (calTable, time_p, MSC::TIME);
353 4 : attach (calTable, timeMeas_p, MSC::TIME);
354 4 : attach (calTable, timeEP_p, MSC::TIME_EXTRA_PREC, true);
355 4 : attach (calTable, timeEPQuant_p, MSC::TIME_EXTRA_PREC, true);
356 4 : attach (calTable, interval_p, MSC::INTERVAL);
357 4 : attach (calTable, intervalQuant_p, MSC::INTERVAL);
358 4 : attach (calTable, antenna1_p, MSC::ANTENNA1);
359 4 : attach (calTable, feed1_p, MSC::FEED1);
360 4 : attach (calTable, fieldId_p, MSC::FIELD_ID);
361 4 : attach (calTable, arrayId_p, MSC::ARRAY_ID);
362 4 : attach (calTable, obsId_p, MSC::OBSERVATION_ID);
363 4 : attach (calTable, scanNo_p, MSC::SCAN_NUMBER);
364 4 : attach (calTable, processorId_p, MSC::PROCESSOR_ID);
365 4 : attach (calTable, stateId_p, MSC::STATE_ID);
366 4 : attach (calTable, phaseId_p, MSC::PHASE_ID, true);
367 4 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN, true);
368 4 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID, true);
369 4 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
370 4 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
371 4 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
372 4 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
373 4 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
374 4 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
375 4 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
376 4 : attach (calTable, gain_p, MSC::GAIN);
377 4 : attach (calTable, refAnt_p, MSC::REF_ANT);
378 4 : attach (calTable, refFeed_p, MSC::REF_FEED);
379 4 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
380 4 : attach (calTable, pulsarBin_p, MSC::PULSAR_BIN);
381 4 : attach (calTable, pulsarGateId_p, MSC::PULSAR_GATE_ID);
382 4 : attach (calTable, freqGrp_p, MSC::FREQ_GROUP);
383 4 : attach (calTable, freqGrpName_p, MSC::FREQ_GROUP_NAME);
384 4 : attach (calTable, fieldName_p, MSC::FIELD_NAME);
385 4 : attach (calTable, fieldCode_p, MSC::FIELD_CODE);
386 4 : attach (calTable, sourceName_p, MSC::SOURCE_NAME);
387 4 : attach (calTable, sourceCode_p, MSC::SOURCE_CODE);
388 4 : attach (calTable, calGrp_p, MSC::CALIBRATION_GROUP);
389 4 : attach (calTable, gain_p, MSC::GAIN);
390 4 : attach (calTable, refAnt_p, MSC::REF_ANT);
391 4 : attach (calTable, refFeed_p, MSC::REF_FEED);
392 4 : attach (calTable, refReceptor_p, MSC::REF_RECEPTOR);
393 4 : attach (calTable, refFreq_p, MSC::REF_FREQUENCY);
394 4 : attach (calTable, refFreqMeas_p, MSC::REF_FREQUENCY);
395 4 : attach (calTable, measFreqRef_p, MSC::MEAS_FREQ_REF);
396 4 : attach (calTable, refDir_p, MSC::REF_DIRECTION);
397 4 : attach (calTable, refDirMeas_p, MSC::REF_DIRECTION);
398 4 : attach (calTable, measDirRef_p, MSC::MEAS_DIR_REF);
399 4 : attach (calTable, calDescId_p, MSC::CAL_DESC_ID);
400 4 : attach (calTable, calHistoryId_p, MSC::CAL_HISTORY_ID);
401 4 : };
402 :
403 : //----------------------------------------------------------------------------
404 :
405 220 : void CalMainColumns::attach (CalTable& calTable,
406 : TableColumn& tabCol,
407 : MSCalEnums::colDef colEnum,
408 : const Bool& optional)
409 : {
410 : // Attach a column accessor to the calibration table
411 : // Input:
412 : // calTable CalTable& Calibration table
413 : // tabCol TableColumn& Table column accessor
414 : // colEnum MSCalEnums::colDef Column enum
415 : // optional const Bool& true if optional column
416 : // Output to private data:
417 : //
418 : // Convert to column name
419 220 : String colName = MSC::fieldName (colEnum);
420 :
421 : // Check if an optional column
422 220 : if (optional) {
423 30 : if (asTable(calTable).tableDesc().isColumn(colName)) {
424 30 : tabCol.attach (asTable(calTable), colName);
425 : };
426 : } else {
427 190 : tabCol.attach (asTable(calTable), colName);
428 : };
429 220 : };
430 :
431 : //----------------------------------------------------------------------------
432 :
433 0 : void CalMainColumns::attach (CalTable& calTable,
434 : ArrayMeasColumn<MEpoch>& tabCol,
435 : MSCalEnums::colDef colEnum,
436 : const Bool& optional)
437 : {
438 : // Attach a column accessor to the calibration table
439 : // Input:
440 : // calTable CalTable& Calibration table
441 : // tabCol ArrayMeasColumn<MEpoch>& Table measures column
442 : // accessor
443 : // colEnum MSCalEnums::colDef Column enum
444 : // optional const Bool& true if optional column
445 : // Output to private data:
446 : //
447 : // Convert to column name
448 0 : String colName = MSC::fieldName (colEnum);
449 :
450 : // Check if an optional column
451 0 : if (optional) {
452 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
453 0 : tabCol.attach (asTable(calTable), colName);
454 : };
455 : } else {
456 0 : tabCol.attach (asTable(calTable), colName);
457 : };
458 0 : };
459 :
460 : //----------------------------------------------------------------------------
461 :
462 4 : void CalMainColumns::attach (CalTable& calTable,
463 : ArrayMeasColumn<MFrequency>& tabCol,
464 : MSCalEnums::colDef colEnum,
465 : const Bool& optional)
466 : {
467 : // Attach a column accessor to the calibration table
468 : // Input:
469 : // calTable CalTable& Calibration table
470 : // tabCol ArrayMeasColumn<MFrequency>& Table measures column
471 : // accessor
472 : // colEnum MSCalEnums::colDef Column enum
473 : // optional const Bool& true if optional column
474 : // Output to private data:
475 : //
476 : // Convert to column name
477 4 : String colName = MSC::fieldName (colEnum);
478 :
479 : // Check if an optional column
480 4 : if (optional) {
481 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
482 0 : tabCol.attach (asTable(calTable), colName);
483 : };
484 : } else {
485 4 : tabCol.attach (asTable(calTable), colName);
486 : };
487 4 : };
488 :
489 : //----------------------------------------------------------------------------
490 :
491 4 : void CalMainColumns::attach (CalTable& calTable,
492 : ArrayMeasColumn<MDirection>& tabCol,
493 : MSCalEnums::colDef colEnum,
494 : const Bool& optional)
495 : {
496 : // Attach a column accessor to the calibration table
497 : // Input:
498 : // calTable CalTable& Calibration table
499 : // tabCol ArrayMeasColumn<MDirection>& Table measures column
500 : // accessor
501 : // colEnum MSCalEnums::colDef Column enum
502 : // optional const Bool& true if optional column
503 : // Output to private data:
504 : //
505 : // Convert to column name
506 4 : String colName = MSC::fieldName (colEnum);
507 :
508 : // Check if an optional column
509 4 : if (optional) {
510 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
511 0 : tabCol.attach (asTable(calTable), colName);
512 : };
513 : } else {
514 4 : tabCol.attach (asTable(calTable), colName);
515 : };
516 4 : };
517 :
518 : //----------------------------------------------------------------------------
519 :
520 4 : void CalMainColumns::attach (CalTable& calTable,
521 : ScalarMeasColumn<MEpoch>& tabCol,
522 : MSCalEnums::colDef colEnum,
523 : const Bool& optional)
524 : {
525 : // Attach a column accessor to the calibration table
526 : // Input:
527 : // calTable CalTable& Calibration table
528 : // tabCol ScalarMeasColumn<MEpoch>& Table measures column
529 : // accessor
530 : // colEnum MSCalEnums::colDef Column enum
531 : // optional const Bool& true if optional column
532 : // Output to private data:
533 : //
534 : // Convert to column name
535 4 : String colName = MSC::fieldName (colEnum);
536 :
537 : // Check if an optional column
538 4 : if (optional) {
539 0 : if (asTable(calTable).tableDesc().isColumn(colName)) {
540 0 : tabCol.attach (asTable(calTable), colName);
541 : };
542 : } else {
543 4 : tabCol.attach (asTable(calTable), colName);
544 : };
545 4 : };
546 :
547 : //----------------------------------------------------------------------------
548 :
549 8 : void CalMainColumns::attach (CalTable& calTable,
550 : ScalarQuantColumn<Double>& tabCol,
551 : MSCalEnums::colDef colEnum,
552 : const Bool& optional)
553 : {
554 : // Attach a column accessor to the calibration table
555 : // Input:
556 : // calTable CalTable& Calibration table
557 : // tabCol ScalarQuantColumn<Double>& Table measures column accessor
558 : // colEnum MSCalEnums::colDef Column enum
559 : // optional const Bool& true if optional column
560 : // Output to private data:
561 : //
562 : // Convert to column name
563 8 : String colName = MSC::fieldName (colEnum);
564 :
565 : // Check if an optional column
566 8 : if (optional) {
567 4 : if (asTable(calTable).tableDesc().isColumn(colName)) {
568 4 : tabCol.attach (asTable(calTable), colName);
569 : };
570 : } else {
571 4 : tabCol.attach (asTable(calTable), colName);
572 : };
573 8 : };
574 :
575 : //----------------------------------------------------------------------------
576 :
577 :
578 : } //# NAMESPACE CASA - END
579 :
|