Changeset 1136 in Sophya for trunk/SophyaExt/FitsIOServer/fitsntuple.cc
- Timestamp:
- Aug 24, 2000, 12:18:02 PM (25 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsntuple.cc
r1047 r1136 25 25 ownobj_ = true; 26 26 27 Read F(inputfile,hdunum);27 Read(inputfile,hdunum); 28 28 } 29 29 … … 46 46 { 47 47 if (ownobj_ && dobj_ != NULL) delete dobj_; 48 if (column_ != NULL) delete [] column_;48 // if (column_ != NULL) delete [] column_; 49 49 } 50 50 51 void FITS_NTuple::Read(char inputfile[],int hdunum)52 {53 ReadF(inputfile,hdunum);54 }51 //void FITS_NTuple::Read(char inputfile[],int hdunum) 52 //{ 53 // ReadF(inputfile,hdunum); 54 //} 55 55 void FITS_NTuple::ReadLines(char inputfile[],int firstLine, int numberOfLines,int hdunum) 56 56 { 57 57 fistLineToBeRead_ = firstLine; 58 58 numberOfLinesToBeRead_ = numberOfLines; 59 Read F(inputfile,hdunum);59 Read(inputfile,hdunum); 60 60 } 61 61 62 62 63 63 64 void FITS_NTuple::Write(char outputfile[], bool OldFile) 64 //void FITS_NTuple::Write(char outputfile[], bool OldFile) 65 //{ 66 // WriteF(outputfile, OldFile); 67 //} 68 69 void FITS_NTuple::ReadFromFits(FitsInFile& is) 65 70 { 66 WriteF(outputfile, OldFile); 67 } 68 69 void FITS_NTuple::ReadFromFits() 70 { 71 // if (!fn.IsFitsTable()) 72 if (!IsFitsTable()) 71 if (!is.IsFitsTable()) 73 72 { 74 73 throw PException("ReadFromFits: the fits file seems not to be a bintable nor ASCII table"); 75 74 } 76 75 int nbcols, nbentries; 77 // nbcols = fn.NbColsFromFits(); 78 nbcols = NbColsFromFits(); 76 nbcols = is.NbColsFromFits(); 79 77 nbentries = 0; 80 78 int k; 81 // for (k=0; k<nbcols; k++) nbentries=max( nbentries, fn.NentriesFromFits(k) ); 82 for (k=0; k<nbcols; k++) nbentries=max( nbentries, NentriesFromFits(k) ); 79 for (k=0; k<nbcols; k++) nbentries=max( nbentries, is.NentriesFromFits(k) ); 83 80 84 81 char ** ColName = new char*[nbcols]; … … 87 84 { 88 85 ColName[k] = new char[LONNOM1]; 89 // strncpy(ColName[k], fn.ColNameFromFits(k).c_str(),LONNOM); 90 strncpy(ColName[k], ColNameFromFits(k).c_str(),LONNOM); 86 strncpy(ColName[k], is.ColNameFromFits(k).c_str(),LONNOM); 91 87 ColName[k][LONNOM] = '\0'; 92 88 } 93 89 for (k=0; k<nbcols;k++) 94 90 { 95 // char ss= fn.ColTypeFromFits(k); 96 char ss= ColTypeFromFits(k); 91 char ss= is.ColTypeFromFits(k); 97 92 string type; 98 93 if (ss != 'E') … … 123 118 } 124 119 delete [] ColName; 125 // if (column_ != NULL) delete [] column_;126 // column_ = new float[nbentries];127 120 128 // j'initialise le NTuple a zero, pour le dimensionner129 // (SetVal suppose que le ntuple est deja dimensionne)130 121 r_4* ligne = new r_4[nbcols]; 131 // for (k=0; k<nbcols; k++) ligne[k]=0.;132 // for (k=0; k<nbentries;k++) dobj_->Fill(ligne);133 // delete [] ligne;134 122 135 //%%%%%% 136 int firstln, lastln; 137 if (numberOfLinesToBeRead_ > 0) 138 { 139 firstln = fistLineToBeRead_; 140 lastln = firstln + numberOfLinesToBeRead_; 141 } 142 else 143 { 144 firstln = 0; 145 lastln = nbentries; 146 } 147 int numLigne; 148 for (numLigne=firstln; numLigne < lastln; numLigne++) 149 { 150 // fn.GetBinTabLine(numLigne, ligne); 151 GetBinTabLine(numLigne, ligne); 152 dobj_->Fill(ligne); 153 } 154 delete [] ligne; 123 int firstln, lastln; 124 if (numberOfLinesToBeRead_ > 0) 125 { 126 firstln = fistLineToBeRead_; 127 lastln = firstln + numberOfLinesToBeRead_; 128 } 129 else 130 { 131 firstln = 0; 132 lastln = nbentries; 133 } 134 int numLigne; 135 for (numLigne=firstln; numLigne < lastln; numLigne++) 136 { 137 is.GetBinTabLine(numLigne, ligne); 138 dobj_->Fill(ligne); 139 } 140 delete [] ligne; 155 141 156 //%%%%%%% 142 dobj_->Info()=is.DVListFromFits(); 143 } 157 144 158 159 // for (k=0; k<nbcols;k++) 160 // { 161 // fn.GetBinTabFCol(column_, nbentries, k); 162 // for (int nent=0; nent<nbentries; nent++) dobj_->SetVal(nent,k, column_[nent]); 163 // } 164 // dobj_->Info()=fn.DVListFromFits(); 165 dobj_->Info()=DVListFromFits(); 166 } 167 void FITS_NTuple::WriteToFits() 145 void FITS_NTuple::WriteToFits(FitsOutFile& os) 168 146 { 169 147 if(dobj_ == NULL) … … 192 170 strncpy(Noms[k],dobj_->NomIndex(k),LONNOM1); 193 171 } 194 // la librairie fitsio ecrit colonne par colonne 172 195 173 char* type= new char[ncols+1]; 196 174 for (k=0;k<ncols+1;k++) type[k]='E'; 197 175 type[ncols]='\0'; 198 176 vector<int> dummy; 199 // fn.makeHeaderBntblOnFits(type,Noms, nentries, ncols, dvl, extname, dummy); 200 makeHeaderBntblOnFits(type,Noms, nentries, ncols, dvl, extname, dummy);177 178 os.makeHeaderBntblOnFits(type,Noms, nentries, ncols, dvl, extname, dummy); 201 179 for (k=0; k< ncols; k++) 202 180 { … … 205 183 delete [] Noms; 206 184 delete [] type; 207 for (k=0; k<ncols;k++) putColToFits(k, nentries, getColFromObj(k)); 185 float* column = new float[nentries]; 186 for (k=0; k<ncols;k++) 187 { 188 for(int j = 0; j < nentries; j++) column[j]= dobj_->GetVal(j,k); 189 os.putColToFits(k, nentries, column); 190 } 191 delete [] column; 208 192 209 193 } 210 194 211 float* FITS_NTuple::getColFromObj(int colNr)212 {213 if (column_ != NULL)214 {215 delete [] column_;216 column_ = NULL;217 }218 column_ = new float[dobj_->NEntry()];219 for(int j = 0; j < dobj_->NEntry(); j++) column_[j]= dobj_->GetVal(j,colNr);220 return column_;221 }
Note:
See TracChangeset
for help on using the changeset viewer.