Changeset 903 in Sophya for trunk/SophyaExt/FitsIOServer/fitsfile.h
- Timestamp:
- Apr 13, 2000, 11:25:15 AM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsfile.h
r875 r903 12 12 namespace SOPHYA { 13 13 14 14 // 15 //! Virtual Class for managing Interface for SOPHYA objects to FITS Format Files (uses cfitsio lib) 16 17 /*! 18 19 Each SOPHYA object XXX is associated with a object of class FITS_XXX 20 (inheriting from FitsFile), to which input/output operations with FITS 21 files are delegated. A typical example of use is the following : 22 23 \verbatim 24 int m=... ; 25 SphereHEALPix<r_8> sphere1(m); // definition of the SOPHYA object 26 .... fill the sphere .... 27 28 FITS_SphereHEALPix<r_8> fits_sph1(sphere1); 29 // delegated object 30 fits_sph.Write("myfile.fits"); // writing on FITS file 31 32 FITS_SphereHEALPix<r_8> fits_sph2("myfile.fits"); 33 // load a delegated object 34 // from FITS file 35 SphereHEALPix<r_8> sphere2=(SphereHEALPix<r_8>)fits_sph2; 36 // casting the delegated object 37 // into a SOPHYA object 38 \endverbatim 39 40 */ 15 41 class FitsFile 16 42 { … … 19 45 20 46 FitsFile(); 21 // FitsFile(char flnm[],int iomode,int hdunum= 0);22 47 virtual ~FitsFile(); 23 48 static int NbBlocks(char flnm[]); 49 static void getBlockType(char flnm[], int hdunum, string& typeOfExtension, int& naxis, vector<int>& naxisn, string& dataType, DVList& dvl ); 50 /*! return true if the current header corresponds to a FITS image extension */ 24 51 inline bool IsFitsImage() const { return (hdutype_ == IMAGE_HDU);} 52 53 /*! return true if the current header corresponds to a FITS ASCII or BINTABLE extension */ 25 54 inline bool IsFitsTable() const {return (hdutype_ == ASCII_TBL || hdutype_ == BINARY_TBL);} 26 void ReadF(char flnm[],int hdunum= 0); 55 56 /*! 57 this method is called from inherited objects : 58 59 moves to header 'hdunum' on file 'flnm' 60 61 gets parameters in header 62 63 calls the method 'ReadFromFits' from the inherited delegated object 64 65 */ 66 void ReadF(char flnm[],int hdunum= 0); 67 68 /*! 69 this method is called from inherited objects : 70 71 opens a file 'flnm' 72 73 gets parameters in header 74 75 calls the method 'ReadFromFits' from the inherited delegated object 76 77 */ 27 78 void WriteF(char flnm[],int hdunum= 0); 79 80 81 /*! 82 fill the array 'map' with double data from the current extension on FITS file. 83 If the extension is BINTABLE, the first column is provided. 84 85 \param <nentries> number of data to be read 86 */ 28 87 void GetSingleColumn(double* map, int nentries) const; 88 89 /*! same as above with float data */ 29 90 void GetSingleColumn(float* map, int nentries) const; 91 92 /*! same as above with int data */ 30 93 void GetSingleColumn(int* map, int nentries) const; 94 95 /*! number of dimensions of an image extension : NAXIS parameter (in FITS notations) 96 */ 31 97 inline int nbDimOfImage() const {return naxis_;} 98 99 /*! 100 total number of data in the current IMAGE extension 101 */ 32 102 inline int nbOfImageData() const { return nbData_; } 103 104 /*! a reference on a vector containing sizes of the NAXIS dimensions : NAXIS1, NAXIS2, NAXIS3 wtc. 105 */ 33 106 inline const vector<int>& dimOfImageAxes() const { return naxisn_;} 107 108 /*! return number of columns (return 1 if IMAGE) */ 34 109 int NbColsFromFits() const; 110 111 /*! return a character denoting data type of column number 'nocol' in a BINTABLE : 112 113 D : double 114 115 E : float 116 117 I : integer 118 119 S : character string 120 121 */ 35 122 char ColTypeFromFits(int nocol) const; 123 124 /*! number of data in the current IMAGE extension on FITS file, or number 125 of data of column number 'nocol' of the current BINTABLE extension 126 */ 36 127 int NentriesFromFits(int nocol) const; 128 129 /*! name of the column number 'nocol' of the current BINTABLE extension 130 */ 37 131 string ColNameFromFits(int nocol) const; 132 133 134 /*! number of characters of each data for the column number 'nocol' (if char* typed) of the current BINTABLE extension 135 */ 38 136 int ColStringLengthFromFits(int nocol) const; 137 138 /*! return a reference on a DVList containing the keywords from FITS file 139 */ 39 140 inline const DVList& DVListFromFits() const { return dvl_;} 141 142 143 /*! 144 fill the array 'valeurs' with double data from the current BINTABLE extension on FITS file, from column number 'NoCol' 145 146 \param <nentries> number of data to be read 147 */ 40 148 void GetBinTabFCol(double* valeurs, int nentries, int NoCol) const; 149 150 /*! same as previous method with float data */ 41 151 void GetBinTabFCol(float* valeurs, int nentries, int NoCol) const; 152 /*! same as previous method with int data */ 42 153 void GetBinTabFCol(int* valeurs, int nentries, int NoCol) const; 154 /*! same as previous method with char* data */ 43 155 void GetBinTabFCol(char** valeurs,int nentries, int NoCol) const; 44 156 // Write elements into the FITS data array 157 158 /*! write double data from array 'map'on an IMAGE extension 159 \param <nbData> number of data to be written 160 161 */ 45 162 void putImageToFits( int nbData, double* map) const; 163 164 /*! same as previous method with float data */ 46 165 void putImageToFits(int nbData, float* map ) const; 166 167 /*! same as previous method with int data */ 47 168 void putImageToFits(int nbData, int* map) const; 169 170 /*! write double data from array 'donnees ' on column number 'nocol' of a BINTABLE extension. 171 \param <nentries> number of data to be written 172 173 */ 48 174 void putColToFits(int nocol, int nentries, double* donnees) const; 175 176 /*! same as previous method with float data */ 49 177 void putColToFits(int nocol, int nentries, float* donnees) const; 178 179 /*! same as previous method with int data */ 50 180 void putColToFits(int nocol, int nentries, int* donnees) const; 181 182 /*! same as previous method with char* data */ 51 183 void putColToFits(int nocol, int nentries, char** donnees) const; 52 // Write elements into an ASCII or binary table column 184 185 /*! create an IMAGE header on FITS file. 186 \param <type> type of data (see method ColTypeFromFits) 187 \param <nbdim> number of dimensions : 1D, 2D, 3D etc. = NAXIS 188 \param <naxisn> array containind sizes of the different dimensions 189 */ 53 190 void makeHeaderImageOnFits(char type, int nbdim, int* naxisn) const; 191 192 /*! create an BINTABLE header on FITS file. 193 \param <fieldType> array containing characters denoting types of the different column (see method ColTypeFromFits) 194 \param <Noms> array of the names of columns 195 \param <nentries> number of data of each column 196 \param <tfields> number of columns 197 \param <dvl> a SOPHYA DVList containing keywords to be appended 198 \param <extname> keyword EXTNAME for FITS file 199 \param <taille_des_chaines> vector containing the number of characters of data for each char* typed column, with order of appearance in 'fieldType' 200 */ 54 201 void makeHeaderBntblOnFits ( char* fieldType, char** Noms, int nentries, int tfields, DVList &dvl, char* extname, vector<int> taille_des_chaines) const; 55 202 56 203 void readheader(); 57 void printerror(int&) const;58 void printerror(int&,char* texte) const;204 static void printerror(int&) ; 205 static void printerror(int&,char* texte) ; 59 206 protected: 60 207 virtual void ReadFromFits(const FitsFile& ff)=0; 61 208 virtual void WriteToFits(const FitsFile& ff)=0; 62 // virtual void* getColFromObj(int colNr)=0;63 209 private: 64 210 65 void read_image (); 66 void GetBinTabParameters(); 211 static void GetImageParameters (fitsfile* fileptr,int& bitpix,int& naxis,vector<int>& naxisn); 212 static void GetBinTabParameters(fitsfile* fileptr, int& nbcols, int& nrows, 213 vector<int>& repeat, 214 vector<string>& noms, 215 vector<char>& types, 216 vector<int>& taille_des_chaines); 217 static void KeywordsIntoDVList(fitsfile* fileptr, DVList& dvl); 67 218 void writeSignatureOnFits() const; 68 219 220 //! pointer to the FITS file, defined in fitsio.h 221 fitsfile *fptr_; 69 222 70 fitsfile *fptr_; // pointer to the FITS file, defined in fitsio.h 71 72 int hdutype_; // image or bintable ? 73 int hdunum_; // index of header to read/write 74 75 76 // fits-Image parameters 223 //! image or bintable ? 224 int hdutype_; 225 226 //! index of header to be read/written 227 int hdunum_; 228 229 230 //! fits-Image parameter 77 231 int bitpix_; 232 233 //! fits-Image parameter 78 234 int naxis_; 235 236 //! fits-Image parameters : sizes of dimensions 79 237 vector<int> naxisn_; 238 239 //! fits-Image parameter: number of data 80 240 int nbData_; 81 241 82 // Bintable parameters242 //! Bintable parameter 83 243 int nrows_; 244 245 //! Bintable parameter 84 246 vector<int> repeat_; 85 247 248 //! Bintable parameter 86 249 int nbcols_; 87 vector<string> noms_; // column names 88 vector<char> types_; // types of columns (D: double, E: float, I: integers 89 // A: char*) 90 vector<int> taille_des_chaines_; // length of the char* variables 91 92 250 251 //! Bintable parameter: column names 252 vector<string> noms_; 253 254 //! Bintable parameters: types of columns (D: double, E: float, I: integers, A: char*) 255 vector<char> types_; 256 257 //! Bintable parameters: length of the char* variables 258 vector<int> taille_des_chaines_; 259 260 //! DVList for transferring keywords 93 261 DVList dvl_; 94 262 };
Note:
See TracChangeset
for help on using the changeset viewer.