Instrument Neutral Distributed Interface INDI  2.0.2
fitsidi.h
Go to the documentation of this file.
1 /*
2 * DSP API - a digital signal processing library for astronomy usage
3 * Copyright © 2017-2022 Ilia Platone
4 *
5 * This program is free software; you can redistribute it and/or
6 * modify it under the terms of the GNU Lesser General Public
7 * License as published by the Free Software Foundation; either
8 * version 3 of the License, or (at your option) any later version.
9 *
10 * This program is distributed in the hope that it will be useful,
11 * but WITHOUT ANY WARRANTY; without even the implied warranty of
12 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13 * Lesser General Public License for more details.
14 *
15 * You should have received a copy of the GNU Lesser General Public License
16 * along with this program; if not, write to the Free Software Foundation,
17 * Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 */
19 
20 #ifndef _FITS_EXTENSION_FITSIDI_H
21 #define _FITS_EXTENSION_FITSIDI_H
22 
23 #ifdef __cplusplus
24 extern "C" {
25 #endif
26 #include <fits.h>
27 
29 
32 #define EXTFITS_STOKE_I "1"
34 #define EXTFITS_STOKE_Q "2"
36 #define EXTFITS_STOKE_U "3"
38 #define EXTFITS_STOKE_V "4"
40 #define EXTFITS_STOKE_RR "-1"
42 #define EXTFITS_STOKE_LL "-2"
44 #define EXTFITS_STOKE_RL "-3"
46 #define EXTFITS_STOKE_LR "-4"
48 #define EXTFITS_STOKE_XX "-5"
50 #define EXTFITS_STOKE_YY "-6"
52 #define EXTFITS_STOKE_XY "-7"
54 #define EXTFITS_STOKE_YX "-8"
55 
58 #define FITS_TABLE_FITSIDI_ANTENNA "ANTENNA"
60 #define FITS_TABLE_FITSIDI_ARRAY_GEOMETRY "ARRAY_GEOMETRY"
62 #define FITS_TABLE_FITSIDI_BANDPASS "BANDPASS"
64 #define FITS_TABLE_FITSIDI_BASELINE "BASELINE"
66 #define FITS_TABLE_FITSIDI_CALIBRATION "CALIBRATION"
68 #define FITS_TABLE_FITSIDI_FLAG "FLAG"
70 #define FITS_TABLE_FITSIDI_FREQUENCY "FREQUENCY"
72 #define FITS_TABLE_FITSIDI_GAIN_CURVE "GAIN_CURVE"
74 #define FITS_TABLE_FITSIDI_INTERFEROMETER_MODEL "INTERFEROMETER_MODEL"
76 #define FITS_TABLE_FITSIDI_PHASE_CAL "PHASE-CAL"
78 #define FITS_TABLE_FITSIDI_SOURCE "SOURCE"
80 #define FITS_TABLE_FITSIDI_SYSTEM_TEMPERATURE "SYSTEM_TEMPERATURE"
82 #define FITS_TABLE_FITSIDI_UV_DATA "UV_DATA"
84 #define FITS_TABLE_FITSIDI_WEATHER "WEATHER"
85 
88 #define FITSIDI_COLUMN_CORRELAT (dsp_fits_column){"CORRELAT", EXTFITS_ELEMENT_STRING.typestr, "", "", "Name/type of correlator", (char*[]){""}}
90 #define FITSIDI_COLUMN_FXCORVER (dsp_fits_column){"FXCORVER", EXTFITS_ELEMENT_STRING.typestr, "", "", "Version number of the correlator software that produced the file", (char*[]){""}}
91 
94 #define FITSIDI_KEYWORD_TABREV "TABREV"
96 #define FITSIDI_KEYWORD_OBSCODE "OBSCODE"
98 #define FITSIDI_KEYWORD_NO_STKD "NO_STKD"
100 #define FITSIDI_KEYWORD_STK_1 "STK_1"
102 #define FITSIDI_KEYWORD_NO_BAND "NO_BAND"
104 #define FITSIDI_KEYWORD_NO_CHAN "NO_CHAN"
106 #define FITSIDI_KEYWORD_REF_FREQ "REF_FREQ"
108 #define FITSIDI_KEYWORD_CHAN_BW "CHAN_BW"
110 #define FITSIDI_KEYWORD_REF_PIXL "REF_PIXL"
111 
114 #define FITSIDI_UV_DATA_AXIS_COMPLEX (dsp_fits_column){"COMPLEX", "", "", "", "Real, imaginary, weight", (char*[]){""}}
116 #define FITSIDI_UV_DATA_AXIS_STOKES (dsp_fits_column){"STOKES", "", "", "", "Stokes parameter", (char*[]){""}}
118 #define FITSIDI_UV_DATA_AXIS_FREQ (dsp_fits_column){"FREQ", "", "", EXTFITS_MEASURE_UNIT_HZ, "Frequency (spectral channel)", (char*[]){""}}
120 #define FITSIDI_UV_DATA_AXIS_BAND (dsp_fits_column){"BAND", "", "", EXTFITS_MEASURE_UNIT_HZ, "Band number", (char*[]){""}}
122 #define FITSIDI_UV_DATA_AXIS_RA (dsp_fits_column){"RA", "", "", EXTFITS_MEASURE_UNIT_DEGREE, "Right ascension of the phase center", (char*[]){""}}
124 #define FITSIDI_UV_DATA_AXIS_DEC (dsp_fits_column){"DEC", "", "", EXTFITS_MEASURE_UNIT_DEGREE, "Declination of the phase center", (char*[]){""}}
125 
128 #define FITSIDI_UV_DATA_COLUMN_UU (dsp_fits_column){"UU", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "u baseline coordinate (-SIN system)", (char*[]){""}}
130 #define FITSIDI_UV_DATA_COLUMN_VV (dsp_fits_column){"VV", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "v baseline coordinate (-SIN system)", (char*[]){""}}
132 #define FITSIDI_UV_DATA_COLUMN_WW (dsp_fits_column){"WW", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "w baseline coordinate (-SIN system)", (char*[]){""}}
134 #define FITSIDI_UV_DATA_COLUMN_UU_SIN (dsp_fits_column){"UU---SIN", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "u baseline coordinate (-SIN system)", (char*[]){""}}
136 #define FITSIDI_UV_DATA_COLUMN_VV_SIN (dsp_fits_column){"VV---SIN", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "v baseline coordinate (-SIN system)", (char*[]){""}}
138 #define FITSIDI_UV_DATA_COLUMN_WW_SIN (dsp_fits_column){"WW---SIN", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "w baseline coordinate (-SIN system)", (char*[]){""}}
140 #define FITSIDI_UV_DATA_COLUMN_UU_NCP (dsp_fits_column){"UU---NCP", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "u baseline coordinate (-NCP system)", (char*[]){""}}
142 #define FITSIDI_UV_DATA_COLUMN_VV_NCP (dsp_fits_column){"VV---NCP", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "v baseline coordinate (-NCP system)", (char*[]){""}}
144 #define FITSIDI_UV_DATA_COLUMN_WW_NCP (dsp_fits_column){"WW---NCP", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "w baseline coordinate (-NCP system)", (char*[]){""}}
146 #define FITSIDI_UV_DATA_COLUMN_DATE (dsp_fits_column){"DATE", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Julian date at 0 hours", (char*[]){""}}
148 #define FITSIDI_UV_DATA_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Time elapsed since 0 hours", (char*[]){""}}
150 #define FITSIDI_UV_DATA_COLUMN_BASELINE (dsp_fits_column){"BASELINE", "1J", "", "", "Baseline number", (char*[]){""}}
152 #define FITSIDI_UV_DATA_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
154 #define FITSIDI_UV_DATA_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
156 #define FITSIDI_UV_DATA_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup ID number", (char*[]){""}}
158 #define FITSIDI_UV_DATA_COLUMN_INTTIM (dsp_fits_column){"INTTIM", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "Integration time", (char*[]){""}}
160 #define FITSIDI_UV_DATA_COLUMN_WEIGHT(nstokes, nband) (dsp_fits_column){"WEIGHT", EXTFITS_ELEMENT_FLOAT.typestr itostr(nstokes) "," itostr(nband), "", "", "Weights", (char*[]){""}}
161 
164 #define FITSIDI_UV_DATA_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "2", (char*[]){""}}
165 
167 #define FITSIDI_UV_DATA_KEYWORD_NO_STKD (dsp_fits_keyword){"NO_STKD", EXTFITS_ELEMENT_SHORT.typestr, "", "", "The number of Stokes parameters", (char*[]){""}}
169 #define FITSIDI_UV_DATA_KEYWORD_STK_1 (dsp_fits_keyword){"STK_1", EXTFITS_ELEMENT_SHORT.typestr, "", "", "The first Stokes parameter coordinate value", (char*[]){""}}
171 #define FITSIDI_UV_DATA_KEYWORD_NO_BAND (dsp_fits_keyword){"NO_BAND", EXTFITS_ELEMENT_SHORT.typestr, "", "", "The number of bands", (char*[]){""}}
173 #define FITSIDI_UV_DATA_KEYWORD_NO_CHAN (dsp_fits_keyword){"NO_CHAN", EXTFITS_ELEMENT_SHORT.typestr, "", "", "The number of spectral channels per band", (char*[]){""}}
175 #define FITSIDI_UV_DATA_KEYWORD_REF_FREQ (dsp_fits_keyword){"REF_FREQ", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "The file reference frequency in Hz", (char*[]){""}}
177 #define FITSIDI_UV_DATA_KEYWORD_CHAN_BW (dsp_fits_keyword){"CHAN_BW", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "The channel bandwidth in Hz for the first band in the frequency setup with frequency ID number 1", (char*[]){""}}
179 #define FITSIDI_UV_DATA_KEYWORD_REF_PIXL (dsp_fits_keyword){"REF_PIXL", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "The reference pixel for the frequency axis", (char*[]){""}}
181 #define FITSIDI_UV_DATA_KEYWORD_EQUINOX (dsp_fits_keyword){"EQUINOX", "8A", "", "", "Mean equinox", (char*[]){""}}
183 #define FITSIDI_UV_DATA_KEYWORD_WEIGHTYP (dsp_fits_keyword){"WEIGHTYP", "8A", "", "", "Type of data weights", (char*[]){""}}
184 
187 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_ANNAME (dsp_fits_column){"ANNAME", "8A", "", "", "Antenna name", (char*[]){""}}
189 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_STABXYZ (dsp_fits_column){"STABXYZ", "3D", EXTFITS_MEASURE_UNIT_METER, "", "Antenna station coordinates (x, y, z)", (char*[]){""}}
191 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_DERXYZ (dsp_fits_column){"DERXYZ", "3E", "meters/s", "", "First-order derivatives of the station coordinates with respect to time", (char*[]){""}}
193 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_ORBPARM(norb) (dsp_fits_column){"ORBPARM", EXTFITS_ELEMENT_DOUBLE.typestr itostr(norb), "", "", "Orbital parameters", (char*[]){""}}
195 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_NOSTA (dsp_fits_column){"NOSTA", "1I", "", "", "Antenna number", (char*[]){""}}
197 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_MNTSTA (dsp_fits_column){"MNTSTA", "1J", "", "", "Mount type", (char*[]){""}}
199 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_STAXOF (dsp_fits_column){"STAXOF", "3E", EXTFITS_MEASURE_UNIT_METER, "", "Axis offset", (char*[]){""}}
201 #define FITSIDI_ARRAY_GEOMETRY_COLUMN_DIAMETER (dsp_fits_column){"DIAMETER", "1E", EXTFITS_MEASURE_UNIT_METER, "", "Antenna diameter", (char*[]){""}}
202 
205 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
207 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_EXTVER (dsp_fits_keyword){"EXTVER", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Array number", (char*[]){""}}
209 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_ARRNAM (dsp_fits_keyword){"ARRNAM", EXTFITS_ELEMENT_STRING.typestr, "", "", "Array name", (char*[]){""}}
211 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_FRAME (dsp_fits_keyword){"FRAME", EXTFITS_ELEMENT_STRING.typestr, "", "", "Coordinate frame", (char*[]){""}}
213 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_ARRAYX (dsp_fits_keyword){"ARRAYX", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "x coordinate of array center (m)", (char*[]){""}}
215 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_ARRAYY (dsp_fits_keyword){"ARRAYY", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "y coordinate of array center (m)", (char*[]){""}}
217 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_ARRAYZ (dsp_fits_keyword){"ARRAYZ", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "z coordinate of array center (m)", (char*[]){""}}
219 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_NUMORB (dsp_fits_keyword){"NUMORB", EXTFITS_ELEMENT_SHORT.typestr, "", "", "norb= number orbital parameters in table", (char*[]){""}}
221 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_FREQ (dsp_fits_keyword){"FREQ", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "Reference frequency (Hz)", (char*[]){""}}
223 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_TIMESYS (dsp_fits_keyword){"TIMESYS", EXTFITS_ELEMENT_STRING.typestr, "", "", "Time system", (char*[]){""}}
225 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_RDATE (dsp_fits_keyword){"RDATE", EXTFITS_ELEMENT_DOUBLE.typestr, "", "", "Reference date", (char*[]){""}}
227 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_GSTIA0 (dsp_fits_keyword){"GSTIA0", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "GST at 0h on reference date (degrees)", (char*[]){""}}
229 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_DEGPDY (dsp_fits_keyword){"DEGPDY", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "Earth's rotation rate (degrees/day)", (char*[]){""}}
231 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_UT1UTC (dsp_fits_keyword){"UT1UTC", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "UT1 - UTC (sec)", (char*[]){""}}
233 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_IATUTC (dsp_fits_keyword){"IATUTC", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "IAT - UTC (sec)", (char*[]){""}}
235 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_POLARX (dsp_fits_keyword){"POLARX", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "x coordinate of North Pole (arc seconds)", (char*[]){""}}
237 #define FITSIDI_ARRAY_GEOMETRY_KEYWORD_POLARY (dsp_fits_keyword){"POLARY", EXTFITS_ELEMENT_FLOAT.typestr, "", "", "y coordinate of North Pole (arc seconds)", (char*[]){""}}
238 
241 #define FITSIDI_ANTENNA_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of period covered by record", (char*[]){""}}
243 #define FITSIDI_ANTENNA_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of period covered by record", (char*[]){""}}
245 #define FITSIDI_ANTENNA_COLUMN_ANNAME (dsp_fits_column){"ANNAME", "8A", "", "", "Antenna name", (char*[]){""}}
247 #define FITSIDI_ANTENNA_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
249 #define FITSIDI_ANTENNA_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
251 #define FITSIDI_ANTENNA_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
253 #define FITSIDI_ANTENNA_COLUMN_NO_LEVELS (dsp_fits_column){"NO_LEVELS", "1J", "", "", "Number of digitizer levels", (char*[]){""}}
255 #define FITSIDI_ANTENNA_COLUMN_POLTYA (dsp_fits_column){"POLTYA", "1A", "Feed A polarization label", (char*[]){""}}
257 #define FITSIDI_ANTENNA_COLUMN_POLAA(nband) (dsp_fits_column){"POLAA", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_DEGREE, "", "Feed A orientation", (char*[]){""}}
259 #define FITSIDI_ANTENNA_COLUMN_POLCALA(npcal, nband) (dsp_fits_column){"POLCALA", EXTFITS_ELEMENT_FLOAT.typestr itostr(npcal) "," itostr(nband), "", "", "Feed A polarization parameters", (char*[]){""}}
261 #define FITSIDI_ANTENNA_COLUMN_POLTYB (dsp_fits_column){"POLTYB", "1A", "Feed B polarization label", (char*[]){""}}
263 #define FITSIDI_ANTENNA_COLUMN_POLAB(nband) (dsp_fits_column){"POLAB", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_DEGREE, "", "Feed B orientation", (char*[]){""}}
265 #define FITSIDI_ANTENNA_COLUMN_POLCALB(npcal, nband) (dsp_fits_column){"POLCALB", EXTFITS_ELEMENT_FLOAT.typestr itostr(npcal) "," itostr(nband), "", "", "Feed B polarization parameters", (char*[]){""}}
267 #define FITSIDI_ANTENNA_COLUMN_BEAMFWHM(nband) (dsp_fits_column){"BEAMFWHM", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_DEGREE, "", "/ m Antenna beam fwhm", (char*[]){""}}
268 
271 #define FITSIDI_ANTENNA_POLPARM_APPROX "APPROX"
273 #define FITSIDI_ANTENNA_POLPARM_LIN "X-Y LIN"
275 #define FITSIDI_ANTENNA_POLPARM_ORI_ELP "ORI-ELP"
276 
279 #define FITSIDI_ANTENNA_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
281 #define FITSIDI_ANTENNA_KEYWORD_NOPCAL (dsp_fits_keyword){"NOPCAL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "npcal = 0 or 2, number of polarization calibration constants", (char*[]){""}}
283 #define FITSIDI_ANTENNA_KEYWORD_POLTYPE (dsp_fits_keyword){"POLTYPE", EXTFITS_ELEMENT_STRING.typestr, "", "", "The feed polarization parameterization", (char*[]){""}}
284 
287 #define FITSIDI_FREQUENCY_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
289 #define FITSIDI_FREQUENCY_COLUMN_BANDFREQ(nband) (dsp_fits_column){"BANDFREQ", EXTFITS_ELEMENT_DOUBLE.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Frequency offsets", (char*[]){""}}
291 #define FITSIDI_FREQUENCY_COLUMN_CH_WIDTH(nband) (dsp_fits_column){"CH_WIDTH", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Individual channel widths", (char*[]){""}}
293 #define FITSIDI_FREQUENCY_COLUMN_TOTAL_BANDWIDTH(nband) (dsp_fits_column){"TOTAL_BANDWIDTH", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Total bandwidths of bands", (char*[]){""}}
295 #define FITSIDI_FREQUENCY_COLUMN_SIDEBAND(nband) (dsp_fits_column){"SIDEBAND", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Sideband flag", (char*[]){""}}
296 
299 #define FITSIDI_FREQUENCY_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
300 
303 #define FITSIDI_SOURCE_VELTYP_LSR "LSR"
305 #define FITSIDI_SOURCE_VELTYP_BARYCENT "BARYCENT"
307 #define FITSIDI_SOURCE_VELTYP_GEOCENTR "GEOCENTR"
309 #define FITSIDI_SOURCE_VELTYP_TOPOCENT "TOPOCENT"
310 
313 #define FITSIDI_SOURCE_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
315 #define FITSIDI_SOURCE_COLUMN_SOURCE (dsp_fits_column){"SOURCE", "16A", "", "", "Source name", (char*[]){""}}
317 #define FITSIDI_SOURCE_COLUMN_QUAL (dsp_fits_column){"QUAL", "1J", "", "", "Source name numeric qualifier", (char*[]){""}}
319 #define FITSIDI_SOURCE_COLUMN_CALCODE (dsp_fits_column){"CALCODE", "4A", "", "", "Calibrator code", (char*[]){""}}
321 #define FITSIDI_SOURCE_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
323 #define FITSIDI_SOURCE_COLUMN_IFLUX(nband) (dsp_fits_column){"IFLUX", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Jy", "", "Stokes I flux density", (char*[]){""}}
325 #define FITSIDI_SOURCE_COLUMN_QFLUX(nband) (dsp_fits_column){"QFLUX", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Jy", "", "Stokes Q flux density", (char*[]){""}}
327 #define FITSIDI_SOURCE_COLUMN_UFLUX(nband) (dsp_fits_column){"UFLUX", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Jy", "", "Stokes U flux density", (char*[]){""}}
329 #define FITSIDI_SOURCE_COLUMN_VFLUX(nband) (dsp_fits_column){"VFLUX", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Jy", "", "Stokes V flux density", (char*[]){""}}
331 #define FITSIDI_SOURCE_COLUMN_ALPHA(nband) (dsp_fits_column){"ALPHA", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Jy", "", "Spectral index for each band", (char*[]){""}}
333 #define FITSIDI_SOURCE_COLUMN_FREQOFF(nband) (dsp_fits_column){"FREQOFF", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Frequency offset for each band", (char*[]){""}}
335 #define FITSIDI_SOURCE_COLUMN_RAEPO (dsp_fits_column){"RAEPO", "1D", EXTFITS_MEASURE_UNIT_DEGREE, "", "Right ascension at mean equinox", (char*[]){""}}
337 #define FITSIDI_SOURCE_COLUMN_DECEPO (dsp_fits_column){"DECEPO", "1D", EXTFITS_MEASURE_UNIT_DEGREE, "", "Declination at mean equinox", (char*[]){""}}
339 #define FITSIDI_SOURCE_COLUMN_EQUINOX (dsp_fits_column){"EQUINOX", "8A", "", "", "Mean equinox", (char*[]){""}}
341 #define FITSIDI_SOURCE_COLUMN_RAAPP (dsp_fits_column){"RAAPP", "1D", EXTFITS_MEASURE_UNIT_DEGREE, "", "Apparent right ascension", (char*[]){""}}
343 #define FITSIDI_SOURCE_COLUMN_DECAPP (dsp_fits_column){"DECAPP", "1D", EXTFITS_MEASURE_UNIT_DEGREE, "", "Apparent declination", (char*[]){""}}
345 #define FITSIDI_SOURCE_COLUMN_SYSVEL(nband) (dsp_fits_column){"SYSVEL", EXTFITS_ELEMENT_DOUBLE.typestr itostr(nband), "meters/sec", "", "Systemic velocity for each band", (char*[]){""}}
347 #define FITSIDI_SOURCE_COLUMN_VELTYP (dsp_fits_column){"VELTYP", "8A", "", "", "Velocity type", (char*[]){""}}
349 #define FITSIDI_SOURCE_COLUMN_VELDEF (dsp_fits_column){"VELDEF", "8A", "", "", "Velocity definition", (char*[]){""}}
351 #define FITSIDI_SOURCE_COLUMN_RESTFREQ(nband) (dsp_fits_column){"RESTFREQ", EXTFITS_ELEMENT_DOUBLE.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Line rest frequency for each band", (char*[]){""}}
353 #define FITSIDI_SOURCE_COLUMN_PMRA (dsp_fits_column){"PMRA", "1D", "degrees/day", "", "Proper motion in right ascension", (char*[]){""}}
355 #define FITSIDI_SOURCE_COLUMN_PMDEC (dsp_fits_column){"PMDEC", "1D", "degrees/day", "", "Proper motion in declination", (char*[]){""}}
357 #define FITSIDI_SOURCE_COLUMN_PARALLAX (dsp_fits_column){"PARALLAX", "1E", EXTFITS_MEASURE_UNIT_ARCSEC, "", "Parallax of source", (char*[]){""}}
359 #define FITSIDI_SOURCE_COLUMN_EPOCH (dsp_fits_column){"EPOCH", "1D", EXTFITS_MEASURE_UNIT_YEAR, "", "Epoch of observation", (char*[]){""}}
360 
363 #define FITSIDI_SOURCE_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
364 
367 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Starting time of interval", (char*[]){""}}
369 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
371 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
373 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
375 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
377 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
379 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_I_FAR_ROT (dsp_fits_column){"I.FAR.ROT", "1E", "rad m−2", "", "Ionospheric Faraday rotation", (char*[]){""}}
381 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_FREQ_VAR(nband) (dsp_fits_column){"FREQ.VAR", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Time variable frequency offsets", (char*[]){""}}
383 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_PDELAY_1(npoly, nband) (dsp_fits_column){"PDELAY_1", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), "turns", "", "Phase delay polynomials for polarization 1", (char*[]){""}}
385 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_GDELAY_1(npoly, nband) (dsp_fits_column){"GDELAY_1", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), EXTFITS_MEASURE_UNIT_SECOND, "", "Group delay polynomials for polarization 1", (char*[]){""}}
387 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_PRATE_1(npoly, nband) (dsp_fits_column){"PRATE_1", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Phase delay rate polynomials for polarization 1", (char*[]){""}}
389 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_GRATE_1(npoly, nband) (dsp_fits_column){"GRATE_1", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), "sec/sec", "", "Group delay rate polynomials for polarization 1", (char*[]){""}}
391 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_DISP_1 (dsp_fits_column){"DISP_1", "1E", EXTFITS_MEASURE_UNIT_SECOND, "", "Dispersive delay for polarization 1", (char*[]){""}}
393 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_DDISP_1 (dsp_fits_column){"DDISP_1", "1E", "sec m−2/sec", "", " Rate of change of dispersive delay for polarization 1", (char*[]){""}}
395 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_PDELAY_2(npoly, nband) (dsp_fits_column){"PDELAY_2", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), "turns", "", "Phase delay polynomials for polarization 2", (char*[]){""}}
397 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_GDELAY_2(npoly, nband) (dsp_fits_column){"GDELAY_2", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), EXTFITS_MEASURE_UNIT_SECOND, "", "Group delay polynomials for polarization 2", (char*[]){""}}
399 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_PRATE_2(npoly, nband) (dsp_fits_column){"PRATE_2", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Phase delay rate polynomials for polarization 2", (char*[]){""}}
401 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_GRATE_2(npoly, nband) (dsp_fits_column){"GRATE_2", EXTFITS_ELEMENT_DOUBLE.typestr itostr(npoly) "," itostr(nband), "sec/sec", "", "Group delay rate polynomials for polarization 2", (char*[]){""}}
403 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_DISP_2 (dsp_fits_column){"DISP_2", "1E", EXTFITS_MEASURE_UNIT_SECOND, "", "Dispersive delay for polarization 2", (char*[]){""}}
405 #define FITSIDI_INTERFEROMETER_MODEL_COLUMN_DDISP_2 (dsp_fits_column){"DDISP_2", "1E", "sec m−2/sec", "", " Rate of change of dispersive delay for polarization 2", (char*[]){""}}
406 
409 #define FITSIDI_INTERFEROMETER_MODEL_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "2", (char*[]){""}}
411 #define FITSIDI_INTERFEROMETER_MODEL_KEYWORD_NPOLY (dsp_fits_keyword){"NPOLY", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polynomial terms npoly", (char*[]){""}}
413 #define FITSIDI_INTERFEROMETER_MODEL_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations", (char*[]){""}}
414 
417 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
419 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
421 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
423 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
425 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
427 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
429 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TSYS_1(nband) (dsp_fits_column){"TSYS_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "System temperatures for polarization 1", (char*[]){""}}
431 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TANT_1(nband) (dsp_fits_column){"TANT_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "Antenna temperatures for polarization 1", (char*[]){""}}
433 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TSYS_2(nband) (dsp_fits_column){"TSYS_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "System temperatures for polarization 2", (char*[]){""}}
435 #define FITSIDI_SYSTEM_TEMPERATURE_COLUMN_TANT_2(nband) (dsp_fits_column){"TANT_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "Antenna temperatures for polarization 2", (char*[]){""}}
436 
439 #define FITSIDI_SYSTEM_TEMPERATURE_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
441 #define FITSIDI_SYSTEM_TEMPERATURE_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
442 
445 #define XY_None "0"
447 #define XY_Elevation_in_degrees "1"
449 #define XY_Zenith_angle_in_degrees "2"
451 #define XY_Hour_angle_in_degrees "3"
453 #define XY_Declination_in_degrees "4"
455 #define XY_Codeclination_in_degrees "5"
456 
459 #define spherical_harmonic_coefficients_A00 "1"
461 #define spherical_harmonic_coefficients_A10 "2"
463 #define spherical_harmonic_coefficients_A11E "3"
465 #define spherical_harmonic_coefficients_A110 "4"
467 #define spherical_harmonic_coefficients_A20 "5"
469 #define spherical_harmonic_coefficients_A21E "6"
471 #define spherical_harmonic_coefficients_A210 "7"
473 #define spherical_harmonic_coefficients_A22E "8"
475 #define spherical_harmonic_coefficients_A220 "9"
477 #define spherical_harmonic_coefficients_A30 "10"
478 
481 #define FITSIDI_GAIN_CURVE_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
483 #define FITSIDI_GAIN_CURVE_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
485 #define FITSIDI_GAIN_CURVE_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
487 #define FITSIDI_GAIN_CURVE_COLUMN_TYPE_1(nband) (dsp_fits_column){"TYPE_1", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Gain curve types for polarization 1", (char*[]){""}}
489 #define FITSIDI_GAIN_CURVE_COLUMN_NTERM_1(nband) (dsp_fits_column){"NTERM_1", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Number of terms or entries for polarization 1", (char*[]){""}}
491 #define FITSIDI_GAIN_CURVE_COLUMN_X_TYP_1(nband) (dsp_fits_column){"X_TYP_1", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "x value types for polarization 1", (char*[]){""}}
493 #define FITSIDI_GAIN_CURVE_COLUMN_Y_TYP_1(nband) (dsp_fits_column){"Y_TYP_1", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "y value types for polarization 1", (char*[]){""}}
495 #define FITSIDI_GAIN_CURVE_COLUMN_X_VAL_1(nband) (dsp_fits_column){"X_VAL_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "x values for polarization 1", (char*[]){""}}
497 #define FITSIDI_GAIN_CURVE_COLUMN_Y_VAL_1(ntab, nband) (dsp_fits_column){"Y_VAL_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntab) "," itostr(nband), "", "", "y values for polarization 1", (char*[]){""}}
499 #define FITSIDI_GAIN_CURVE_COLUMN_GAIN_1(ntab, nband) (dsp_fits_column){"GAIN_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntab) "," itostr(nband), "", "", "Relative gain values for polarization 1", (char*[]){""}}
501 #define FITSIDI_GAIN_CURVE_COLUMN_SENS_1(nband) (dsp_fits_column){"SENS_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "K/Jy", "", " Sensitivities for polarization 1", (char*[]){""}}
503 #define FITSIDI_GAIN_CURVE_COLUMN_TYPE_2(nband) (dsp_fits_column){"TYPE_2", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Gain curve types for polarization 2", (char*[]){""}}
505 #define FITSIDI_GAIN_CURVE_COLUMN_NTERM_2(nband) (dsp_fits_column){"NTERM_2", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Number of terms or entries for polarization 2", (char*[]){""}}
507 #define FITSIDI_GAIN_CURVE_COLUMN_X_TYP_2(nband) (dsp_fits_column){"X_TYP_2", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "x value types for polarization 2", (char*[]){""}}
509 #define FITSIDI_GAIN_CURVE_COLUMN_Y_TYP_2(nband) (dsp_fits_column){"Y_TYP_2", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "y value types for polarization 2", (char*[]){""}}
511 #define FITSIDI_GAIN_CURVE_COLUMN_X_VAL_2(nband) (dsp_fits_column){"X_VAL_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "x values for polarization 2", (char*[]){""}}
513 #define FITSIDI_GAIN_CURVE_COLUMN_Y_VAL_2(ntab, nband) (dsp_fits_column){"Y_VAL_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntab) "," itostr(nband), "", "", "y values for polarization 2", (char*[]){""}}
515 #define FITSIDI_GAIN_CURVE_COLUMN_GAIN_2(ntab, nband) (dsp_fits_column){"GAIN_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntab) "," itostr(nband), "", "", "Relative gain values for polarization 2", (char*[]){""}}
517 #define FITSIDI_GAIN_CURVE_COLUMN_SENS_2(nband) (dsp_fits_column){"SENS_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "K/Jy", "", " Sensitivities for polarization 2", (char*[]){""}}
518 
521 #define FITSIDI_GAIN_CURVE_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
523 #define FITSIDI_GAIN_CURVE_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
525 #define FITSIDI_GAIN_CURVE_KEYWORD_NO_TABS (dsp_fits_keyword){"NO_TABS", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of tabulated values ntab", (char*[]){""}}
526 
529 #define FITSIDI_PHASE_CAL_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
531 #define FITSIDI_PHASE_CAL_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
533 #define FITSIDI_PHASE_CAL_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
535 #define FITSIDI_PHASE_CAL_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
537 #define FITSIDI_PHASE_CAL_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
539 #define FITSIDI_PHASE_CAL_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
541 #define FITSIDI_PHASE_CAL_COLUMN_CABLE_CAL (dsp_fits_column){"CABLE_CAL", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "Cable calibration measurement", (char*[]){""}}
543 #define FITSIDI_PHASE_CAL_COLUMN_STATE_1(nband) (dsp_fits_column){"STATE_1", "E4,", nband), EXTFITS_MEASURE_UNIT_PERCENT, "", "State counts for polarization 1", (char*[]){""}}
545 #define FITSIDI_PHASE_CAL_COLUMN_PC_FREQ_1(ntone, nband) (dsp_fits_column){"PC_FREQ_1", EXTFITS_ELEMENT_DOUBLE.typestr itostr(ntone) "," itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Phase-cal tone frequencies for polarization 1", (char*[]){""}}
547 #define FITSIDI_PHASE_CAL_COLUMN_PC_REAL_1(ntone, nband) (dsp_fits_column){"PC_REAL_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "", "", "Real parts of phase-cal measurements for polarization 1", (char*[]){""}}
549 #define FITSIDI_PHASE_CAL_COLUMN_PC_IMAG_1(ntone, nband) (dsp_fits_column){"PC_IMAG_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "", "", "Imaginary parts of phase-cal measurements for polarization 1", (char*[]){""}}
551 #define FITSIDI_PHASE_CAL_COLUMN_PC_RATE_1(ntone, nband) (dsp_fits_column){"PC_RATE_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "sec/sec", "", "Phase-cal rates for polarization 1", (char*[]){""}}
553 #define FITSIDI_PHASE_CAL_COLUMN_STATE_2(nband) (dsp_fits_column){"STATE_2", "E4,", nband), EXTFITS_MEASURE_UNIT_PERCENT, "", "State counts for polarization 2", (char*[]){""}}
555 #define FITSIDI_PHASE_CAL_COLUMN_PC_FREQ_2(ntone, nband) (dsp_fits_column){"PC_FREQ_2", EXTFITS_ELEMENT_DOUBLE.typestr itostr(ntone) "," itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Phase-cal tone frequencies for polarization 2", (char*[]){""}}
557 #define FITSIDI_PHASE_CAL_COLUMN_PC_REAL_2(ntone, nband) (dsp_fits_column){"PC_REAL_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "", "", "Real parts of phase-cal measurements for polarization 2", (char*[]){""}}
559 #define FITSIDI_PHASE_CAL_COLUMN_PC_IMAG_2(ntone, nband) (dsp_fits_column){"PC_IMAG_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "", "", "Imaginary parts of phase-cal measurements for polarization 2", (char*[]){""}}
561 #define FITSIDI_PHASE_CAL_COLUMN_PC_RATE_2(ntone, nband) (dsp_fits_column){"PC_RATE_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(ntone) "," itostr(nband), "sec/sec", "", "Phase-cal rates for polarization 2", (char*[]){""}}
562 
565 #define FITSIDI_PHASE_CAL_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "2", (char*[]){""}}
567 #define FITSIDI_PHASE_CAL_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
569 #define FITSIDI_PHASE_CAL_KEYWORD_NO_TABS (dsp_fits_keyword){"NO_TABS", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of tones ntone", (char*[]){""}}
570 
573 #define severity_No_severity_level_assigned "-1"
575 #define severity_Data_are_known_to_be_useless "0"
577 #define severity_Data_are_probably_useless "1"
579 #define severity_Data_may_be_useless "2"
580 
583 #define FITSIDI_FLAG_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
585 #define FITSIDI_FLAG_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
587 #define FITSIDI_FLAG_COLUMN_ANTS (dsp_fits_column){"ANTS", "2J", "", "", "Antenna numbers", (char*[]){""}}
589 #define FITSIDI_FLAG_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
591 #define FITSIDI_FLAG_COLUMN_TIMERANG (dsp_fits_column){"TIMERANG", "2E", EXTFITS_MEASURE_UNIT_DAY, "", "Time range", (char*[]){""}}
593 #define FITSIDI_FLAG_COLUMN_BANDS(nband) (dsp_fits_column){"BANDS", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Band flags", (char*[]){""}}
595 #define FITSIDI_FLAG_COLUMN_CHANS (dsp_fits_column){"CHANS", "2J", "", "", "Channel range", (char*[]){""}}
597 #define FITSIDI_FLAG_COLUMN_PFLAGS (dsp_fits_column){"PFLAGS", "4J", "", "", "Polarization flags", (char*[]){""}}
599 #define FITSIDI_FLAG_COLUMN_REASON(n) (dsp_fits_column){"REASON" itostr(n), EXTFITS_ELEMENT_STRING.typestr, "", "", "Reason for flag", (char*[]){""}}
601 #define FITSIDI_FLAG_COLUMN_SEVERITY (dsp_fits_column){"SEVERITY", "1J", "", "", "Severity code", (char*[]){""}}
602 
605 #define FITSIDI_FLAG_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "2", (char*[]){""}}
606 
609 #define FITSIDI_WEATHER_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
611 #define FITSIDI_WEATHER_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
613 #define FITSIDI_WEATHER_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
615 #define FITSIDI_WEATHER_COLUMN_TEMPERATURE (dsp_fits_column){"TEMPERATURE", "1E", "", "", "Centigrade Surface air temperature", (char*[]){""}}
617 #define FITSIDI_WEATHER_COLUMN_PRESSURE (dsp_fits_column){"PRESSURE", "1E", "millibar", "", "Surface air pressure", (char*[]){""}}
619 #define FITSIDI_WEATHER_COLUMN_DEWPOINT (dsp_fits_column){"DEWPOINT", "1E", "", "", "Centigrade Dewpoint temperature", (char*[]){""}}
621 #define FITSIDI_WEATHER_COLUMN_WIND_VELOCITY (dsp_fits_column){"WIND_VELOCITY", "1E", "m s−1", "", " Wind velocity", (char*[]){""}}
623 #define FITSIDI_WEATHER_COLUMN_WIND_DIRECTION (dsp_fits_column){"WIND_DIRECTION", "1E", EXTFITS_MEASURE_UNIT_DEGREE, "", "Wind direction East from North", (char*[]){""}}
625 #define FITSIDI_WEATHER_COLUMN_WVR_H2O (dsp_fits_column){"WVR_H2O", "1E", "m−2", "", "Water column", (char*[]){""}}
627 #define FITSIDI_WEATHER_COLUMN_IONOS_ELECTRON (dsp_fits_column){"IONOS_ELECTRON", "1E", "m−2", "", "Electron column", (char*[]){""}}
628 
631 #define FITSIDI_WEATHER_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "2", (char*[]){""}}
633 #define FITSIDI_WEATHER_KEYWORD_RDATE (dsp_fits_keyword){"RDATE", EXTFITS_ELEMENT_DOUBLE.typestr, "", "", "Reference date", (char*[]){""}}
634 
637 #define FITSIDI_BASELINE_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
639 #define FITSIDI_BASELINE_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
641 #define FITSIDI_BASELINE_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
643 #define FITSIDI_BASELINE_COLUMN_ANTENNA_NOS (dsp_fits_column){"ANTENNA_NOS.", "2J", "", "", "Antenna numbers forming baseline", (char*[]){""}}
645 #define FITSIDI_BASELINE_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
647 #define FITSIDI_BASELINE_COLUMN_REAL_M(nstokes, nband) (dsp_fits_column){"REAL_M", EXTFITS_ELEMENT_FLOAT.typestr itostr(nstokes) "," itostr(nband), "", "", "Real part of multiplicative correction", (char*[]){""}}
649 #define FITSIDI_BASELINE_COLUMN_IMAG_M(nstokes, nband) (dsp_fits_column){"IMAG_M", EXTFITS_ELEMENT_FLOAT.typestr itostr(nstokes) "," itostr(nband), "", "", "Imaginary part of multiplicative correction", (char*[]){""}}
651 #define FITSIDI_BASELINE_COLUMN_REAL_A(nstokes, nband) (dsp_fits_column){"REAL_A", EXTFITS_ELEMENT_FLOAT.typestr itostr(nstokes) "," itostr(nband), "", "", "Real part of additive correction", (char*[]){""}}
653 #define FITSIDI_BASELINE_COLUMN_IMAG_A(nstokes, nband) (dsp_fits_column){"IMAG_A", EXTFITS_ELEMENT_FLOAT.typestr itostr(nstokes) "," itostr(nband), "", "", "Imaginary part of additive correction", (char*[]){""}}
654 
657 #define FITSIDI_BASELINE_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
659 #define FITSIDI_BASELINE_KEYWORD_NO_ANT (dsp_fits_keyword){"NO_ANT", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Maximum antenna number in the table", (char*[]){""}}
660 
663 #define FITSIDI_BANDPASS_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
665 #define FITSIDI_BANDPASS_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
667 #define FITSIDI_BANDPASS_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
669 #define FITSIDI_BANDPASS_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
671 #define FITSIDI_BANDPASS_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
673 #define FITSIDI_BANDPASS_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
675 #define FITSIDI_BANDPASS_COLUMN_BANDWIDTH (dsp_fits_column){"BANDWIDTH", "1E", EXTFITS_MEASURE_UNIT_HZ, "", "Channel bandwidth", (char*[]){""}}
677 #define FITSIDI_BANDPASS_COLUMN_BAND_FREQ(nband) (dsp_fits_column){"BAND_FREQ", EXTFITS_ELEMENT_DOUBLE.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "Frequency of each band", (char*[]){""}}
679 #define FITSIDI_BANDPASS_COLUMN_REFANT_1 (dsp_fits_column){"REFANT_1", "1J", "", "", "Reference antenna for polarization 1", (char*[]){""}}
681 #define FITSIDI_BANDPASS_COLUMN_BREAL_1(nbach, nband) (dsp_fits_column){"BREAL_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nbach) "," itostr(nband), "", "", "Real part of bandpass correction for polarization 1", (char*[]){""}}
683 #define FITSIDI_BANDPASS_COLUMN_BIMAG_1(nbach, nband) (dsp_fits_column){"BIMAG_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nbach) "," itostr(nband), "", "", "Imaginary part of bandpass correction for polarization 1", (char*[]){""}}
685 #define FITSIDI_BANDPASS_COLUMN_REFANT_2 (dsp_fits_column){"REFANT_2", "1J", "", "", "Reference antenna for polarization 2", (char*[]){""}}
687 #define FITSIDI_BANDPASS_COLUMN_BREAL_2(nbach, nband) (dsp_fits_column){"BREAL_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nbach) "," itostr(nband), "", "", "Real part of bandpass correction for polarization 2", (char*[]){""}}
689 #define FITSIDI_BANDPASS_COLUMN_BIMAG_2(nbach, nband) (dsp_fits_column){"BIMAG_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nbach) "," itostr(nband), "", "", "Imaginary part of bandpass correction for polarization 2", (char*[]){""}}
690 
693 #define FITSIDI_BANDPASS_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
695 #define FITSIDI_BANDPASS_KEYWORD_NO_ANT (dsp_fits_keyword){"NO_ANT", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Maximum antenna number in the table", (char*[]){""}}
697 #define FITSIDI_BANDPASS_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
699 #define FITSIDI_BANDPASS_KEYWORD_NO_BACH (dsp_fits_keyword){"NO_BACH", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of spectral channels in the table", (char*[]){""}}
701 #define FITSIDI_BANDPASS_KEYWORD_STRT_CHN (dsp_fits_keyword){"STRT_CHN", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Data channel number for first channel in the table", (char*[]){""}}
702 
705 #define FITSIDI_CALIBRATION_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
707 #define FITSIDI_CALIBRATION_COLUMN_TIME_INTERVAL (dsp_fits_column){"TIME_INTERVAL", "1E", EXTFITS_MEASURE_UNIT_DAY, "", "Duration of interval", (char*[]){""}}
709 #define FITSIDI_CALIBRATION_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
711 #define FITSIDI_CALIBRATION_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
713 #define FITSIDI_CALIBRATION_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
715 #define FITSIDI_CALIBRATION_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
717 #define FITSIDI_CALIBRATION_COLUMN_TSYS_1(nband) (dsp_fits_column){"TSYS_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "System temperature for polarization 1", (char*[]){""}}
719 #define FITSIDI_CALIBRATION_COLUMN_TANT_1(nband) (dsp_fits_column){"TANT_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "Antenna temperature for polarization 1", (char*[]){""}}
721 #define FITSIDI_CALIBRATION_COLUMN_SENSITIVITY_1(nband) (dsp_fits_column){"SENSITIVITY_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Kelvin/Jy", "", "Sensitivity at polarization 1", (char*[]){""}}
723 #define FITSIDI_CALIBRATION_COLUMN_PHASE_1(nband) (dsp_fits_column){"PHASE_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_RAD, "", "Phase at polarization 1", (char*[]){""}}
725 #define FITSIDI_CALIBRATION_COLUMN_RATE_1(nband) (dsp_fits_column){"RATE_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "sec/sec", "", "Rate of change of delay of polarization 1", (char*[]){""}}
727 #define FITSIDI_CALIBRATION_COLUMN_DELAY_1(nband) (dsp_fits_column){"DELAY_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_SECOND, "", "Delay of polarization 1", (char*[]){""}}
729 #define FITSIDI_CALIBRATION_COLUMN_REAL_1(nband) (dsp_fits_column){"REAL_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Complex gain real part for polarization 1", (char*[]){""}}
731 #define FITSIDI_CALIBRATION_COLUMN_IMAG_1(nband) (dsp_fits_column){"IMAG_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Complex gain imaginary part for polarization 1", (char*[]){""}}
733 #define FITSIDI_CALIBRATION_COLUMN_WEIGHT_1(nband) (dsp_fits_column){"WEIGHT_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Reliability weight of complex gain for polarization 1", (char*[]){""}}
735 #define FITSIDI_CALIBRATION_COLUMN_REFANT_1(nband) (dsp_fits_column){"REFANT_1", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Reference antenna for polarization 1", (char*[]){""}}
737 #define FITSIDI_CALIBRATION_COLUMN_TSYS_2(nband) (dsp_fits_column){"TSYS_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "System temperature for polarization 2", (char*[]){""}}
739 #define FITSIDI_CALIBRATION_COLUMN_TANT_2(nband) (dsp_fits_column){"TANT_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_KELVIN, "", "Antenna temperature for polarization 2", (char*[]){""}}
741 #define FITSIDI_CALIBRATION_COLUMN_SENSITIVITY_2(nband) (dsp_fits_column){"SENSITIVITY_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Kelvin/Jy", "", "Sensitivity at polarization 2", (char*[]){""}}
743 #define FITSIDI_CALIBRATION_COLUMN_PHASE_2(nband) (dsp_fits_column){"PHASE_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_RAD, "", "Phase at polarization 2", (char*[]){""}}
745 #define FITSIDI_CALIBRATION_COLUMN_RATE_2(nband) (dsp_fits_column){"RATE_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "sec/sec", "", "Rate of change of delay of polarization 2", (char*[]){""}}
747 #define FITSIDI_CALIBRATION_COLUMN_DELAY_2(nband) (dsp_fits_column){"DELAY_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_SECOND, "", "Delay of polarization 2", (char*[]){""}}
749 #define FITSIDI_CALIBRATION_COLUMN_REAL_2(nband) (dsp_fits_column){"REAL_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Complex gain real part for polarization 2", (char*[]){""}}
751 #define FITSIDI_CALIBRATION_COLUMN_IMAG_2(nband) (dsp_fits_column){"IMAG_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Complex gain imaginary part for polarization 2", (char*[]){""}}
753 #define FITSIDI_CALIBRATION_COLUMN_WEIGHT_2(nband) (dsp_fits_column){"WEIGHT_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "", "", "Reliability weight of complex gain for polarization 2", (char*[]){""}}
755 #define FITSIDI_CALIBRATION_COLUMN_REFANT_2(nband) (dsp_fits_column){"REFANT_2", EXTFITS_ELEMENT_INT.typestr itostr(nband), "", "", "Reference antenna for polarization 2", (char*[]){""}}
756 
759 #define FITSIDI_CALIBRATION_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
761 #define FITSIDI_CALIBRATION_KEYWORD_NO_ANT (dsp_fits_keyword){"NO_ANT", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Maximum antenna number in the table", (char*[]){""}}
763 #define FITSIDI_CALIBRATION_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
764 
767 #define FITSIDI_MODEL_COMPS_COLUMN_TIME (dsp_fits_column){"TIME", "1D", EXTFITS_MEASURE_UNIT_DAY, "", "Central time of interval", (char*[]){""}}
769 #define FITSIDI_MODEL_COMPS_COLUMN_SOURCE_ID (dsp_fits_column){"SOURCE_ID", "1J", "", "", "Source ID number", (char*[]){""}}
771 #define FITSIDI_MODEL_COMPS_COLUMN_ANTENNA_NO (dsp_fits_column){"ANTENNA_NO", "1J", "", "", "Antenna number", (char*[]){""}}
773 #define FITSIDI_MODEL_COMPS_COLUMN_ARRAY (dsp_fits_column){"ARRAY", "1J", "", "", "Array number", (char*[]){""}}
775 #define FITSIDI_MODEL_COMPS_COLUMN_FREQID (dsp_fits_column){"FREQID", "1J", "", "", "Frequency setup number", (char*[]){""}}
777 #define FITSIDI_MODEL_COMPS_COLUMN_ATMOS (dsp_fits_column){"ATMOS", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "Atmospheric delay", (char*[]){""}}
779 #define FITSIDI_MODEL_COMPS_COLUMN_DATMOS (dsp_fits_column){"DATMOS", "1D", "sec/sec", "", "Time derivative of atmospheric delay", (char*[]){""}}
781 #define FITSIDI_MODEL_COMPS_COLUMN_GDELAY (dsp_fits_column){"GDELAY", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "Group delay", (char*[]){""}}
783 #define FITSIDI_MODEL_COMPS_COLUMN_GRATE (dsp_fits_column){"GRATE", "1D", "sec/sec", "", "Rate of change of group delay", (char*[]){""}}
785 #define FITSIDI_MODEL_COMPS_COLUMN_CLOCK_1 (dsp_fits_column){"CLOCK_1", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "'Clock' epoch error", (char*[]){""}}
787 #define FITSIDI_MODEL_COMPS_COLUMN_DCLOCK_1 (dsp_fits_column){"DCLOCK_1", "1D", "sec/sec", "", "Time derivative of clock error", (char*[]){""}}
789 #define FITSIDI_MODEL_COMPS_COLUMN_LO_OFFSET_1(nband) (dsp_fits_column){"LO_OFFSET_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "LO offset", (char*[]){""}}
791 #define FITSIDI_MODEL_COMPS_COLUMN_DLO_OFFSET_1(nband) (dsp_fits_column){"DLO_OFFSET_1", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Hz/sec", "", "Time derivative of LO offset", (char*[]){""}}
793 #define FITSIDI_MODEL_COMPS_COLUMN_DISP_1 (dsp_fits_column){"DISP_1", "1E", EXTFITS_MEASURE_UNIT_SECOND, "", "Dispersive delay", (char*[]){""}}
795 #define FITSIDI_MODEL_COMPS_COLUMN_DDISP_1 (dsp_fits_column){"DDISP_1", "1E", "sec m−2/sec", "", " Time derivative of dispersive delay", (char*[]){""}}
797 #define FITSIDI_MODEL_COMPS_COLUMN_CLOCK_2 (dsp_fits_column){"CLOCK_2", "1D", EXTFITS_MEASURE_UNIT_SECOND, "", "'Clock' epoch error", (char*[]){""}}
799 #define FITSIDI_MODEL_COMPS_COLUMN_DCLOCK_2 (dsp_fits_column){"DCLOCK_2", "1D", "sec/sec", "", "Time derivative of clock error", (char*[]){""}}
801 #define FITSIDI_MODEL_COMPS_COLUMN_LO_OFFSET_2(nband) (dsp_fits_column){"LO_OFFSET_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), EXTFITS_MEASURE_UNIT_HZ, "", "LO offset", (char*[]){""}}
803 #define FITSIDI_MODEL_COMPS_COLUMN_DLO_OFFSET_2(nband) (dsp_fits_column){"DLO_OFFSET_2", EXTFITS_ELEMENT_FLOAT.typestr itostr(nband), "Hz/sec", "", "Time derivative of LO offset", (char*[]){""}}
805 #define FITSIDI_MODEL_COMPS_COLUMN_DISP_2 (dsp_fits_column){"DISP_2", "1E", EXTFITS_MEASURE_UNIT_SECOND, "", "Dispersive delay", (char*[]){""}}
807 #define FITSIDI_MODEL_COMPS_COLUMN_DDISP_2 (dsp_fits_column){"DDISP_2", "1E", "sec m−2/sec", "", "Time derivative of dispersive delay", (char*[]){""}}
808 
811 #define FITSIDI_MODEL_COMPS_KEYWORD_TABREV (dsp_fits_keyword){"TABREV", EXTFITS_ELEMENT_SHORT.typestr, "", "", "1", (char*[]){""}}
813 #define FITSIDI_MODEL_COMPS_KEYWORD_RDATE (dsp_fits_keyword){"RDATE", EXTFITS_ELEMENT_DOUBLE.typestr, "", "", "Reference date", (char*[]){""}}
815 #define FITSIDI_MODEL_COMPS_KEYWORD_NO_POL (dsp_fits_keyword){"NO_POL", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Number of polarizations in the table", (char*[]){""}}
817 #define FITSIDI_MODEL_COMPS_KEYWORD_FFT_SIZE (dsp_fits_keyword){"FFT_SIZE", EXTFITS_ELEMENT_SHORT.typestr, "", "", "FFT size", (char*[]){""}}
819 #define FITSIDI_MODEL_COMPS_KEYWORD_OVERSAMP (dsp_fits_keyword){"OVERSAMP", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Oversampling factor", (char*[]){""}}
821 #define FITSIDI_MODEL_COMPS_KEYWORD_ZERO_PAD (dsp_fits_keyword){"ZERO_PAD", EXTFITS_ELEMENT_SHORT.typestr, "", "", "Zero padding factor", (char*[]){""}}
823 #define FITSIDI_MODEL_COMPS_KEYWORD_TAPER_FN (dsp_fits_keyword){"TAPER_FN", EXTFITS_ELEMENT_STRING.typestr, "", "", "Tapering function ('HANNING' or 'UNIFORM')", (char*[]){""}}
824 
833 dsp_fits_row *dsp_fits_read_fitsidi(char *filename, long *nstreams, long *maxes, long **maxis);
836 #ifdef __cplusplus
837 }
838 #endif
839 
840 #endif //_FITS_EXTENSION_FITSIDI_H
dsp_fits_row * dsp_fits_read_fitsidi(char *filename, long *nstreams, long *maxes, long **maxis)
read a fits file containing a FITS-IDI Extension
Binary table FITS extension row.
Definition: fits.h:86