1 #ifndef GCP_UTIL_FITSIO_H
2 #define GCP_UTIL_FITSIO_H
13 #include "gcp/util/common/DataType.h"
14 #include "gcp/util/common/DecAngle.h"
15 #include "gcp/util/common/HourAngle.h"
16 #include "gcp/util/common/Frequency.h"
21 #define WRITEFN(fn) void (fn)(char *buf, const char *val);
26 #define READFN(fn) void (fn)(FitsIo::FitsDataType& data, char *str);
50 static const unsigned nBytePerHeader_=80;
54 static const unsigned nHeaderPerDataRecord_ = 36;
58 static const unsigned nBytePerDataRecord_ =
59 nBytePerHeader_ * nHeaderPerDataRecord_;
63 static const unsigned nBytePerKeyword_=8;
68 static const unsigned logPos_=30;
72 static const unsigned nBytePerFrequencyTableEntry_ = 32;
76 static const unsigned secondsPerDay_ = 86400;
93 FitsIo::FitsAxis axis_;
99 static unsigned nFitsAxes_;
123 std::string stringVal_;
124 FitsIo::FitsBunit bunitVal_;
125 FitsIo::FitsAxis axisVal_;
131 static unsigned nFitsUnits_;
136 char name_[FitsIo::nBytePerKeyword_+1];
143 static unsigned nPhdus_;
147 void putPhdu(
const char *name,
const char *val,
const char *comment,
152 static void nullStr(
char *buf,
const char *val);
153 static void logStr(
char *buf,
const char *val);
154 static void intStr(
char *buf,
const char *val);
155 static void fltStr(
char *buf,
const char *val);
156 static void strStr(
char *buf,
const char *val);
180 void setTelescopeName(std::string telescope) {
181 telescope_ = telescope;
188 void setInstrument(std::string instrument) {
189 instrument_ = instrument;
192 void setSourceName(std::string srcName) {
196 void setNumberOfIfs(
unsigned nIf) {
198 ifFrequencies_.resize(0);
210 void setStartingIfFrequency(Frequency frequency) {
211 startingIfFrequency_ = frequency;
214 void setDeltaIfFrequency(Frequency frequency) {
215 deltaIfFrequency_ = frequency;
216 deltaIfFrequencies_.resize(0);
219 void setNumberOfChannelsPerIf(
unsigned nChan) {
223 void setDeltaChannelFrequency(Frequency frequency) {
224 deltaChannelFrequency_ = frequency;
227 void setNumberOfFrames(
unsigned nFrame) {
231 void setNumberOfBaselines(
unsigned nBaseline) {
232 nBaseline_ = nBaseline;
235 void setNumberOfStokesParameters(
unsigned nStokes) {
241 void checkParameters();
247 void openFile(std::string fileName);
260 void writeFileHeaderBody(FILE* fp=0);
261 void writeAntennaTableHeaderBody(FILE* fp=0);
262 void writeFrequencyTableHeaderBody(FILE* fp=0);
301 void initFrequencyTableDataBody();
302 void writeFrequencyTableDataBody(FILE* fp=0);
303 void finishFrequencyTableDataBody(FILE* fp=0);
305 void writeFrequencyTableData(FILE* fp=0);
306 void writeFrequencyTable(FILE* fp=0);
312 void writeUvfFile(
double* data,
double* date,
double* uvw, FILE* fp=0);
331 std::string telescope_;
332 std::string instrument_;
339 std::string srcName_;
346 Frequency startingIfFrequency_;
347 Frequency deltaIfFrequency_;
348 std::vector<Frequency> ifFrequencies_;
349 std::vector<Frequency> deltaIfFrequencies_;
354 Frequency startingFrequency_;
355 Frequency deltaChannelFrequency_;
359 unsigned nTelescope_;
360 std::vector<std::vector<double> > locations_;
379 void cp4r4(
unsigned char *dest,
unsigned char *orig,
size_t nitem);
384 void cp8r8(
unsigned char *dest,
unsigned char *orig,
size_t nitem);
386 void fwrite(
unsigned int* ptr,
size_t nel, FILE* stream);
387 void fwrite(
float* ptr,
size_t nel, FILE* stream);
388 void fwrite(
double* ptr,
size_t nel, FILE* stream);
396 unsigned* iRow,
unsigned* iCol,
407 #endif // End #ifndef GCP_UTIL_FITSIO_H
static void strStr(char *buf, const char *val)
Definition: FitsIo.cc:222
static void nullStr(char *buf, const char *val)
Definition: FitsIo.cc:184
static void rdStr(FitsDataType &data, char *str)
Definition: FitsIo.cc:274
void writeVisibilityData(double *vis, double *date, double *uvw, FILE *fp=0)
Definition: FitsIo.cc:869
void initAntennaTableDataBody()
Definition: FitsIo.cc:885
void finishHeader(FILE *fp=0)
Definition: FitsIo.cc:329
void initVisibilityData()
Definition: FitsIo.cc:731
void setDeltaIfFrequencies(std::vector< Frequency > &frequencies)
Definition: FitsIo.cc:1240
Definition: DecAngle.h:16
static void rdLog(FitsDataType &data, char *str)
Definition: FitsIo.cc:266
void finishAntennaTableDataBody(FILE *fp=0)
Definition: FitsIo.cc:923
static void fltStr(char *buf, const char *val)
Definition: FitsIo.cc:189
void putPhdu(const char *name, const char *val, const char *comment, FILE *fp=0)
Definition: FitsIo.cc:124
static void logStr(char *buf, const char *val)
Definition: FitsIo.cc:211
void writeFileHeader(FILE *fp=0)
Definition: FitsIo.cc:656
Definition: HourAngle.h:17
void setIfFrequencies(std::vector< Frequency > &frequencies)
Definition: FitsIo.cc:1225
static void intStr(char *buf, const char *val)
Definition: FitsIo.cc:200
void finishVisibilityData(FILE *fp=0)
Definition: FitsIo.cc:847
void getTelescopeIndices(unsigned baslineIndex, unsigned *iRow, unsigned *iCol, unsigned nTel)
Definition: FitsIo.cc:1059
void writeAntennaTableHeader(FILE *fp=0)
Definition: FitsIo.cc:668
static void rdInt(FitsDataType &data, char *str)
Definition: FitsIo.cc:258
void setTelescopeLocations(std::vector< std::vector< double > > &locations)
Definition: FitsIo.cc:1211
FitsIo()
Definition: FitsIo.cc:104
Definition: DataType.h:27
void writeAntennaTableEntry(int i, double X, double Y, double Z, FILE *fp=0)
Definition: FitsIo.cc:906
static void rdNull(FitsDataType &data, char *str)
Definition: FitsIo.cc:245
FILE * getFptr(FILE *fp)
Definition: FitsIo.cc:1099
static void rdBunit(FitsDataType &data, char *str)
Definition: FitsIo.cc:282
void initHeader()
Definition: FitsIo.cc:321
static void rdAxis(FitsDataType &data, char *str)
Definition: FitsIo.cc:301
void writeVisibilityDataBody(double *vis, double *date, double *uvw, FILE *fp=0)
Definition: FitsIo.cc:739
void writeFrequencyTableHeader(FILE *fp=0)
Definition: FitsIo.cc:680
void writeAntennaTableData(FILE *fp=0)
Definition: FitsIo.cc:943
static void rdFlt(FitsDataType &data, char *str)
Definition: FitsIo.cc:250
void writeAntennaTable(FILE *fp=0)
Definition: FitsIo.cc:955
virtual ~FitsIo()
Definition: FitsIo.cc:112
void writeAntennaTableDataBody(FILE *fp=0)
Definition: FitsIo.cc:893