Ignore:
Timestamp:
Apr 13, 2000, 11:25:15 AM (25 years ago)
Author:
ansari
Message:

methodes NbBlock et getBlockType

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/SophyaExt/FitsIOServer/fitsfile.h

    r875 r903  
    1212namespace SOPHYA {
    1313
    14 
     14//
     15//! Virtual Class for managing Interface for SOPHYA objects to FITS Format Files (uses cfitsio lib)
     16
     17/*!
     18
     19Each 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*/
    1541class FitsFile
    1642{
     
    1945
    2046  FitsFile();
    21   //  FitsFile(char flnm[],int iomode,int hdunum= 0);
    2247  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 */
    2451inline bool IsFitsImage() const { return (hdutype_ == IMAGE_HDU);}
     52
     53/*! return true if the current header  corresponds to a FITS ASCII or BINTABLE extension */
    2554inline bool IsFitsTable() const {return (hdutype_ == ASCII_TBL || hdutype_ == BINARY_TBL);}
    26   void   ReadF(char flnm[],int hdunum= 0);
     55
     56/*!
     57this method is called from inherited objects :
     58
     59moves to header 'hdunum' on file 'flnm'
     60
     61gets parameters in header
     62
     63calls the method 'ReadFromFits' from the inherited delegated object
     64
     65*/
     66  void   ReadF(char flnm[],int hdunum= 0);
     67 
     68/*!
     69this method is called from inherited objects :
     70
     71opens a file 'flnm'
     72
     73gets parameters in header
     74
     75calls the method 'ReadFromFits' from the inherited delegated object
     76
     77*/
    2778  void    WriteF(char flnm[],int hdunum= 0);
     79
     80
     81  /*!
     82fill the array 'map' with double data from the current extension on FITS file.
     83If the extension is BINTABLE, the first column is provided.
     84
     85\param <nentries>  number of data to be read
     86  */
    2887  void    GetSingleColumn(double* map, int nentries) const;
     88
     89  /*! same as above with float data */
    2990  void    GetSingleColumn(float*  map, int nentries) const;
     91
     92  /*! same as above with int data */
    3093  void    GetSingleColumn(int* map, int nentries) const;
     94
     95  /*! number of dimensions of an image extension : NAXIS parameter (in FITS notations)
     96   */
    3197inline int nbDimOfImage() const {return naxis_;}
     98
     99/*!
     100 total number of data in the current IMAGE extension
     101 */
    32102inline int nbOfImageData() const { return nbData_; }
     103
     104/*! a reference on a vector containing sizes of the NAXIS dimensions : NAXIS1, NAXIS2, NAXIS3 wtc.
     105 */
    33106 inline const vector<int>& dimOfImageAxes() const { return naxisn_;}
     107
     108 /*! return number of columns (return 1 if IMAGE) */
    34109  int     NbColsFromFits() const;
     110
     111  /*! return a character denoting data type of column number 'nocol' in a BINTABLE :
     112
     113D : double
     114
     115E : float
     116
     117I : integer
     118   
     119S : character string
     120
     121  */
    35122  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  */
    36127  int     NentriesFromFits(int nocol) const;
     128
     129  /*! name of the column number 'nocol' of the current BINTABLE extension
     130   */
    37131  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   */
    38136  int     ColStringLengthFromFits(int nocol) const;
     137
     138  /*! return a reference on a DVList containing the keywords from FITS file
     139   */
    39140  inline const DVList& DVListFromFits() const { return dvl_;}
     141
     142
     143  /*!
     144fill 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  */
    40148  void GetBinTabFCol(double* valeurs, int nentries, int NoCol) const;
     149
     150  /*! same as previous method with float data */
    41151  void GetBinTabFCol(float* valeurs, int nentries, int NoCol) const;
     152  /*! same as previous method with int data */
    42153  void GetBinTabFCol(int* valeurs, int nentries,  int NoCol) const;
     154  /*! same as previous method with char* data */
    43155  void GetBinTabFCol(char** valeurs,int nentries, int NoCol) const;
    44156  // 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   */
    45162  void putImageToFits( int nbData, double* map) const;
     163
     164  /*! same as previous method with float data */
    46165  void putImageToFits(int nbData, float* map ) const;
     166
     167  /*! same as previous method with int data */
    47168  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   */
    48174  void putColToFits(int nocol, int nentries, double* donnees) const;
     175
     176  /*! same as previous method with float data */
    49177  void putColToFits(int nocol, int nentries, float* donnees) const;
     178
     179  /*! same as previous method with int data */
    50180  void putColToFits(int nocol, int nentries, int* donnees) const;
     181
     182  /*! same as previous method with char* data */
    51183  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  */
    53190  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   */
    54201  void makeHeaderBntblOnFits ( char* fieldType, char** Noms, int nentries, int tfields, DVList &dvl, char* extname,  vector<int> taille_des_chaines) const;
    55202
    56203  void readheader();
    57   void printerror(int&) const;
    58   void printerror(int&,char* texte) const;
     204static  void printerror(int&) ;
     205static  void printerror(int&,char* texte) ;
    59206  protected: 
    60207    virtual void    ReadFromFits(const FitsFile& ff)=0;           
    61208    virtual void    WriteToFits(const FitsFile& ff)=0;           
    62     //    virtual void*   getColFromObj(int colNr)=0;
    63209private:
    64210
    65   void read_image ();
    66   void GetBinTabParameters();
     211static  void GetImageParameters (fitsfile* fileptr,int& bitpix,int& naxis,vector<int>& naxisn);
     212static  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);
     217static void KeywordsIntoDVList(fitsfile* fileptr, DVList& dvl);
    67218  void writeSignatureOnFits() const;
    68219
     220  //! pointer to the FITS file, defined in fitsio.h
     221  fitsfile *fptr_;
    69222 
    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
    77231  int bitpix_;
     232
     233  //! fits-Image parameter
    78234  int naxis_;
     235
     236  //! fits-Image parameters : sizes of dimensions
    79237  vector<int> naxisn_;
     238
     239  //! fits-Image parameter: number of data
    80240  int nbData_;
    81241
    82   // Bintable parameters
     242  //! Bintable parameter
    83243  int nrows_;
     244
     245  //! Bintable parameter
    84246  vector<int> repeat_;
    85247
     248  //! Bintable parameter
    86249  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
    93261  DVList dvl_;
    94262};
Note: See TracChangeset for help on using the changeset viewer.