source: branches/alma/external/atnf/PKSIO/PKSMS2writer.h @ 1453

Last change on this file since 1453 was 1453, checked in by TakTsutsumi, 15 years ago

New Development: No

JIRA Issue: No

Ready to Release: Yes

Interface Changes: Yes

What Interface Changed: many

Test Programs: sd.scantable(), sd.scantable.save()

Put in Release Notes: N/A

Description: copied from current casapy code tree


File size: 8.2 KB
Line 
1//#---------------------------------------------------------------------------
2//# PKSMS2writer.h: Class to write Parkes Multibeam data to a measurementset.
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2000-2006
5//# Associated Universities, Inc. Washington DC, USA.
6//#
7//# This library is free software; you can redistribute it and/or modify it
8//# under the terms of the GNU Library General Public License as published by
9//# the Free Software Foundation; either version 2 of the License, or (at your
10//# option) any later version.
11//#
12//# This library is distributed in the hope that it will be useful, but WITHOUT
13//# ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
14//# FITNESS FOR A PARTICULAR PURPOSE.  See the GNU Library General Public
15//# License for more details.
16//#
17//# You should have received a copy of the GNU Library General Public License
18//# along with this library; if not, write to the Free Software Foundation,
19//# Inc., 675 Massachusetts Ave, Cambridge, MA 02139, USA.
20//#
21//# Correspondence concerning AIPS++ should be addressed as follows:
22//#        Internet email: aips2-request@nrao.edu.
23//#        Postal address: AIPS++ Project Office
24//#                        National Radio Astronomy Observatory
25//#                        520 Edgemont Road
26//#                        Charlottesville, VA 22903-2475 USA
27//#
28//# $Id$
29//#---------------------------------------------------------------------------
30
31#ifndef ATNF_PKSMS2WRITER_H
32#define ATNF_PKSMS2WRITER_H
33
34#include <atnf/PKSIO/PKSwriter.h>
35
36#include <casa/aips.h>
37#include <casa/Arrays/Matrix.h>
38#include <casa/Arrays/Vector.h>
39#include <casa/BasicSL/Complex.h>
40#include <ms/MeasurementSets/MeasurementSet.h>
41#include <ms/MeasurementSets/MSColumns.h>
42#include <casa/BasicSL/String.h>
43
44// <summary>
45// Class to write Parkes Multibeam data to a measurementset.
46// </summary>
47
48#include <casa/namespace.h>
49class PKSMS2writer : public PKSwriter
50{
51  public:
52    // Default constructor.
53    PKSMS2writer();
54
55    // Destructor.
56    virtual ~PKSMS2writer();
57
58    // Create the output MS and write static data.
59    virtual Int create(
60        const String msName,
61        const String observer,
62        const String project,
63        const String antName,
64        const Vector<Double> antPosition,
65        const String obsMode,
66        const Float  equinox,
67        const String dopplerFrame,
68        const Vector<uInt> nChan,
69        const Vector<uInt> nPol,
70        const Vector<Bool> haveXPol,
71        const Bool   haveBase,
72        const String fluxUnit);
73
74    // Write the next data record.
75    virtual Int write(
76        const Int             scanNo,
77        const Int             cycleNo,
78        const Double          mjd,
79        const Double          interval,
80        const String          fieldName,
81        const String          srcName,
82        const Vector<Double>  srcDir,
83        const Vector<Double>  srcPM,
84        const Double          srcVel,
85        const String          obsMode,
86        const Int             IFno,
87        const Double          refFreq,
88        const Double          bandwidth,
89        const Double          freqInc,
90        //const Double          restFreq,
91        const Vector<Double>  restFreq,
92        const Vector<Float>   tcal,
93        const String          tcalTime,
94        const Float           azimuth,
95        const Float           elevation,
96        const Float           parAngle,
97        const Float           focusAxi,
98        const Float           focusTan,
99        const Float           focusRot,
100        const Float           temperature,
101        const Float           pressure,
102        const Float           humidity,
103        const Float           windSpeed,
104        const Float           windAz,
105        const Int             refBeam,
106        const Int             beamNo,
107        const Vector<Double>  direction,
108        const Vector<Double>  scanRate,
109        const Vector<Float>   tsys,
110        const Vector<Float>   sigma,
111        const Vector<Float>   calFctr,
112        const Matrix<Float>   baseLin,
113        const Matrix<Float>   baseSub,
114        const Matrix<Float>   &spectra,
115        const Matrix<uChar>   &flagged,
116        const Complex         xCalFctr,
117        const Vector<Complex> &xPol);
118
119    // Close the MS, flushing all associated Tables.
120    virtual void close();
121
122  private:
123    MFrequency::Types cDopplerFrame;
124
125    // Measurementset main table and subtables.
126    MeasurementSet *cPKSMS;
127    MSAntenna cAntenna;
128    MSDataDescription cDataDescription;
129    MSDoppler cDoppler;
130    MSFeed cFeed;
131    MSField cField;
132    MSFlagCmd cFlagCmd;
133    MSHistory cHistory;
134    MSObservation cObservation;
135    MSPointing cPointing;
136    MSPolarization cPolarization;
137    MSProcessor cProcessor;
138    MSSource cSource;
139    MSSpectralWindow cSpectralWindow;
140    MSState cState;
141    MSSysCal cSysCal;
142    MSWeather cWeather;
143
144    // Access to measurementset table columns; we are forced to use pointers
145    // here since none of these classes have default constructors.
146    MSColumns *cMSCols;
147    MSAntennaColumns *cAntennaCols;
148    MSDataDescColumns *cDataDescCols;
149    MSDopplerColumns *cDopplerCols;
150    MSFeedColumns *cFeedCols;
151    MSFieldColumns *cFieldCols;
152    MSFlagCmdColumns *cFlagCmdCols;
153    MSHistoryColumns *cHistoryCols;
154    MSObservationColumns *cObservationCols;
155    MSPointingColumns *cPointingCols;
156    MSPolarizationColumns *cPolarizationCols;
157    MSProcessorColumns *cProcessorCols;
158    MSSourceColumns *cSourceCols;
159    MSSpWindowColumns *cSpWindowCols;
160    MSStateColumns *cStateCols;
161    MSSysCalColumns *cSysCalCols;
162    MSWeatherColumns *cWeatherCols;
163
164    ArrayColumn<Float> *cCalFctrCol;
165    ArrayColumn<Float> *cBaseLinCol;
166    ArrayColumn<Float> *cBaseSubCol;
167    ScalarColumn<Complex> *cXCalFctrCol;
168
169    // for handling parameters specific to GBT and other telescopes
170    Bool cGBT;
171    Bool cSMT;
172    Bool cAPEX;
173    Bool cALMA;
174
175    // Add an entry to the ANTENNA subtable.
176    Int addAntennaEntry(
177        const String antName,
178        const Vector<Double> &antPosition);
179
180    // Add an entry to the DATA_DESCRIPTION subtable.
181    Int addDataDescriptionEntry(
182        const Int iIF);
183
184    // Add an entry to the DOPPLER subtable.
185    Int addDopplerEntry();
186
187    // Add an entry to the FEED subtable.
188    Int addFeedEntry();
189
190    // Add an entry to the FIELD subtable.
191    Int addFieldEntry(
192        const String fieldName,
193        const Double mjd,
194        const Vector<Double> direction,
195        const Vector<Double> scanRate,
196        const Int srcId);
197
198    // Skip FLAG_CMD subtable.
199
200    // Skip FREQ_OFFSET subtable.
201
202    // Skip HISTORY subtable.
203
204    // Add an entry to the OBSERVATION subtable.
205    Int addObservationEntry(
206        const String observer,
207        const String project,
208        const String antName);
209
210    // Add an entry to the POINTING subtable.
211    Int addPointingEntry(
212        const Double mjd,
213        const Double interval,
214        const String fieldName,
215        const Vector<Double> direction,
216        const Vector<Double> scanRate);
217
218    // Add an entry to the POLARIZATION subtable.
219    Int addPolarizationEntry(
220        const Int iIF,
221        const Int nPol);
222
223    // Add an entry to the PROCESSOR subtable.
224    Int addProcessorEntry();
225
226    // Add an entry to the SOURCE subtable.
227    Int addSourceEntry(
228        const String name,
229        const Vector<Double> direction,
230        const Vector<Double> properMotion,
231        //const Double restFreq,
232        const Vector<Double> restFreq,
233        const Double radialVelocity);
234
235    // Add an entry to the SPECTRAL_WINDOW subtable.
236    Int addSpectralWindowEntry(
237        const Int iIF,
238        const Int nChan,
239        const Double refFreq,
240        const Double bandwidth,
241        const Double freqInc);
242
243    // Add an entry to the STATE subtable.
244    Int addStateEntry(
245        const String obsMode);
246
247    // Add an entry to the SYSCAL subtable.
248    Int addSysCalEntry(
249        const Int beamNo,
250        const Int spWinId,
251        const Double mjd,
252        const Double interval,
253        const Vector<Float> Tcal,
254        const Vector<Float> Tsys,
255        const Int nPol);
256
257    // Add an entry to the WEATHER subtable.
258    Int addWeatherEntry(
259        const Double mjd,
260        const Double interval,
261        const Double pressure,
262        const Double humidity,
263        const Double temperature);
264};
265
266#endif
Note: See TracBrowser for help on using the repository browser.