source: trunk/external/atnf/PKSIO/PKSMS2writer.h @ 1427

Last change on this file since 1427 was 1399, checked in by Malte Marquarding, 17 years ago

Mark C added brightness unit to getHeader()

File size: 8.0 KB
Line 
1//#---------------------------------------------------------------------------
2//# PKSMS2writer.h: Class to write Parkes Multibeam data to a measurementset.
3//#---------------------------------------------------------------------------
4//# Copyright (C) 2000-2007
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: PKSMS2writer.h,v 19.12 2007/11/12 03:37:56 cal103 Exp $
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 String bunit,
67        const Float  equinox,
68        const String dopplerFrame,
69        const Vector<uInt> nChan,
70        const Vector<uInt> nPol,
71        const Vector<Bool> haveXPol,
72        const Bool   haveBase);
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<Float>   tcal,
92        const String          tcalTime,
93        const Float           azimuth,
94        const Float           elevation,
95        const Float           parAngle,
96        const Float           focusAxi,
97        const Float           focusTan,
98        const Float           focusRot,
99        const Float           temperature,
100        const Float           pressure,
101        const Float           humidity,
102        const Float           windSpeed,
103        const Float           windAz,
104        const Int             refBeam,
105        const Int             beamNo,
106        const Vector<Double>  direction,
107        const Vector<Double>  scanRate,
108        const Vector<Float>   tsys,
109        const Vector<Float>   sigma,
110        const Vector<Float>   calFctr,
111        const Matrix<Float>   baseLin,
112        const Matrix<Float>   baseSub,
113        const Matrix<Float>   &spectra,
114        const Matrix<uChar>   &flagged,
115        const Complex         xCalFctr,
116        const Vector<Complex> &xPol);
117
118    // Close the MS, flushing all associated Tables.
119    virtual void close();
120
121  private:
122    MFrequency::Types cDopplerFrame;
123
124    // Measurementset main table and subtables.
125    MeasurementSet *cPKSMS;
126    MSAntenna cAntenna;
127    MSDataDescription cDataDescription;
128    MSDoppler cDoppler;
129    MSFeed cFeed;
130    MSField cField;
131    MSFlagCmd cFlagCmd;
132    MSHistory cHistory;
133    MSObservation cObservation;
134    MSPointing cPointing;
135    MSPolarization cPolarization;
136    MSProcessor cProcessor;
137    MSSource cSource;
138    MSSpectralWindow cSpectralWindow;
139    MSState cState;
140    MSSysCal cSysCal;
141    MSWeather cWeather;
142
143    // Access to measurementset table columns; we are forced to use pointers
144    // here since none of these classes have default constructors.
145    MSColumns *cMSCols;
146    MSAntennaColumns *cAntennaCols;
147    MSDataDescColumns *cDataDescCols;
148    MSDopplerColumns *cDopplerCols;
149    MSFeedColumns *cFeedCols;
150    MSFieldColumns *cFieldCols;
151    MSFlagCmdColumns *cFlagCmdCols;
152    MSHistoryColumns *cHistoryCols;
153    MSObservationColumns *cObservationCols;
154    MSPointingColumns *cPointingCols;
155    MSPolarizationColumns *cPolarizationCols;
156    MSProcessorColumns *cProcessorCols;
157    MSSourceColumns *cSourceCols;
158    MSSpWindowColumns *cSpWindowCols;
159    MSStateColumns *cStateCols;
160    MSSysCalColumns *cSysCalCols;
161    MSWeatherColumns *cWeatherCols;
162
163    ArrayColumn<Float> *cCalFctrCol;
164    ArrayColumn<Float> *cBaseLinCol;
165    ArrayColumn<Float> *cBaseSubCol;
166    ScalarColumn<Complex> *cXCalFctrCol;
167
168
169    // Add an entry to the ANTENNA subtable.
170    Int addAntennaEntry(
171        const String antName,
172        const Vector<Double> &antPosition);
173
174    // Add an entry to the DATA_DESCRIPTION subtable.
175    Int addDataDescriptionEntry(
176        const Int iIF);
177
178    // Add an entry to the DOPPLER subtable.
179    Int addDopplerEntry();
180
181    // Add an entry to the FEED subtable.
182    Int addFeedEntry();
183
184    // Add an entry to the FIELD subtable.
185    Int addFieldEntry(
186        const String fieldName,
187        const Double mjd,
188        const Vector<Double> direction,
189        const Vector<Double> scanRate,
190        const Int srcId);
191
192    // Skip FLAG_CMD subtable.
193
194    // Skip FREQ_OFFSET subtable.
195
196    // Skip HISTORY subtable.
197
198    // Add an entry to the OBSERVATION subtable.
199    Int addObservationEntry(
200        const String observer,
201        const String project);
202
203    // Add an entry to the POINTING subtable.
204    Int addPointingEntry(
205        const Double mjd,
206        const Double interval,
207        const String fieldName,
208        const Vector<Double> direction,
209        const Vector<Double> scanRate);
210
211    // Add an entry to the POLARIZATION subtable.
212    Int addPolarizationEntry(
213        const Int iIF,
214        const Int nPol);
215
216    // Add an entry to the PROCESSOR subtable.
217    Int addProcessorEntry();
218
219    // Add an entry to the SOURCE subtable.
220    Int addSourceEntry(
221        const String name,
222        const Vector<Double> direction,
223        const Vector<Double> properMotion,
224        const Double restFreq,
225        const Double radialVelocity);
226
227    // Add an entry to the SPECTRAL_WINDOW subtable.
228    Int addSpectralWindowEntry(
229        const Int iIF,
230        const Int nChan,
231        const Double refFreq,
232        const Double bandwidth,
233        const Double freqInc);
234
235    // Add an entry to the STATE subtable.
236    Int addStateEntry(
237        const String obsMode);
238
239    // Add an entry to the SYSCAL subtable.
240    Int addSysCalEntry(
241        const Int beamNo,
242        const Int spWinId,
243        const Double mjd,
244        const Double interval,
245        const Vector<Float> Tcal,
246        const Vector<Float> Tsys);
247
248    // Add an entry to the WEATHER subtable.
249    Int addWeatherEntry(
250        const Double mjd,
251        const Double interval,
252        const Double pressure,
253        const Double humidity,
254        const Double temperature);
255};
256
257#endif
Note: See TracBrowser for help on using the repository browser.