Changeset 34650
- Timestamp:
- Nov 2, 2012, 3:18:18 PM (14 years ago)
- Location:
- trunk/ppTranslate/src
- Files:
-
- 3 edited
-
ppMops.h (modified) (1 diff)
-
ppMopsRead.c (modified) (8 diffs)
-
ppMopsWrite.c (modified) (4 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppTranslate/src/ppMops.h
r34505 r34650 59 59 psVector *raExtErr, *decExtErr; // Error in sky coordinates for RA_EXT and DEC_EXT 60 60 psVector *mask; // Mask for detections 61 float platescale; //Plate scale at centroid 61 62 } ppMopsDetections; 62 63 -
trunk/ppTranslate/src/ppMopsRead.c
r34511 r34650 37 37 * 38 38 * Look for "DIRTY_BUG_FIX" to know where 39 * 39 * 40 40 * and set the following to 0 to change the code 41 41 */ 42 #define DIRTY_BUG_FIX 142 #define DIRTY_BUG_FIX 0 43 43 /* 44 44 * … … 145 145 if (skyChipPsfVersion != args->version) { 146 146 if (skyChipPsfVersion > args->version) { 147 psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n",148 skyChipPsfVersion, args->version);147 psWarning("The FITS data will be downgraded from PS1_DV%d to PS1_DV%d\n", 148 skyChipPsfVersion, args->version); 149 149 } else { // Necessarily: skyChipPsfVersion > args->version 150 psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n",151 skyChipPsfVersion, args->version);150 psWarning("The FITS data will be upgraded from PS1_DV%d to PS1_DV%d (new values set to default 0, NaN...)\n", 151 skyChipPsfVersion, args->version); 152 152 } 153 153 } … … 199 199 addDummyValues(det->table, size, args->version); 200 200 if (!psFitsMoveExtName(fits, "SkyChip.xfit")) { 201 psTrace("ppMops.read", 3, "No fitted trails extension");201 psTrace("ppMops.read", 3, "No fitted trails extension"); 202 202 } else { 203 psTrace("ppMops.read", 3, "Fitted trails extension found\n");204 psTrace("ppMops.read", 10, "Getting size?\n");205 int fittedTrailsSize = psFitsTableSize(fits);206 psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize);207 if (fittedTrailsSize <= 0) {208 psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i);209 psTrace("ppMops.read", 3, "No entry in fitted trails extension!!!!\n");210 psErrorClear();211 } else {212 psTrace("ppMops.read", 10, "Reading table of interest?\n");213 psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest214 psTrace("ppMops.read", 10, "OK for table of interest\n");215 if (!fittedTrails) {216 psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i);217 return NULL;218 }219 //Iterate on the different names and types expected in the fittedTrails parameters220 psTrace("ppMops.read", 10, "Getting IPP_IDET\n");221 psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET");222 replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet);223 replaceDummyValuesF32("Y_EXT", fittedTrails, det->table, idet);224 replaceDummyValuesF32("X_EXT_SIG", fittedTrails, det->table, idet);225 replaceDummyValuesF32("Y_EXT_SIG", fittedTrails, det->table, idet);226 replaceDummyValuesF32("EXT_INST_MAG", fittedTrails, det->table, idet);227 replaceDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, det->table, idet);228 replaceDummyValuesS32("NPARAMS", fittedTrails, det->table, idet);229 replaceDummyValuesF32("EXT_WIDTH_MAJ", fittedTrails, det->table, idet);230 replaceDummyValuesF32("EXT_WIDTH_MIN", fittedTrails, det->table, idet);231 replaceDummyValuesF32("EXT_THETA", fittedTrails, det->table, idet);232 replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR", fittedTrails, det->table, idet);233 // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files234 // We explicitely let it set to NaN, hence the commented out235 // following line236 //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR", fittedTrails, det->table, idet);237 replaceDummyValuesF32("EXT_THETA_ERR", fittedTrails, det->table, idet);238 psTrace("ppMops.read", 10, "Got all version 2 values\n");239 if (skyChipPsfVersion >= 3) {240 psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n");241 replaceDummyValuesF32("RA_EXT", fittedTrails, det->table, idet);242 // Note: RA_EXT_SIGMA is computed (see det->raExtErr)243 replaceDummyValuesF32("DEC_EXT", fittedTrails, det->table, idet);244 // Note: DEC_EXT_SIGMA is computed (see det->decExtErr)245 //Note: POSANG_EXT is POSANGLE in xfit203 psTrace("ppMops.read", 3, "Fitted trails extension found\n"); 204 psTrace("ppMops.read", 10, "Getting size?\n"); 205 int fittedTrailsSize = psFitsTableSize(fits); 206 psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize); 207 if (fittedTrailsSize <= 0) { 208 psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i); 209 psTrace("ppMops.read", 3, "No entry in fitted trails extension!!!!\n"); 210 psErrorClear(); 211 } else { 212 psTrace("ppMops.read", 10, "Reading table of interest?\n"); 213 psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest 214 psTrace("ppMops.read", 10, "OK for table of interest\n"); 215 if (!fittedTrails) { 216 psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i); 217 return NULL; 218 } 219 //Iterate on the different names and types expected in the fittedTrails parameters 220 psTrace("ppMops.read", 10, "Getting IPP_IDET\n"); 221 psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET"); 222 replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet); 223 replaceDummyValuesF32("Y_EXT", fittedTrails, det->table, idet); 224 replaceDummyValuesF32("X_EXT_SIG", fittedTrails, det->table, idet); 225 replaceDummyValuesF32("Y_EXT_SIG", fittedTrails, det->table, idet); 226 replaceDummyValuesF32("EXT_INST_MAG", fittedTrails, det->table, idet); 227 replaceDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, det->table, idet); 228 replaceDummyValuesS32("NPARAMS", fittedTrails, det->table, idet); 229 replaceDummyValuesF32("EXT_WIDTH_MAJ", fittedTrails, det->table, idet); 230 replaceDummyValuesF32("EXT_WIDTH_MIN", fittedTrails, det->table, idet); 231 replaceDummyValuesF32("EXT_THETA", fittedTrails, det->table, idet); 232 replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR", fittedTrails, det->table, idet); 233 // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files 234 // We explicitely let it set to NaN, hence the commented out 235 // following line 236 //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR", fittedTrails, det->table, idet); 237 replaceDummyValuesF32("EXT_THETA_ERR", fittedTrails, det->table, idet); 238 psTrace("ppMops.read", 10, "Got all version 2 values\n"); 239 if (skyChipPsfVersion >= 3) { 240 psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n"); 241 replaceDummyValuesF32("RA_EXT", fittedTrails, det->table, idet); 242 // Note: RA_EXT_SIGMA is computed (see det->raExtErr) 243 replaceDummyValuesF32("DEC_EXT", fittedTrails, det->table, idet); 244 // Note: DEC_EXT_SIGMA is computed (see det->decExtErr) 245 //Note: POSANG_EXT is POSANGLE in xfit 246 246 #if DIRTY_BUG_FIX 247 247 #else 248 renameDummyValuesF32("POSANGLE", fittedTrails, "POSANG_EXT", det->table, idet);249 #endif 250 //Note: PLTSCALE_EXT in xfit is PLTSCALE 251 renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet);252 renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet);253 replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet);254 renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet);255 replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet);256 replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet);257 psTrace("ppMops.read", 10, "Got all version 3 values\n");258 }259 }248 renameDummyValuesF32("POSANGLE", fittedTrails, "POSANG_EXT", det->table, idet); 249 #endif 250 //Not written anymore but still used in computation 251 renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet); 252 renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet); 253 replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet); 254 renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet); 255 replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet); 256 replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet); 257 psTrace("ppMops.read", 10, "Got all version 3 values\n"); 258 } 259 } 260 260 } 261 261 } … … 264 264 if (args->version == 0) { 265 265 if (skyChipPsfVersion < 2) { 266 // XXX: TODO: Do we need to add dummy vectors for the missing columns?266 // XXX: TODO: Do we need to add dummy vectors for the missing columns? 267 267 } 268 268 } … … 324 324 psU32 flags = flagsV->data.U32[row]; // psFitsTableGetU32(NULL, table, row, "FLAGS"); 325 325 if (flags & SOURCE_MASK) { 326 psTrace("ppMops.read", 10, "Discarding row %ld from input %d because of flags: %ud", row, i, flags);327 det->mask->data.U8[row] = 0xFF;328 continue;326 psTrace("ppMops.read", 10, "Discarding row %ld from input %d because of flags: %ud", row, i, flags); 327 det->mask->data.U8[row] = 0xFF; 328 continue; 329 329 } 330 330 … … 340 340 341 341 if (!isfinite(det->x->data.F32[row]) || !isfinite(det->y->data.F32[row]) || 342 !isfinite(det->ra->data.F64[row]) || !isfinite(det->dec->data.F64[row]) ||343 !isfinite(mag->data.F32[row]) || !isfinite(magErr->data.F32[row]) ||344 !isfinite(xErr) || !isfinite(yErr) || !isfinite(scale) || !isfinite(angle)) {345 psTrace("ppMops.read", 10,346 "Discarding row %ld from input %d because of non-finite values: "347 "%f %f %lf %lf %f %f %f %f %f %f",348 row, i,349 det->x->data.F32[row], det->y->data.F32[row],350 det->ra->data.F64[row], det->dec->data.F64[row],351 mag->data.F32[row], magErr->data.F32[row],352 xErr, yErr, scale, angle);353 det->mask->data.U8[row] = 0xFF;354 continue;342 !isfinite(det->ra->data.F64[row]) || !isfinite(det->dec->data.F64[row]) || 343 !isfinite(mag->data.F32[row]) || !isfinite(magErr->data.F32[row]) || 344 !isfinite(xErr) || !isfinite(yErr) || !isfinite(scale) || !isfinite(angle)) { 345 psTrace("ppMops.read", 10, 346 "Discarding row %ld from input %d because of non-finite values: " 347 "%f %f %lf %lf %f %f %f %f %f %f", 348 row, i, 349 det->x->data.F32[row], det->y->data.F32[row], 350 det->ra->data.F64[row], det->dec->data.F64[row], 351 mag->data.F32[row], magErr->data.F32[row], 352 xErr, yErr, scale, angle); 353 det->mask->data.U8[row] = 0xFF; 354 continue; 355 355 } 356 356 … … 368 368 // Same for EXT data if version permits 369 369 if (skyChipPsfVersion >= 3) { 370 xErr = xExtErrV->data.F32[row];371 yErr = yExtErrV->data.F32[row];372 scale = scaleExtV->data.F32[row]/3600.;373 #if DIRTY_BUG_FIX 374 angle = 0.;370 xErr = xExtErrV->data.F32[row]; 371 yErr = yExtErrV->data.F32[row]; 372 scale = scaleExtV->data.F32[row]/3600.; 373 #if DIRTY_BUG_FIX 374 angle = 0.; 375 375 #else 376 angle = angleExtV->data.F32[row]; 377 #endif 378 cosAngle = cos(angle); 379 sinAngle = sin(angle); 380 cosAngle2 = PS_SQR(cosAngle); 381 sinAngle2 = PS_SQR(sinAngle); 382 xErr2 = PS_SQR(xErr); 383 yErr2 = PS_SQR(yErr); 384 errScale = scale / 3600.0; 385 det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2); 386 det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2); 376 angle = angleExtV->data.F32[row]; 377 #endif 378 cosAngle = cos(angle); 379 sinAngle = sin(angle); 380 cosAngle2 = PS_SQR(cosAngle); 381 sinAngle2 = PS_SQR(sinAngle); 382 xErr2 = PS_SQR(xErr); 383 yErr2 = PS_SQR(yErr); 384 errScale = scale / 3600.0; 385 det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2); 386 det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2); 387 //Update the platescale value (should be a constant) 388 det->platescale = scale; 387 389 } 388 390 } … … 413 415 } 414 416 #endif 417 415 418 static psVector* createDummyS32(long size) { 416 419 psVector* dummy = psVectorAlloc(size, PS_TYPE_S32); 417 psVectorInit(dummy, NAN);420 psVectorInit(dummy, 0); 418 421 return dummy; 419 422 } -
trunk/ppTranslate/src/ppMopsWrite.c
r34488 r34650 85 85 psMetadataAddF32(header, PS_LIST_TAIL, "SKY", 0, "Exposure avg sky background", args->sky); 86 86 psMetadataAddStr(header, PS_LIST_TAIL, "SHUTOUTC", 0, "Camera exposure shutter open (UTC)", args->shutoutc); 87 psMetadataAddF32(header, PS_LIST_TAIL, "PLTSCALE_EXT", 0, "Plate scale at centroid", det->platescale); 87 88 88 89 //field in header that tells about the CMF version … … 92 93 93 94 // Find the total number of detections 94 95 95 long total = 0; 96 96 for (long i=0; i<detections->n; i++) { … … 191 191 0); 192 192 if (args->version == 3) { 193 // Write data of version 3 (see ICD) 194 psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT", PS_DATA_F32, "Fitted centroid RA", 195 0); 196 psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT_SIGMA", PS_DATA_F32, "Fitted RA sigma", 197 0); 198 psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT", PS_DATA_F32, "Fitted centroid DEC", 199 0); 200 psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT_SIGMA", PS_DATA_F32, "Fitted DEC sigma", 201 0); 202 psMetadataAdd (row, PS_LIST_TAIL, "POSANG_EXT", PS_DATA_F32, "Fitted position angle", 203 0); 204 psMetadataAdd (row, PS_LIST_TAIL, "PLTSCALE_EXT", PS_DATA_F32, "Plate scale at centroid", 205 0); 206 psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLUX", PS_DATA_F32, "Fitted flux", 207 0); 208 psMetadataAdd (row, PS_LIST_TAIL, "EXT_CAL_MAG", PS_DATA_F32, "Calibrated mag", 209 0); 210 psMetadataAdd (row, PS_LIST_TAIL, "EXT_MAG_SIG", PS_DATA_F32, "Mag sigma", 211 0); 212 psMetadataAdd (row, PS_LIST_TAIL, "EXT_CHISQ", PS_DATA_F32, "Chi^2 of fit", 213 0); 214 psMetadataAdd (row, PS_LIST_TAIL, "EXT_NDOF", PS_DATA_F32, "Fit degrees of freedom", 215 0); 193 // Write data of version 3 (see ICD) 194 psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT", PS_DATA_F32, "Fitted centroid RA", 195 0); 196 psMetadataAdd (row, PS_LIST_TAIL, "RA_EXT_SIGMA", PS_DATA_F32, "Fitted RA sigma", 197 0); 198 psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT", PS_DATA_F32, "Fitted centroid DEC", 199 0); 200 psMetadataAdd (row, PS_LIST_TAIL, "DEC_EXT_SIGMA", PS_DATA_F32, "Fitted DEC sigma", 201 0); 202 psMetadataAdd (row, PS_LIST_TAIL, "POSANG_EXT", PS_DATA_F32, "Fitted position angle", 203 0); 204 psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLUX", PS_DATA_F32, "Fitted flux", 205 0); 206 psMetadataAdd (row, PS_LIST_TAIL, "EXT_CAL_MAG", PS_DATA_F32, "Calibrated mag", 207 0); 208 psMetadataAdd (row, PS_LIST_TAIL, "EXT_MAG_SIG", PS_DATA_F32, "Mag sigma", 209 0); 210 psMetadataAdd (row, PS_LIST_TAIL, "EXT_CHISQ", PS_DATA_F32, "Chi^2 of fit", 211 0); 212 psMetadataAdd (row, PS_LIST_TAIL, "EXT_NDOF", PS_DATA_F32, "Fit degrees of freedom", 213 0); 216 214 } 217 215 } … … 308 306 addColumn("DEC_EXT_SIGMA", NULL, 0); 309 307 addColumn("POSANG_EXT", NULL, 0); 310 addColumn("PLTSCALE_EXT", NULL, 0);311 308 addColumn("EXT_FLUX", NULL, 0); 312 309 addColumn("EXT_CAL_MAG", NULL, 0);
Note:
See TracChangeset
for help on using the changeset viewer.
