source: Sophya/trunk/SophyaExt/FitsIOServer/fabtcolread.h@ 3188

Last change on this file since 3188 was 3188, checked in by cmv, 19 years ago

ajout des acces elements par elements cmv 9/03/2007

File size: 10.9 KB
RevLine 
[1654]1/* Interface Fits BINARY/ASCII Table Column Reader cmv 26/09/2001 */
2#ifndef FABTCOLREAD_H_SEEN
3#define FABTCOLREAD_H_SEEN
4
5#include "machdefs.h"
[2322]6#include <iostream>
[1654]7#include <string.h>
8#include <string>
9
10#include "anydataobj.h"
11#include "tvector.h"
12#include "FitsIO/fitsio.h"
13
14namespace SOPHYA {
15
[2449]16///////////////////////////////////////////////////////////////////
17//! Class for opening a FITS file for reading
18class FitsOpenFile : public AnyDataObj {
19public:
20 FitsOpenFile(string fname);
21 FitsOpenFile(const char *cfname);
22 FitsOpenFile();
23 FitsOpenFile(FitsOpenFile& fof);
24 virtual ~FitsOpenFile();
25
[2456]26 inline string FileName() const {return FitsFN;}
27 //! Get the number of the HDU read
28 inline int HDU(void) const {return IHdu;}
29 //! Get the number of the HDU type
30 inline int HDUType(void) const {return HduType;}
31 //! Get the number of HDU in file
32 inline int NHDU() const {return NHdu;}
33 //! Get the CFISTIO fits file pointer
34 inline fitsfile* GetFitsPtr() const {return FitsPtr;}
35 //! Set the positionning status of the file
36 inline void SetPosStatus(bool sta=true) {HasBeenPos = sta;}
37 //! Get the positionning status of the file
38 inline bool GetPosStatus(void) const {return HasBeenPos;}
[2449]39
[2456]40 int MoveToHDU(int ihdu);
41 int MoveToFirst(int hdutype,int ihdudeb=1);
42 int MoveToLast(int hdutype,int ihdudeb=1);
43 void Print(void);
44
[3128]45 static double ReadKey(fitsfile *fitsptr,char *keyname);
46 static long ReadKeyL(fitsfile *fitsptr,char *keyname);
47 static LONGLONG ReadKeyLL(fitsfile *fitsptr,char *keyname);
48 static string ReadKeyS(fitsfile *fitsptr,char *keyname);
[2453]49 static void printerror(int sta);
50
[2449]51protected:
52 void Init(const char *cfname);
53 void Delete(void);
54
55 string FitsFN;
[2456]56 int NHdu, IHdu, HduType;
[2449]57 fitsfile *FitsPtr;
[2456]58 bool HasBeenPos;
[2449]59};
60
61///////////////////////////////////////////////////////////////////
[1654]62//! Class for reading a column in a FITS ASCII or BINARY table
[2449]63class FitsABTColRd : public AnyDataObj {
[1654]64public:
[2449]65 FitsABTColRd(FitsOpenFile* fof,string collabel,int ihdu=0
66 ,long blen=100,long bsens=1,int lp=0);
67 FitsABTColRd(FitsOpenFile* fof,int colnum,int ihdu=0
68 ,long blen=100,long bsens=1,int lp=0);
69 FitsABTColRd(FitsABTColRd& fbt);
70 FitsABTColRd();
71 virtual ~FitsABTColRd();
[1654]72
73 void ChangeBuffer(long blen=100,long bsens=1);
74
[3128]75 double ReadKey(char *keyname);
76 long ReadKeyL(char *keyname);
77 LONGLONG ReadKeyLL(char *keyname);
78 string ReadKeyS(char *keyname);
[1814]79
[3128]80 double Read(LONGLONG n,bool usebuffer=true);
[2170]81
[3128]82 LONGLONG Read(LONGLONG n1,LONGLONG n2,TVector<uint_2>& data);
83 LONGLONG Read(LONGLONG n1,LONGLONG n2,TVector<int_4>& data);
84 LONGLONG Read(LONGLONG n1,LONGLONG n2,TVector<int_8>& data);
85 LONGLONG Read(LONGLONG n1,LONGLONG n2,TVector<float>& data);
86 LONGLONG Read(LONGLONG n1,LONGLONG n2,TVector<double>& data);
[1654]87
[1659]88 //! return the value of the first row
89 double ReadFirstRow(bool usebuffer=false)
90 {return Read(0,usebuffer);}
91 //! return the value of the last row
92 double ReadLastRow(bool usebuffer=false)
93 {return Read(NBline-1,usebuffer);}
94
[3128]95 LONGLONG FirstRow(double val1,double val2,LONGLONG rowstart=-1);
96 LONGLONG LastRow(double val1,double val2,LONGLONG rowstart=-1);
[1659]97
[1654]98 //! Set debug level
[2456]99 inline void SetDebug(int lp=0) {DbgLevel = (unsigned short) lp;}
[1654]100 //! Set null value to be return when reading null data (0=return the data)
[2456]101 inline void SetNulVal(double nulval=0.) {NulVal = nulval;}
[1654]102 //! Get the FITS file name
[2456]103 inline string FileName(void) const
104 {if(FitsOF) return FitsOF->FileName(); else return (string)"";}
[2449]105 //! Get the pointer to FitsOpenFile
[2456]106 inline FitsOpenFile* GetFitsOpenFile(void) const {return FitsOF;}
[1673]107 //! Get the FITS file pointer (cfistio pointer)
[3114]108 inline fitsfile* GetFitsPtr(void) const {return FitsOF->GetFitsPtr();}
[1654]109 //! Get the number of HDU in the FITS file
[2456]110 inline int NHDU(void) const
111 {if(FitsOF) return FitsOF->NHDU(); else return 0;}
[1654]112 //! Get the number of the HDU read
[2456]113 inline int HDU(void) const
114 {if(FitsOF) return FitsOF->HDU(); else return 0;}
[1654]115 //! Get the HDU type
[2456]116 inline int HDUType(void) const
117 {if(FitsOF) return FitsOF->HDUType(); else return 0;}
[1654]118 //! Get the number of rows in the FITS HDU to be read
[3128]119 inline LONGLONG GetNbLine(void) const {return NBline;}
[1654]120 //! Get the number of columns in the FITS HDU to be read
[2456]121 inline int GetNbCol(void) const {return NBcol;}
[1654]122 //! Get the columns number that is read
[2456]123 inline int GetColNum(void) const {return ColNum;}
[1654]124 //! Get the columns label that is read
[2456]125 inline string GetColLabel(void) const {return ColLabel;}
[1654]126 //! Get the columns type code that is read
[2456]127 inline int GetColTypeCode(void) const {return ColTypeCode;}
[1654]128 //! Get the columns fits tunit that is read
[2456]129 inline string GetColTUnit(void) const {return ColTUnit;}
[1654]130 //! Get the columns fits tform that is read
[2456]131 inline string GetColTForm(void) const {return ColTForm;}
[1657]132 //! Get the read requested buffer length
[2456]133 inline long GetBLen(void) const {return BuffLen;}
[1654]134 //! Get the read buffer direction
[2456]135 inline long GetBSens(void) const {return BuffSens;}
[1654]136 //! Print to os
[2456]137 virtual void Print(ostream& os,int lp=1) const;
[1654]138 //! Print to stdout
[2456]139 inline void Print(int lp=1) const {Print(cout,lp);}
[1657]140 //! Get the read effective buffer length
[2456]141 inline long GetNBuffer(void) const {return NBuffer;}
[1654]142 //! Get the read bufferpointer
143 inline double* GetBuffer(void) {return Buffer;}
144
145protected:
[2449]146 void Init(FitsOpenFile* fof,const char *collabel,int colnum
[1654]147 ,int ihdu,long blen,long bsens,int lp);
148 void Delete(void);
149
[2456]150 string ColLabel,ColTUnit,ColTForm;
151 int ColNum,ColTypeCode,NBcol;
[3128]152 LONGLONG NBline;
[1654]153
[1657]154 double NulVal;
155 unsigned short DbgLevel;
[1654]156 long BuffLen, BuffSens;
157
[3128]158 LONGLONG NFitsRead;
[2449]159 FitsOpenFile* FitsOF;
[3128]160 LONGLONG LineDeb, LineFin;
[1654]161 double *Buffer;
162 long NBuffer;
163};
164
[2449]165///////////////////////////////////////////////////////////////////
166//! Class for reading a column in a FITS ASCII or BINARY table with fits file opening
167class FitsABTColRead : public FitsABTColRd {
168public:
169 FitsABTColRead(string fname,string collabel,int ihdu=0
170 ,long blen=100,long bsens=1,int lp=0);
171 FitsABTColRead(string fname,int colnum,int ihdu=0
172 ,long blen=100,long bsens=1,int lp=0);
173 FitsABTColRead(const char *cfname,const char *collabel,int ihdu=0
174 ,long blen=100,long bsens=1,int lp=0);
175 FitsABTColRead(const char *cfname,int colnum,int ihdu=0
176 ,long blen=100,long bsens=1,int lp=0);
177 FitsABTColRead(FitsABTColRead& fbt);
178 FitsABTColRead();
179 virtual ~FitsABTColRead();
180};
181
[2453]182
183///////////////////////////////////////////////////////////////////
184//! Class for reading a 2D image from a FITS file
185class FitsImg2DRd : public AnyDataObj {
186public:
187 FitsImg2DRd(FitsOpenFile* fof,int ihdu=0,int lp=0);
188 FitsImg2DRd(FitsImg2DRd& fbt);
189 FitsImg2DRd();
190 virtual ~FitsImg2DRd();
191
[3128]192 double ReadKey(char *keyname);
193 long ReadKeyL(char *keyname);
194 LONGLONG ReadKeyLL(char *keyname);
195 string ReadKeyS(char *keyname);
[2453]196
[3128]197 LONGLONG Read(TMatrix<uint_2>& data);
198 LONGLONG Read(TMatrix<int_4>& data);
199 LONGLONG Read(TMatrix<int_8>& data);
200 LONGLONG Read(TMatrix<float>& data);
201 LONGLONG Read(TMatrix<double>& data);
[3188]202 double Read(LONGLONG numcol, LONGLONG numrow);
[2453]203
204 //! Set debug level
205 inline void SetDebug(int lp=0) {DbgLevel = (unsigned short) lp;}
206 //! Set null value to be return when reading null data (0=return the data)
207 inline void SetNulVal(double nulval=0.) {NulVal = nulval;}
208 //! Get the pointer to FitsOpenFile
[2456]209 inline FitsOpenFile* GetFitsOpenFile(void) const {return FitsOF;}
210 //! Get the FITS file pointer (cfistio pointer)
[3114]211 inline fitsfile* GetFitsPtr(void) const {return FitsOF->GetFitsPtr();}
[2456]212 //! Get the number of HDU in the FITS file
213 inline int NHDU(void) const
214 {if(FitsOF) return FitsOF->NHDU(); else return 0;}
[2453]215 //! Get the number of the HDU read
[2456]216 inline int HDU(void) const
217 {if(FitsOF) return FitsOF->HDU(); else return 0;}
[2453]218 //! Get the HDU type
[2456]219 inline int HDUType(void) const
220 {if(FitsOF) return FitsOF->HDUType(); else return 0;}
[2453]221 //! Get NAXIS1
[3128]222 inline LONGLONG Naxis1(void) const {return Naxis[0];}
[2453]223 //! Get NAXIS2
[3128]224 inline LONGLONG Naxis2(void) const {return Naxis[1];}
[2453]225
226protected:
227 void Init(FitsOpenFile* fof,int ihdu,int lp);
228
[3128]229 LONGLONG Naxis[2];
[2453]230 double NulVal;
231 unsigned short DbgLevel;
232
233 FitsOpenFile* FitsOF;
234};
[2591]235
[2791]236///////////////////////////////////////////////////////////////////
237//! Class for reading a 2D image from a FITS file
238class FitsImg2DRead : public FitsImg2DRd {
239public:
240 FitsImg2DRead(string fname,int ihdu=0,int lp=0);
241 FitsImg2DRead(const char *cfname,int ihdu=0,int lp=0);
242 FitsImg2DRead(FitsImg2DRead& fbt);
243 FitsImg2DRead();
244 virtual ~FitsImg2DRead();
245};
246
[3114]247
248///////////////////////////////////////////////////////////////////
249//! Class for reading a 3D image from a FITS file
250class FitsImg3DRd : public AnyDataObj {
251public:
252 FitsImg3DRd(FitsOpenFile* fof,int ihdu=0,int lp=0);
253 FitsImg3DRd(FitsImg3DRd& fbt);
254 FitsImg3DRd();
255 virtual ~FitsImg3DRd();
256
[3128]257 double ReadKey(char *keyname);
258 long ReadKeyL(char *keyname);
259 LONGLONG ReadKeyLL(char *keyname);
260 string ReadKeyS(char *keyname);
[3114]261
[3128]262 LONGLONG Read(TArray<uint_2>& data);
263 LONGLONG Read(TArray<int_4>& data);
264 LONGLONG Read(TArray<int_8>& data);
265 LONGLONG Read(TArray<float>& data);
266 LONGLONG Read(TArray<double>& data);
[3188]267 double Read(LONGLONG i, LONGLONG j, LONGLONG k);
[3114]268
269 //! Set debug level
270 inline void SetDebug(int lp=0) {DbgLevel = (unsigned short) lp;}
271 //! Set null value to be return when reading null data (0=return the data)
272 inline void SetNulVal(double nulval=0.) {NulVal = nulval;}
273 //! Get the pointer to FitsOpenFile
274 inline FitsOpenFile* GetFitsOpenFile(void) const {return FitsOF;}
275 //! Get the FITS file pointer (cfistio pointer)
276 inline fitsfile* GetFitsPtr(void) const {return FitsOF->GetFitsPtr();}
277 //! Get the number of HDU in the FITS file
278 inline int NHDU(void) const
279 {if(FitsOF) return FitsOF->NHDU(); else return 0;}
280 //! Get the number of the HDU read
281 inline int HDU(void) const
282 {if(FitsOF) return FitsOF->HDU(); else return 0;}
283 //! Get the HDU type
284 inline int HDUType(void) const
285 {if(FitsOF) return FitsOF->HDUType(); else return 0;}
286 //! Get NAXIS1
[3128]287 inline LONGLONG Naxis1(void) const {return Naxis[0];}
[3114]288 //! Get NAXIS2
[3128]289 inline LONGLONG Naxis2(void) const {return Naxis[1];}
[3114]290 //! Get NAXIS3
[3128]291 inline LONGLONG Naxis3(void) const {return Naxis[2];}
[3114]292
293protected:
294 void Init(FitsOpenFile* fof,int ihdu,int lp);
295
[3128]296 LONGLONG Naxis[3];
[3114]297 double NulVal;
298 unsigned short DbgLevel;
299
300 FitsOpenFile* FitsOF;
301};
302
303///////////////////////////////////////////////////////////////////
304//! Class for reading a 3D image from a FITS file
305class FitsImg3DRead : public FitsImg3DRd {
306public:
307 FitsImg3DRead(string fname,int ihdu=0,int lp=0);
308 FitsImg3DRead(const char *cfname,int ihdu=0,int lp=0);
309 FitsImg3DRead(FitsImg3DRead& fbt);
310 FitsImg3DRead();
311 virtual ~FitsImg3DRead();
312};
313
[2591]314} // namespace SOPHYA
315#endif /* FABTCOLREAD_H_SEEN */
Note: See TracBrowser for help on using the repository browser.