1 #ifndef SZA_UTIL_FITSIO_H
2 #define SZA_UTIL_FITSIO_H
14 #include "carma/szautil/DecAngle.h"
15 #include "carma/szautil/HourAngle.h"
16 #include "carma/szautil/Frequency.h"
22 #define WRITEFN(fn) void (fn)(char *buf, const char *val);
27 #define READFN(fn) void (fn)(FitsIo::FitsDataType& data, char *str);
32 class FitsIo :
public VisIo {
51 static const unsigned nBytePerHeader_=80;
55 static const unsigned nHeaderPerDataRecord_ = 36;
59 static const unsigned nBytePerDataRecord_ =
60 nBytePerHeader_ * nHeaderPerDataRecord_;
64 static const unsigned nBytePerKeyword_=8;
69 static const unsigned logPos_=30;
73 static const unsigned nBytePerFrequencyTableEntry_ = 32;
77 static const unsigned secondsPerDay_ = 86400;
94 FitsIo::FitsAxis axis_;
99 static FitsAxisCard fitsAxes_[];
100 static unsigned nFitsAxes_;
114 struct FitsBunitCard {
122 struct FitsDataType {
124 std::string stringVal_;
125 FitsIo::FitsBunit bunitVal_;
126 FitsIo::FitsAxis axisVal_;
131 static FitsBunitCard fitsUnits_[];
132 static unsigned nFitsUnits_;
137 char name_[FitsIo::nBytePerKeyword_+1];
143 static FitsIo::Phdu phdus_[];
144 static unsigned nPhdus_;
148 void putPhdu(
const char *name,
const char *val,
const char *comment,
153 static void nullStr(
char *buf,
const char *val);
154 static void logStr(
char *buf,
const char *val);
155 static void intStr(
char *buf,
const char *val);
156 static void fltStr(
char *buf,
const char *val);
157 static void strStr(
char *buf,
const char *val);
161 static void rdNull(FitsDataType& data,
char *str);
162 static void rdLog(FitsDataType& data,
char *str);
163 static void rdStr(FitsDataType& data,
char *str);
164 static void rdInt(FitsDataType& data,
char *str);
165 static void rdFlt(FitsDataType& data,
char *str);
166 static void rdBunit(FitsDataType& data,
char *str);
167 static void rdAxis(FitsDataType& data,
char *str);
178 void finishHeader(FILE* fp=0);
182 void writeFileHeaderBody(FILE* fp=0);
183 void writeAntennaTableHeaderBody(FILE* fp=0);
184 void writeFrequencyTableHeaderBody(FILE* fp=0);
188 void writeFileHeader(FILE* fp=0);
189 void writeAntennaTableHeader(FILE* fp=0);
190 void writeFrequencyTableHeader(FILE* fp=0);
196 void initVisibilityData();
197 void writeVisibilityDataBody(
double* vis,
double* date,
double* uvw, FILE* fp=0);
198 void writeFakeVisibilityDataBody(
double* vis,
double* date,
double* uvw, FILE* fp=0);
199 void finishVisibilityData(FILE* fp=0);
201 void writeVisibilityData(
double* vis,
double* date,
double* uvw, FILE* fp=0);
202 void writeFakeVisibilityData(
double* vis,
double* date,
double* uvw, FILE* fp=0);
208 void initAntennaTableDataBody();
209 void writeAntennaTableDataBody(FILE* fp=0);
210 void finishAntennaTableDataBody(FILE* fp=0);
214 void writeAntennaTableData(FILE* fp=0);
215 void writeAntennaTableEntry(
int i,
double X,
double Y,
double Z, FILE* fp=0);
219 void writeAntennaTable(FILE* fp=0);
225 void initFrequencyTableDataBody();
226 void writeFrequencyTableDataBody(FILE* fp=0);
227 void finishFrequencyTableDataBody(FILE* fp=0);
229 void writeFrequencyTableData(FILE* fp=0);
230 void writeFrequencyTable(FILE* fp=0);
236 void writeUvfFile(
double* data,
double* date,
double* uvw, FILE* fp=0);
237 void writeFakeUvfFile(
double* data,
double* date,
double* uvw, FILE* fp=0);
241 FILE* getFptr(FILE* fp);
243 void openFile(std::string fileName);
262 void cp4r4(
unsigned char *dest,
unsigned char *orig,
size_t nitem);
267 void cp8r8(
unsigned char *dest,
unsigned char *orig,
size_t nitem);
269 void fwrite(
unsigned int* ptr,
size_t nel, FILE* stream);
270 void fwrite(
float* ptr,
size_t nel, FILE* stream);
271 void fwrite(
double* ptr,
size_t nel, FILE* stream);
280 #endif // End #ifndef SZA_UTIL_FITSIO_H
Tagged: Tue Jun 22 22:32:16 UTC 2004.
Tagged: Mon Oct 3 15:32:27 PDT 2005.