Changeset 1143 in Sophya


Ignore:
Timestamp:
Aug 25, 2000, 5:52:48 PM (25 years ago)
Author:
ansari
Message:

normalisation des DVList

Location:
trunk/SophyaExt/FitsIOServer
Files:
6 edited

Legend:

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

    r1136 r1143  
    4040FitsFile::~FitsFile()
    4141{
    42   cout << " destructeur FitsFile " << endl;
    4342  int status = 0;
    4443  if( fptr_ != NULL)
     
    106105void FitsInFile::InitNull()
    107106{
    108   cout << " init FitsInFile " << endl;
    109107  bitpix_ = 0;
    110108  naxis_ = 0;
     
    215213  fits_read_key(fileptr,TINT,"NAXIS",&naxis,NULL,&status);
    216214  if( status ) printerror( status );
    217   //  cout << " dimension lue " << naxis << endl;
    218215  // read the NAXISn keywords to get image size
    219216  long* naxes = new long[naxis] ;
     
    232229
    233230
    234 //void FitsInFile::ReadFInit(char flnm[],int hdunum)
    235231void FitsInFile::ReadFInit(int hdunum)
    236232{
    237   // InitNull();
     233  InitNull();
    238234  // int status = 0;
    239235 
     
    275271}
    276272
     273DVList  FitsInFile::DVListFromPrimaryHeader() const
     274   {
     275     int status;
     276     DVList dvl;
     277     KeywordsIntoDVList(fptr_, dvl, 1);
     278     int hdutype = 0;
     279     if (hdunum_ > 0) fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status);
     280     return dvl;
     281   }
    277282
    278283
     
    281286  int status = 0;
    282287  int hdutype;
     288  InitNull();
    283289  fits_movrel_hdu(fptr_, 1,&hdutype,&status);
    284290  if( status ) printerror( status," lecture du header suivant" );
     
    484490void FitsInFile::GetBinTabFCol(int* valeurs,int nentries, int NoCol) const
    485491    {
    486       cout <<" entree GetBinTabFCol " << endl;
    487492      int status= 0;
    488493      int DTYPE;
     
    735740  char card[FLEN_CARD]; 
    736741  char *comkey = "COMMENT";
     742  char comment[FLEN_COMMENT];
    737743
    738744  // shift with the number of mandatory keywords
    739   int num= 8;
    740 
     745  //  int num= 8;
     746    int num= 0;
     747    // primary header
     748    if (hdunum == 1)
     749      {
     750        // read NAXIS
     751        int naxis=0;
     752        fits_read_key(fileptr,TINT,"NAXIS",&naxis,NULL,&status);
     753        // number of mandatory keywords
     754        num = naxis+3;
     755      }
     756    // extensions
     757    else
     758      {
     759        if (hdutype == IMAGE_HDU)
     760          {
     761            // read NAXIS
     762            int naxis=0;
     763            fits_read_key(fileptr,TINT,"NAXIS",&naxis,NULL,&status);
     764            // number of mandatory keywords
     765            num = naxis+5;
     766          }
     767        else
     768          if(hdutype == ASCII_TBL || hdutype == BINARY_TBL)
     769            {
     770              // number of mandatory keywords
     771              num = 8;
     772            }
     773      }
    741774  int j;
    742775  for(j = num+1; j <= nkeys; j++)
     
    760793            {
    761794            case 'C':
    762               dvl[keyname]= strval;       
     795              fits_read_key(fileptr,TSTRING,keyname,strval,comment,&status);
     796              dvl[keyname]= strval;
     797              dvl.SetComment(keyname, comment);
    763798              break;
    764799            case 'I':
    765800              int ival;
    766               fits_read_key(fileptr,TINT,keyname,&ival,NULL,&status);
     801              fits_read_key(fileptr,TINT,keyname,&ival,comment,&status);
    767802                dvl[keyname]= (int_4) ival;             // Portage mac DY
     803                dvl.SetComment(keyname, comment);
    768804              break;
    769805            case 'L':
    770806              int ilog;
    771               if(strncmp(strval,"T",1) == 0) ilog= 1;
    772               else ilog= 0;
     807              fits_read_key(fileptr,TLOGICAL,keyname,&ilog,comment,&status);
    773808              dvl[keyname]= (int_4) ilog;
     809              dvl.SetComment(keyname, comment);
    774810              break;
    775811            case 'F':
    776812              double dval;
    777               fits_read_key(fileptr,TDOUBLE,keyname,&dval,NULL,&status);
     813              fits_read_key(fileptr,TDOUBLE,keyname,&dval,comment,&status);
    778814              dvl[keyname]= dval;
     815              dvl.SetComment(keyname, comment);
    779816              break;
    780817            }
     
    817854
    818855
    819 void FitsOutFile::makeHeaderImageOnFits(char type, int nbdim, int* naxisn)
     856void FitsOutFile::makeHeaderImageOnFits(char type, int nbdim, int* naxisn,  DVList &dvl)
    820857{
    821858  int status = 0;
     
    824861  if (hdunum_ == 1)
    825862    {
    826       if (imageOnPrimary_ == false) fits_create_img(fptr_,FLOAT_IMG,0,naxes,&status);
     863      if (imageOnPrimary_ == false)
     864        {
     865          fits_create_img(fptr_,FLOAT_IMG,0,naxes,&status);
     866          writeSignatureOnFits();       }
    827867      else  hdunum_--;
    828868    }
     
    844884
    845885  hdunum_++;
     886
     887  // write supplementary keywords
     888  //  dvl.Print();
     889  addKeywordsOfDVList(dvl);
     890
    846891  delete [] naxes;
    847892  if( status ) printerror( status, "erreur creation HDU IMAGE"  );
     
    854899  fits_write_img(fptr_,TDOUBLE,1,npix,map,&status);
    855900  if( status ) printerror( status, "erreur ecriture putImageToFits" );
    856   writeSignatureOnFits();
     901  //  writeSignatureOnFits();
    857902}
    858903
     
    863908  fits_write_img(fptr_,TFLOAT,1,npix, map,&status);
    864909  if( status ) printerror( status, "erreur ecriture putImageToFits" );
    865   writeSignatureOnFits();
     910  //  writeSignatureOnFits();
    866911
    867912}
     
    873918  fits_write_img(fptr_,TINT,1,npix,map,&status);
    874919  if( status ) printerror( status, "erreur ecriture putImageToFits" );
    875   writeSignatureOnFits();
     920  //  writeSignatureOnFits();
    876921}
    877922
     
    954999  //
    9551000  // write supplementary keywords
    956   //
    957   // get names and values from the join DVList object
    958   //  dvl.Print();
    959   fits_write_comment(fptr_,"--------------------------------------", &status);
    960   DVList::ValList::const_iterator it;
    961   for(it = dvl.Begin(); it != dvl.End(); it++)
    962     {
    963       char keytype= (*it).second.elval.typ;
    964       char keyname[10];
    965       strncpy(keyname,(*it).first.substr(0,64).c_str(),10);
    966       char comment[FLEN_COMMENT];
    967       switch (keytype)
    968         {
    969         case 'I' :
    970           {
    971             int ival=(*it).second.elval.iv;
    972             strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
    973             fits_write_key(fptr_,TINT,keyname,&ival,comment,&status);
    974             break;
    975           }
    976         case 'D' :
    977           {
    978             double dval=(*it).second.elval.dv;
    979             strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
    980             fits_write_key(fptr_,TDOUBLE,keyname,&dval,comment,&status);
    981             break;
    982           }
    983         case 'S' :
    984           {
    985             char strval[128];
    986             strncpy(strval,(*it).second.elval.strv->c_str(),127);
    987             strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
    988             fits_write_key(fptr_,TSTRING,keyname,&strval,comment,&status);
    989             break;
    990           }
    991         }
    992   if( status )  printerror( status,"fitsfile: probleme ecriture mot-cle du dvlist" );
    993     }
    994   fits_write_comment(fptr_,"--------------------------------------", &status);
     1001  addKeywordsOfDVList(dvl);
    9951002
    9961003}
     
    10971104}
    10981105
     1106void  FitsOutFile::DVListIntoPrimaryHeader(DVList& dvl) const
     1107{
     1108  int status = 0;
     1109  int hdutype;
     1110  fits_movabs_hdu(fptr_,1,&hdutype,&status);
     1111  addKeywordsOfDVList(dvl);
     1112  fits_movabs_hdu(fptr_,hdunum_,&hdutype,&status);
     1113}
     1114
    10991115
    11001116void FitsOutFile::writeSignatureOnFits() const
     
    11101126  fits_write_key(fptr_, TSTRING, keyname, &strval, comment, &status);
    11111127  if( status ) printerror( status );
    1112 
     1128  fits_write_date(fptr_, &status);
    11131129  fits_write_comment(fptr_,"..............................................", &status);
    11141130  fits_write_comment(fptr_, " SOPHYA package - FITSIOSever ", &status);
     
    11201136
    11211137
    1122 
    1123 
    1124 
     1138void FitsOutFile::addKeywordsOfDVList(DVList& dvl) const
     1139{
     1140  int status = 0;
     1141  fits_write_comment(fptr_,"---------- keywords from SOPHYA ---------", &status);
     1142  if (hdunum_ == 1) writeSignatureOnFits();
     1143  DVList::ValList::const_iterator it;
     1144  for(it = dvl.Begin(); it != dvl.End(); it++)
     1145    {
     1146      char keytype= (*it).second.elval.typ;
     1147      char keyname[10];
     1148      strncpy(keyname,(*it).first.substr(0,64).c_str(),10);
     1149      char comment[FLEN_COMMENT];
     1150      char strval[FLEN_VALUE]= "";
     1151      char *comkey = "COMMENT";
     1152      fits_read_keyword(fptr_, keyname, strval, NULL, &status);
     1153      if (status != 0 || strncmp(keyname,comkey,LEN_KEYWORD-1) == 0 )
     1154        {
     1155          status = 0;
     1156          switch (keytype)
     1157            {
     1158            case 'I' :
     1159              {
     1160                int ival=(*it).second.elval.iv;
     1161                strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
     1162                fits_write_key(fptr_,TINT,keyname,&ival,comment,&status);
     1163                break;
     1164              }
     1165            case 'D' :
     1166              {
     1167                double dval=(*it).second.elval.dv;
     1168                strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
     1169                fits_write_key(fptr_,TDOUBLE,keyname,&dval,comment,&status);
     1170                break;
     1171              }
     1172            case 'S' :
     1173              {
     1174                char strval[128];
     1175                strncpy(strval,(*it).second.elval.strv->c_str(),127);
     1176                strncpy(comment,(*it).second.elcomm.c_str(),FLEN_COMMENT );
     1177                fits_write_key(fptr_,TSTRING,keyname,&strval,comment,&status);
     1178                break;
     1179              }
     1180            }
     1181        }
     1182  if( status )  printerror( status,"fitsfile: probleme ecriture mot-cle du dvlist" );
     1183    }
     1184  fits_write_comment(fptr_,"--------------------------------------", &status);
     1185}
     1186
     1187
     1188
  • trunk/SophyaExt/FitsIOServer/fitsfile.h

    r1136 r1143  
    5858opens a file 'flnm'
    5959
    60 gets parameters in header (hdunum)
     60gets parameters in extension-header (hdunum)
    6161
    6262calls the method 'ReadFromFits' from the inherited  object
     
    125125   static  void printerror(int&) ;
    126126   static  void printerror(int&,char* texte) ;
    127    inline void InitNull() { cout << " init fitsfile " << endl; fptr_= NULL; hdutype_= 0; hdunum_ = 1;
     127   inline void InitNull() { fptr_= NULL; hdutype_= 0; hdunum_ = 1;
    128128   fits_status_ = 0;}
    129129
     
    150150   //   FitsInFile(char flnm[], int hdunum=0);
    151151   FitsInFile(char flnm[]);
    152    ~FitsInFile() {  cout << " destructeur FitsInFile " << endl; };
     152   ~FitsInFile() { ; };
    153153
    154154
     
    170170   */
    171171inline const DVList& DVListFromFits() const { return dvl_;}
     172
     173/* get the keywords of primary header in a DVList */
     174DVList  DVListFromPrimaryHeader() const;
    172175
    173176void moveToFollowingHeader();
     
    347350   FitsOutFile();
    348351   FitsOutFile(char flnm[], bool OldFile=false);
    349    ~FitsOutFile() {  cout << " destructeur FitsOutFile " << endl;};
     352   ~FitsOutFile() { ;};
    350353   inline void InitNull() {imageOnPrimary_=false;}
    351354
     
    368371\param <naxisn>  array containind sizes of the different dimensions
    369372  */
    370   void makeHeaderImageOnFits(char type, int nbdim, int* naxisn) ;
     373  void makeHeaderImageOnFits(char type, int nbdim, int* naxisn,  DVList &dvl) ;
     374
    371375
    372376  /*! write double data from array 'map'on an IMAGE extension
     
    391395
    392396  /*! create an BINTABLE header on FITS file.
    393 \param <fieldType> array containing characters denoting types of the different column (see method ColTypeFromFits)
     397\param <fieldType> array conta
     398ining characters denoting types of the different column (see method ColTypeFromFits)
    394399\param <Noms>  array of the names of columns
    395400\param <nentries>  number of data of each column
     
    416421  void putColToFits(int nocol, int nentries, char** donnees) const;
    417422
     423/////////////////////////////////////////////////////////////
     424//       methods for managing any type of FITS extension
     425////////////////////////////////////////////////////////
     426
     427
     428/* put keywords from a DVList into the primary header of the fits-file */
     429void  DVListIntoPrimaryHeader(DVList& dvl) const;
     430
     431
     432
    418433  private :
    419434
    420435  void writeSignatureOnFits() const;
    421 
     436  void addKeywordsOfDVList(DVList& dvl) const;
    422437
    423438  bool imageOnPrimary_;
  • trunk/SophyaExt/FitsIOServer/fitsntuple.cc

    r1136 r1143  
    119119  delete [] ColName;
    120120
    121   r_4* ligne = new r_4[nbcols];
     121  float* ligne = new float[nbcols];
    122122
    123123  int firstln, lastln;
     
    136136    {
    137137      is.GetBinTabLine(numLigne, ligne);
    138       dobj_->Fill(ligne);
     138      dobj_->Fill((r_4*)ligne);
    139139    }
    140140  delete [] ligne;
     
    161161  // extension name
    162162  char* extname = "NTuple_Binary_tbl";
    163   dvl.Print();
    164163
    165164  char** Noms = new char*[ncols];   
  • trunk/SophyaExt/FitsIOServer/fitsspherehealpix.cc

    r1136 r1143  
    7878    }
    7979
    80   DVList dvl
     80  DVList dvl( dobj_->Info() )
    8181
    8282  SphereCoordSys* cs= dobj_->GetCoordSys();
     
    9999  dvl.SetComment("LASTPIX", "Last pixel # (0 based)");
    100100  dvl["Content"]= "SphereHEALPix";
    101   dvl["EXTNAME"]= "SIMULATION";
    102   dvl["COMMENT"]= "Sky Map Pixelisation Specific Keywords";
    103101   
    104102  // On ecrit les dataBlocks
     
    106104  Noms[0]= new char[15];
    107105  strncpy(Noms[0],dvl.GetS("Content").c_str(),15);
    108   char extname[15];
    109   strncpy(extname,dvl.GetS("EXTNAME").c_str(),15);
     106  char extname[15] = "SIMULATION";
    110107
    111108  char Type[2];
     
    198195  // on effectue le decoupage en tranches
    199196  dobj_->SetThetaSlices();
    200   dobj_->Info()=is.DVListFromFits();
     197    dobj_->Info()  = is.DVListFromFits();
    201198
    202199
  • trunk/SophyaExt/FitsIOServer/fitstarray.cc

    r1136 r1143  
    9494  // On lit le tableau
    9595  is.GetSingleColumn( dobj_->Data(),dobj_->Size());
     96    dobj_->Info()  = is.DVListFromFits();
    9697
    9798}
     
    133134    }
    134135  cout << " nombre total d'elements a copier " << nbels << endl;
    135   os.makeHeaderImageOnFits(type, nbdim, naxisn);
     136  os.makeHeaderImageOnFits(type, nbdim, naxisn, dobj_->Info());
    136137  if (!dobj_->IsPacked())
    137138    {
  • trunk/SophyaExt/FitsIOServer/fitsxntuple.cc

    r1136 r1143  
    142142  delete [] ColName;
    143143
    144     r_8* dligne;
    145     r_4* fligne;
    146     int_4* iligne;
     144    double* dligne;
     145    float* fligne;
     146    int* iligne;
    147147    char** cligne;
    148148
    149   if (DfitsCol.size()>0) dligne = new r_8[DfitsCol.size()];
     149  if (DfitsCol.size()>0) dligne = new double[DfitsCol.size()];
    150150  else dligne=NULL;
    151   if (FfitsCol.size()>0) fligne = new r_4[FfitsCol.size()];
     151  if (FfitsCol.size()>0) fligne = new float[FfitsCol.size()];
    152152  else fligne=NULL;
    153   if (IfitsCol.size()>0) iligne = new int_4[IfitsCol.size()];
     153  if (IfitsCol.size()>0) iligne = new int[IfitsCol.size()];
    154154  else iligne=NULL;
    155155  if (SfitsCol.size()>0)
     
    176176    {
    177177      is.GetBinTabLine(numLigne, dligne, fligne, iligne, cligne );
    178       dobj_->Fill(dligne, fligne, iligne, cligne);   
     178      dobj_->Fill((r_8*)dligne, (r_4*)fligne, (int_4*)iligne, cligne);   
    179179    }
    180180    delete [] dligne;
     
    202202  // extension name
    203203  char* extname = "XNTuple_Binary_tbl";
    204   dvl.Print();
    205204  char** Noms = new char*[ncols];   
    206205  int k;
Note: See TracChangeset for help on using the changeset viewer.