Changeset 2907 in Sophya for trunk/SophyaExt/FitsIOServer/fitsntuple.cc
- Timestamp:
- Jan 17, 2006, 10:09:29 AM (20 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/SophyaExt/FitsIOServer/fitsntuple.cc
r2898 r2907 104 104 ColName[k][LONNOM] = '\0'; 105 105 } 106 // Reza Dec 2006 : Colonnes du NTuple de type double par defaut 106 107 for (k=0; k<nbcols;k++) 107 108 { 108 109 FitsFile::FitsDataType ss= is.ColTypeFromFits(k); 109 110 string type; 110 if ( ss != FitsFile::FitsDataType_float)111 if ( (ss != FitsFile::FitsDataType_double) && (ss != FitsFile::FitsDataType_float) ) 111 112 { 112 if (ss == FitsFile::FitsDataType_ double) type= string("double");113 if (ss == FitsFile::FitsDataType_int) type= string("integer"); 113 114 else 114 if (ss == FitsFile::FitsDataType_ int) type= string("integer");115 if (ss == FitsFile::FitsDataType_char) type = string("char*"); 115 116 else 116 if (ss == FitsFile::FitsDataType_char) type = string("char*"); 117 else 118 type = string("unknown"); 117 type = string("unknown"); 119 118 cout << " WARNING: the column " << k << " on fits file is not float but : " << type << endl; 120 119 } 121 120 } 121 bool fgdouble = true; 122 if ( is.ColTypeFromFits(0) == FitsFile::FitsDataType_float ) fgdouble = false; 122 123 if(dobj_ == NULL) 123 124 { 124 dobj_= new NTuple(nbcols,ColName );125 dobj_= new NTuple(nbcols,ColName,512,fgdouble); 125 126 ownobj_ = true; 126 127 } … … 128 129 { 129 130 dobj_->Clean(); 130 (*dobj_) = NTuple(nbcols,ColName );131 (*dobj_) = NTuple(nbcols,ColName,512,fgdouble); 131 132 } 132 133 for (k=0; k<nbcols;k++) … … 136 137 delete [] ColName; 137 138 138 float* ligne = new float[nbcols]; 139 // Reza Dec 2006 : Colonnes du NTuple de type double par defaut 140 double* dligne = NULL; 141 float* fligne = NULL; 142 if (fgdouble) dligne = new double[nbcols]; 143 else fligne = new float[nbcols]; 139 144 140 145 int firstln, lastln; … … 150 155 } 151 156 int numLigne; 152 for (numLigne=firstln; numLigne < lastln; numLigne++) 153 { 154 is.GetBinTabLine(numLigne, ligne); 155 dobj_->Fill((r_4*)ligne); 156 } 157 delete [] ligne; 157 if (fgdouble) 158 for (numLigne=firstln; numLigne < lastln; numLigne++) { 159 is.GetBinTabLine(numLigne, dligne); 160 dobj_->Fill((r_8*)dligne); 161 } 162 else 163 for (numLigne=firstln; numLigne < lastln; numLigne++) { 164 is.GetBinTabLine(numLigne, fligne); 165 dobj_->Fill((r_4*)fligne); 166 } 167 168 if (dligne) delete [] dligne; 169 if (fligne) delete [] fligne; 158 170 159 171 dobj_->Info()=is.DVListFromFits(); … … 191 203 } 192 204 193 string type(ncols, 'E'); 194 vector<int> dummy; 195 196 os.makeHeaderBntblOnFits(type,Noms, nentries, ncols, &dvl, extname, dummy); 197 float* column = new float[nentries]; 198 for (k=0; k<ncols;k++) 199 { 200 int j; 201 for(j = 0; j < nentries; j++) column[j]= dobj_->GetVal(j,k); 202 os.PutColToFits(k, nentries, column); 203 } 204 delete [] column; 205 206 } 207 205 // Gestion NTuple en double ou float / Reza Jan 2006 206 if (dobj_->mFgDouble) { // NTuple avec colonnes double 207 string type(ncols, 'D'); 208 vector<int> dummy; 209 210 os.makeHeaderBntblOnFits(type,Noms, nentries, ncols, &dvl, extname, dummy); 211 double* column = new double[nentries]; 212 for (k=0; k<ncols;k++) 213 { 214 int j; 215 for(j = 0; j < nentries; j++) column[j]= dobj_->GetCell(j,k); 216 os.PutColToFits(k, nentries, column); 217 } 218 delete [] column; 219 } 220 else { // NTuple avec colonnes float 221 string type(ncols, 'E'); 222 vector<int> dummy; 223 224 os.makeHeaderBntblOnFits(type,Noms, nentries, ncols, &dvl, extname, dummy); 225 float* column = new float[nentries]; 226 for (k=0; k<ncols;k++) 227 { 228 int j; 229 for(j = 0; j < nentries; j++) column[j]= dobj_->GetVal(j,k); 230 os.PutColToFits(k, nentries, column); 231 } 232 delete [] column; 233 } 234 } 235
Note:
See TracChangeset
for help on using the changeset viewer.