- Timestamp:
- Oct 4, 2012, 10:48:19 AM (14 years ago)
- Location:
- trunk/ppTranslate/src
- Files:
-
- 2 edited
-
ppMops.h (modified) (1 diff)
-
ppMopsRead.c (modified) (14 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppTranslate/src/ppMops.h
r34474 r34505 56 56 psVector *ra, *dec; // Sky coordinates 57 57 psVector *raErr, *decErr; // Error in sky coordinates 58 psVector *raExt, *decExt; // Sky coordinates for RA_EXT and DEC_EXT 59 psVector *raExtErr, *decExtErr; // Error in sky coordinates for RA_EXT and DEC_EXT 58 60 psVector *mask; // Mask for detections 59 61 } ppMopsDetections; -
trunk/ppTranslate/src/ppMopsRead.c
r34488 r34505 10 10 static void addDummyValues(psMetadata* md, long size, int version); 11 11 static void replaceDummyValuesF32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes); 12 static void replaceDummyValuesS32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes); 13 static void renameDummyValuesF32(const char* colNameSource, psMetadata* source, const char* colNameTarget, psMetadata* target, psVector* indexes); 12 14 13 15 /* … … 24 26 for (int i = 0; i < num; i++) { 25 27 const char *name = inNames->data[i]; 28 printf("%s\n", name); 26 29 27 30 psFits *fits = psFitsOpen(name, "r"); // FITS file … … 118 121 } else { 119 122 psTrace("ppMops.read", 3, "Fitted trails extension found\n"); 123 psTrace("ppMops.read", 10, "Getting size?\n"); 120 124 int fittedTrailsSize = psFitsTableSize(fits); 125 psTrace("ppMops.read", 10, "size = %d\n", fittedTrailsSize); 121 126 if (fittedTrailsSize <= 0) { 122 127 psErrorStackPrint(stderr, "Unable to determine size of fitted trails extension table %d", i); … … 124 129 psErrorClear(); 125 130 } else { 131 psTrace("ppMops.read", 10, "Reading table of interest?\n"); 126 132 psMetadata* fittedTrails = psFitsReadTableAllColumns(fits); // Table of interest 133 psTrace("ppMops.read", 10, "OK for table of interest\n"); 127 134 if (!fittedTrails) { 128 135 psError(PS_ERR_IO, false, "Unable to read fittedTrails table in file %d", i); … … 130 137 } 131 138 //Iterate on the different names and types expected in the fittedTrails parameters 139 psTrace("ppMops.read", 10, "Getting IPP_IDET\n"); 132 140 psVector* idet = psMetadataLookupVector(NULL, fittedTrails, "IPP_IDET"); 133 141 replaceDummyValuesF32("X_EXT", fittedTrails, det->table, idet); … … 142 150 replaceDummyValuesF32("EXT_THETA", fittedTrails, det->table, idet); 143 151 replaceDummyValuesF32("EXT_WIDTH_MAJ_ERR", fittedTrails, det->table, idet); 144 replaceDummyValuesF32("EXT_WIDTH_MIN_ERR", fittedTrails, det->table, idet); 152 // EXT_WIDTH_MIN_ERR is actually undefined but set to 0. in CMF files 153 // We explicitely let it set to NaN, hence the commented out 154 // following line 155 //replaceDummyValuesF32("EXT_WIDTH_MIN_ERR", fittedTrails, det->table, idet); 145 156 replaceDummyValuesF32("EXT_THETA_ERR", fittedTrails, det->table, idet); 157 psTrace("ppMops.read", 10, "Got all version 2 values\n"); 146 158 if (skyChipPsfVersion >= 3) { 159 psTrace("ppMops.read", 10, "Getting PS1_DV3 data\n"); 147 160 replaceDummyValuesF32("RA_EXT", fittedTrails, det->table, idet); 148 replaceDummyValuesF32("RA_EXT_SIGMA", fittedTrails, det->table, idet);161 // Note: RA_EXT_SIGMA is computed (see det->raExtErr) 149 162 replaceDummyValuesF32("DEC_EXT", fittedTrails, det->table, idet); 150 replaceDummyValuesF32("DEC_EXT_SIGMA", fittedTrails, det->table, idet); 151 replaceDummyValuesF32("POSANG_EXT", fittedTrails, det->table, idet); 152 replaceDummyValuesF32("PLTSCALE_EXT", fittedTrails, det->table, idet); 153 replaceDummyValuesF32("EXT_FLUX", fittedTrails, det->table, idet); 154 replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet); 155 replaceDummyValuesF32("EXT_MAG_SIG", fittedTrails, det->table, idet); 156 replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet); 157 replaceDummyValuesF32("EXT_NDOF", fittedTrails, det->table, idet); 163 // Note: DEC_EXT_SIGMA is computed (see det->decExtErr) 164 //Note: POSANG_EXT is POSANGLE in xfit 165 renameDummyValuesF32("POSANGLE", fittedTrails, "POSANG_EXT", det->table, idet); 166 //Note: PLTSCALE_EXT in xfit is PLTSCALE 167 renameDummyValuesF32("PLTSCALE", fittedTrails, "PLTSCALE_EXT", det->table, idet); 168 renameDummyValuesF32("EXT_INST_FLUX", fittedTrails, "EXT_FLUX", det->table, idet); 169 replaceDummyValuesF32("EXT_CAL_MAG", fittedTrails, det->table, idet); 170 renameDummyValuesF32("EXT_INST_MAG_SIG", fittedTrails, "EXT_MAG_SIG", det->table, idet); 171 replaceDummyValuesF32("EXT_CHISQ", fittedTrails, det->table, idet); 172 replaceDummyValuesS32("EXT_NDOF", fittedTrails, det->table, idet); 173 psTrace("ppMops.read", 10, "Got all version 3 values\n"); 158 174 } 159 175 } … … 170 186 psVector *ra = psMetadataLookupVector(NULL, table, "RA_PSF"); 171 187 psVector *dec = psMetadataLookupVector(NULL, table, "DEC_PSF"); 172 173 188 det->raErr = psVectorAlloc(size, PS_TYPE_F64); 174 189 det->decErr = psVectorAlloc(size, PS_TYPE_F64); 190 if (skyChipPsfVersion >= 3) { 191 det->raExtErr = psVectorAlloc(size, PS_TYPE_F64); 192 det->decExtErr = psVectorAlloc(size, PS_TYPE_F64); 193 } else { 194 det->raExtErr = NULL; 195 det->decExtErr = NULL; 196 } 175 197 det->mask = psVectorAlloc(size, PS_TYPE_U8); 176 198 … … 186 208 187 209 // Add our new vectors to the table so that duplicates and masked items may be purged 210 psMetadataAddVector(table, PS_LIST_HEAD, "RA_ERR", 0, NULL, det->raErr); 188 211 psMetadataAddVector(table, PS_LIST_HEAD, "DEC_ERR", 0, NULL, det->decErr); 189 psMetadataAddVector(table, PS_LIST_HEAD, "RA_ERR", 0, NULL, det->raErr); 212 if (skyChipPsfVersion >= 3) { 213 psMetadataAddVector(table, PS_LIST_HEAD, "RA_EXT_SIGMA", 0, NULL, det->raExtErr); 214 psMetadataAddVector(table, PS_LIST_HEAD, "DEC_EXT_SIGMA", 0, NULL, det->decExtErr); 215 } 190 216 191 217 psTrace("ppMops.read", 2, "Read %ld rows from %s\n", det->num, det->component); … … 198 224 psVector *angleV = psMetadataLookupVector(NULL, table, "POSANGLE"); 199 225 psVector *flagsV = psMetadataLookupVector(NULL, table, "FLAGS"); 226 psVector *xExtErrV = NULL; 227 psVector *yExtErrV = NULL; 228 psVector *scaleExtV = NULL; 229 psVector *angleExtV = NULL; 230 if (skyChipPsfVersion >= 3) { 231 xExtErrV = psMetadataLookupVector(NULL, table, "X_EXT_SIG"); 232 yExtErrV = psMetadataLookupVector(NULL, table, "Y_EXT_SIG"); 233 scaleExtV = psMetadataLookupVector(NULL, table, "PLTSCALE_EXT"); 234 angleExtV = psMetadataLookupVector(NULL, table, "POSANG_EXT"); 235 } 200 236 201 237 double plateScale = 0.0; // Plate scale 202 238 long numGood = 0; // Number of good rows 203 239 for (long row = 0; row < size; row++) { 204 205 240 psU32 flags = flagsV->data.U32[row]; // psFitsTableGetU32(NULL, table, row, "FLAGS"); 206 241 if (flags & SOURCE_MASK) { … … 242 277 plateScale += scale; 243 278 numGood++; 279 280 // Same for EXT data if version permits 281 if (skyChipPsfVersion >= 3) { 282 xErr = xExtErrV->data.F32[row]; 283 yErr = yExtErrV->data.F32[row]; 284 scale = scaleExtV->data.F32[row]/3600.; 285 angle = angleExtV->data.F32[row]; 286 287 cosAngle = cos(angle); 288 sinAngle = sin(angle); 289 cosAngle2 = PS_SQR(cosAngle); 290 sinAngle2 = PS_SQR(sinAngle); 291 xErr2 = PS_SQR(xErr); 292 yErr2 = PS_SQR(yErr); 293 errScale = scale / 3600.0; 294 det->raExtErr->data.F64[row] = errScale * sqrt(cosAngle2 * xErr2 + sinAngle2 * yErr2); 295 det->decExtErr->data.F64[row] = errScale * sqrt(sinAngle2 * xErr2 + cosAngle2 * yErr2); 296 } 244 297 } 245 298 det->numGood = numGood; … … 259 312 static psVector* createDummyF32(long size) { 260 313 psVector* dummy = psVectorAlloc(size, PS_TYPE_F32); 314 psVectorInit(dummy, NAN); 315 return dummy; 316 } 317 static psVector* createDummyS32(long size) { 318 psVector* dummy = psVectorAlloc(size, PS_TYPE_S32); 261 319 psVectorInit(dummy, NAN); 262 320 return dummy; … … 280 338 psTrace("ppMops.read", 10, "Adding columns for version PS1_DV%d\n", version); 281 339 psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT", PS_DATA_VECTOR, "Fitted centroid RA", createDummyF32(size)); 282 psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT_SIGMA", PS_DATA_VECTOR, "Fitted RA sigma", createDummyF32(size)); 340 /* psMetadataAdd(md, PS_LIST_TAIL, "RA_EXT_SIGMA", PS_DATA_VECTOR, "Fitted RA sigma", createDummyF32(size)); *\/ */ 283 341 psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT", PS_DATA_VECTOR, "Fitted centroid DEC", createDummyF32(size)); 284 psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT_SIGMA", PS_DATA_VECTOR, "Fitted DEC sigma", createDummyF32(size)); 342 /* psMetadataAdd(md, PS_LIST_TAIL, "DEC_EXT_SIGMA", PS_DATA_VECTOR, "Fitted DEC sigma", createDummyF32(size)); *\/ */ 285 343 psMetadataAdd(md, PS_LIST_TAIL, "POSANG_EXT", PS_DATA_VECTOR, "Fitted position angle", createDummyF32(size)); 286 344 psMetadataAdd(md, PS_LIST_TAIL, "PLTSCALE_EXT", PS_DATA_VECTOR, "Plate scale at centroid", createDummyF32(size)); … … 289 347 psMetadataAdd(md, PS_LIST_TAIL, "EXT_MAG_SIG", PS_DATA_VECTOR, "Mag sigma", createDummyF32(size)); 290 348 psMetadataAdd(md, PS_LIST_TAIL, "EXT_CHISQ", PS_DATA_VECTOR, "Chi^2 of fit", createDummyF32(size)); 291 psMetadataAdd(md, PS_LIST_TAIL, "EXT_NDOF", PS_DATA_VECTOR, "Fit degrees of freedom", createDummy F32(size));349 psMetadataAdd(md, PS_LIST_TAIL, "EXT_NDOF", PS_DATA_VECTOR, "Fit degrees of freedom", createDummyS32(size)); 292 350 } 293 351 } 294 352 295 353 static void replaceDummyValuesF32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes) { 354 psTrace("ppMops.read", 10, "Trying to get column %s\n", colName); 296 355 psVector* source_vector = psMetadataLookupVector(NULL, source, colName); 297 356 psVector* target_vector = psMetadataLookupVector(NULL, target, colName); … … 299 358 target_vector->data.F32[indexes->data.S64[index]] = source_vector->data.F32[index]; 300 359 } 301 } 360 psTrace("ppMops.read", 10, "OK for %s\n", colName); 361 } 362 363 static void replaceDummyValuesS32(const char* colName, psMetadata* source, psMetadata* target, psVector* indexes) { 364 psTrace("ppMops.read", 10, "Trying to get column %s\n", colName); 365 psVector* source_vector = psMetadataLookupVector(NULL, source, colName); 366 psVector* target_vector = psMetadataLookupVector(NULL, target, colName); 367 for (long index = 0; index<indexes->n; ++index) { 368 target_vector->data.S32[indexes->data.S64[index]] = source_vector->data.S32[index]; 369 } 370 psTrace("ppMops.read", 10, "OK for %s\n", colName); 371 } 372 373 static void renameDummyValuesF32(const char* colNameSource, psMetadata* source, const char* colNameTarget, psMetadata* target, psVector* indexes) { 374 psTrace("ppMops.read", 10, "Trying to rename column %s to %s\n", colNameSource, colNameTarget); 375 psVector* source_vector = psMetadataLookupVector(NULL, source, colNameSource); 376 psVector* target_vector = psMetadataLookupVector(NULL, target, colNameTarget); 377 for (long index = 0; index<indexes->n; ++index) { 378 target_vector->data.F32[indexes->data.S64[index]] = source_vector->data.F32[index]; 379 } 380 psTrace("ppMops.read", 10, "OK for %s (renamed by %s)\n", colNameSource, colNameTarget); 381 }
Note:
See TracChangeset
for help on using the changeset viewer.
