My Project
 All Classes Files Functions Variables Enumerations Enumerator Friends Macros Pages
PtSrcFitsReader.h
1 // $Id: PtSrcFitsReader.h,v 1.1.1.1 2009/07/06 23:57:26 eml Exp $
2 
3 #ifndef GCP_UTIL_PTSRCFITSREADER_H
4 #define GCP_UTIL_PTSRCFITSREADER_H
5 
15 #include "gcp/util/common/PtSrcReader.h"
16 
17 #include "gcp/cfitsio/common/fitsio.h"
18 
19 namespace gcp {
20  namespace util {
21 
22  class PtSrcFitsReader : public PtSrcReader {
23  public:
24 
28  PtSrcFitsReader(std::string catalogFile);
30 
34  virtual ~PtSrcFitsReader();
35 
39  void initialize();
40 
41  // Open the catalog file
42 
43  void openCatalogFile();
44 
45  // Close the catalog file
46 
47  void closeCatalogFile();
48 
49  // Read the next entry from the catalog file
50 
52 
53  // Read the next chunk of data from the FITS file
54 
55  void readNextChunk();
56 
57  // Return true if we are at the end of file
58 
59  bool eof();
60 
61  void setRaRange(HourAngle& ra, Declination& dec, Angle& radius);
62  void initRange();
63 
64  protected:
65 
66  //------------------------------------------------------------
67  // FITS-related members
68 
69  // A pointer to a FITS file
70 
71  fitsfile* fitsFile_;
72 
73  // A status flag used by cfitsio routines
74 
75  int status_;
76 
77  // An array of indices for telling which source number
78  // corresponds to each new RA range
79 
80  long indices_[25];
81 
82  static const unsigned chunkSize_ = 10;
83  unsigned nChunk_, iChunk_;
84 
85  long nRow_, nRowTotal_;
86  unsigned iRow_;
87 
88  double ras_[chunkSize_];
89  double decs_[chunkSize_];
90  float peakFluxes_[chunkSize_];
91  float rmsFluxes_[chunkSize_];
92  float majorAxes_[chunkSize_];
93  float minorAxes_[chunkSize_];
94  float positionAngles_[chunkSize_];
95  char* sourceNames_[chunkSize_];
96 
97  // The number of RA ranges we are searching
98 
99  unsigned int nRange_;
100  unsigned int iRange_;
101  unsigned rowMin_;
102 
103  // Up to two start indices
104 
105  unsigned int rangeStartInd_[2];
106 
107  // Up to two stop indices
108 
109  unsigned int rangeStopInd_[2];
110 
111  // Force inheritors to define the following functions
112 
113  virtual PtSrcReader::Source parseData() = 0;
114  virtual void readFitsData(long startRow, long nElement) = 0;
115 
116  // Increment to the next range.
117 
118  void incrementRange();
119 
120  }; // End class PtSrcFitsReader
121 
122  } // End namespace util
123 } // End namespace gcp
124 
125 
126 
127 #endif // End #ifndef GCP_UTIL_PTSRCFITSREADER_H
void closeCatalogFile()
Definition: PtSrcFitsReader.cc:111
void initialize()
Definition: PtSrcFitsReader.cc:30
void setRaRange(HourAngle &ra, Declination &dec, Angle &radius)
Definition: PtSrcFitsReader.cc:220
void readNextChunk()
Definition: PtSrcFitsReader.cc:176
virtual ~PtSrcFitsReader()
Definition: PtSrcFitsReader.cc:46
Definition: HourAngle.h:17
bool eof()
Definition: PtSrcFitsReader.cc:212
void incrementRange()
Definition: PtSrcFitsReader.cc:264
Definition: Angle.h:20
Definition: Declination.h:20
void openCatalogFile()
Definition: PtSrcFitsReader.cc:59
PtSrcReader::Source readNextEntry()
Definition: PtSrcFitsReader.cc:129
PtSrcFitsReader()
Definition: PtSrcFitsReader.cc:13
Definition: PtSrcReader.h:35
Definition: fitsio.h:248
Definition: PtSrcReader.h:29
Definition: PtSrcFitsReader.h:22