Changeset 2058 in Sophya for trunk/ArchTOIPipe/Kernel/fitstoirdr.cc
- Timestamp:
- Jun 18, 2002, 2:21:09 PM (23 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/ArchTOIPipe/Kernel/fitstoirdr.cc
r2041 r2058 3 3 // Christophe Magneville 4 4 // Reza Ansari 5 // $Id: fitstoirdr.cc,v 1. 29 2002-06-03 14:23:39ansari Exp $5 // $Id: fitstoirdr.cc,v 1.30 2002-06-18 12:21:08 ansari Exp $ 6 6 7 7 #include "fitstoirdr.h" … … 22 22 implicitSN = false; 23 23 implicitSNStart = 0; 24 25 // Variables rajoutee pour gerer les fichiers de flag de LevelS Reza 18/6/2002 26 sepFlagfile = false; 27 fptrflg = NULL; 24 28 } 25 29 … … 63 67 fits_report_error(stderr, fstatus); 64 68 fits_unlock(); 65 throw IOExc(" fitsio error");69 throw IOExc("FITSTOIReader::openFile() fitsio error"); 66 70 } 67 71 … … 89 93 firstSn = (int) (y+.1); 90 94 } 95 96 // Ouverture fichier de flag separe de LevelS (Reza 18/6/2002) 97 if (sepFlagfile) { 98 fits_open_file(&fptrflg,sepFlagFileName.c_str(),READONLY,&fstatus); 99 if (fstatus != 0) { 100 fits_report_error(stderr, fstatus); 101 fits_unlock(); 102 throw IOExc("FITSTOIReader::openFile() - sepFlagfile open fitsio error"); 103 } 104 fits_movabs_hdu(fptrflg, 2, NULL, &fstatus); 105 if (fstatus != 0) { 106 fits_report_error(stderr, fstatus); 107 fits_unlock(); 108 throw IOExc("FITSTOIReader::openFile() - sepFlagfile fits_movabs_hdu(2) fitsio error"); 109 } 110 long nrowsflg; 111 fits_get_num_rows(fptrflg,&nrowsflg,&fstatus); 112 if (nrows != nrowsflg) { 113 cerr << " FITSTOIReader::openFile()/Error: Different NRows in flag and data files!" << endl; 114 fits_unlock(); 115 throw ParmError("FITSTOIReader::openFile() Different NRows in flag and data files"); 116 } 117 } 118 // 91 119 fits_unlock(); 92 120 } 93 121 94 122 void FITSTOIReader::init() { 123 124 // Modif pour fichiers de flag separe de LevelS (Reza 18/6/2002) 125 if (sepFlagfile && (allfn.size() > 1) ) { 126 cerr << "FITSTOIReader::init()/Error- Multiple files and separate flag file not allowed !"<<endl; 127 throw ParmError("FITSTOIReader::init() Multiple files and separate flag file not allowed"); 128 } 129 95 130 openFile(allfn.front()); 96 131 … … 148 183 } 149 184 185 void FITSTOIReader::setFlagFile(string fn, vector<FlagToiDef> flags) 186 { 187 if (flags.size() < 1) { 188 cerr << " FITSTOIReader::setFlagFile()/Error flag.size() = 0 ! " << endl; 189 throw ParmError("FITSTOIReader::setFlagFile() flag.size() = 0"); 190 } 191 192 sepFlagfile = true; 193 sepFlagFileName = fn; 194 sepFlagCols = flags; 195 } 196 150 197 void FITSTOIReader::run() { 151 198 for (vector<string>::iterator i=allfn.begin(); i!=allfn.end(); i++) { … … 154 201 else run1(); // Lecture un echantillon a la fois 155 202 } 203 fits_lock(); 204 if (fptr) { 205 fits_close_file(fptr,&fstatus); 206 fptr = NULL; 207 } 208 if (sepFlagfile && fptrflg) { 209 fits_close_file(fptrflg,&fstatus); 210 fptrflg = NULL; 211 } 212 fits_unlock(); 156 213 } 157 214 … … 198 255 fits_read_col_lng(fptr,j+2,i+1,1,1,0,&flg,&anyNul,&fstatus); 199 256 } 257 258 if (sepFlagfile) { // Ajout Reza (18/6/2002) pour fichier de flags separe 259 int sflg; 260 flg = 0; 261 for(int skf=0; skf<sepFlagCols.size(); skf++) { 262 fits_read_col_int(fptrflg, skf+1, i+1,1,1,0,&sflg,&anyNul,&fstatus); 263 if (sflg) flg |= sepFlagCols[skf]; 264 } 265 } // Fin modif pour fichier de flags separe (18/6/2002) 266 200 267 tabflag[k] = flg; 201 268 // fits_unlock(); … … 237 304 } 238 305 uint_8 * tmpflg = new uint_8[Buff_Sz]; 306 307 // Ajout Reza (18/6/2002) pour fichier de flags separe 308 int* stmpflg = NULL; 309 if (sepFlagfile) stmpflg = new int[Buff_Sz]; 310 // Fin modif pour fichier de flags separe (18/6/2002) 311 239 312 240 313 TOIManager* mgr = TOIManager::getManager(); … … 286 359 if(colflg[k]==NULL) continue; 287 360 fits_read_col_lng(fptr,j+2,ideb+1,1,n,0,colflg[k],&anyNul,&fstatus); 361 // Ajout Reza (18/6/2002) pour fichier de flags separe 362 if (sepFlagfile) { 363 uint_8 sflg = 0; 364 int sjj; 365 for(sjj=0; sjj<n; sjj++) colflg[k][sjj] = 0; 366 for(int skf=0; skf<sepFlagCols.size(); skf++) { 367 fits_read_col_int(fptrflg, skf+1, ideb+1,1,n,0,stmpflg,&anyNul,&fstatus); 368 for(sjj=0; sjj<n; sjj++) 369 if (stmpflg) colflg[k][sjj] |= sepFlagCols[skf]; 370 } 371 } // Fin modif pour fichier de flags separe (18/6/2002) 372 288 373 } 289 374 if(fstatus!=0) { … … 316 401 delete [] samplenum; 317 402 delete [] tmpflg; 403 if (sepFlagfile) delete [] stmpflg; 318 404 {for(int k=0; k<getNOut(); k++) { 319 405 if(colval[k]!=NULL) delete [] colval[k];
Note:
See TracChangeset
for help on using the changeset viewer.