Changeset 41814 for branches/eam_branches/ipp-dev-20210817
- Timestamp:
- Sep 27, 2021, 8:16:29 AM (5 years ago)
- Location:
- branches/eam_branches/ipp-dev-20210817
- Files:
-
- 4 edited
-
psModules/src/astrom/pmAstrometryObjects.c (modified) (4 diffs)
-
psModules/src/astrom/pmAstrometryObjects.h (modified) (1 diff)
-
psastro/src/psastroMosaicOneChip.c (modified) (3 diffs)
-
psastro/src/psastroOneChipFit.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-dev-20210817/psModules/src/astrom/pmAstrometryObjects.c
r41813 r41814 340 340 psVector *yResGood = psVectorAllocEmpty (match->n, PS_TYPE_F32); 341 341 342 // we measure the stdev of the median residual in NxN bins. 343 // use only valid (not NAN) measurements 344 psVector *xPosValid = psVectorAllocEmpty (match->n, PS_TYPE_F32); 345 psVector *yPosValid = psVectorAllocEmpty (match->n, PS_TYPE_F32); 346 psVector *xResValid = psVectorAllocEmpty (match->n, PS_TYPE_F32); 347 psVector *yResValid = psVectorAllocEmpty (match->n, PS_TYPE_F32); 348 342 349 for (int i = 0; i < match->n; i++) { 343 350 if (mask->data.PS_TYPE_VECTOR_MASK_DATA[i]) continue; … … 345 352 pmAstromObj *rawStar = raw->data[pair->raw]; 346 353 if (!isfinite(rawStar->dMag)) continue; 354 355 bool isValid = true; 356 isValid = isValid & isfinite (xFit->data.F32[i]); 357 isValid = isValid & isfinite (yFit->data.F32[i]); 358 isValid = isValid & isfinite (xRes->data.F32[i]); 359 isValid = isValid & isfinite (yRes->data.F32[i]); 360 if (isValid) { 361 psVectorAppend (xPosValid, xFit->data.F32[i]); 362 psVectorAppend (yPosValid, yFit->data.F32[i]); 363 psVectorAppend (xResValid, xRes->data.F32[i]); 364 psVectorAppend (yResValid, yRes->data.F32[i]); 365 } 366 367 // for the systematic error, use only high S/N stars 347 368 if (rawStar->dMag > 0.02) continue; 348 369 … … 377 398 results->dYrange = pmAstromVectorRange (yResGood, 0.1, 0.9, results->yStats->clippedStdev); 378 399 379 results->dXstdev = pmAstrom2DSystematics (x Fit, yFit, xRes);380 results->dYstdev = pmAstrom2DSystematics (x Fit, yFit, yRes);381 } 382 383 psTrace ("psModules.astrom", 3, "dXsys: %f, dXrange: %f \n", results->dXsys, results->dXrange);384 psTrace ("psModules.astrom", 3, "dYsys: %f, dYrange: %f \n", results->dYsys, results->dYrange);400 results->dXstdev = pmAstrom2DSystematics (xPosValid, yPosValid, xResValid); 401 results->dYstdev = pmAstrom2DSystematics (xPosValid, yPosValid, yResValid); 402 } 403 404 psTrace ("psModules.astrom", 3, "dXsys: %f, dXrange: %f, dXstdev: %f\n", results->dXsys, results->dXrange, results->dXstdev); 405 psTrace ("psModules.astrom", 3, "dYsys: %f, dYrange: %f, dYstdev: %f\n", results->dYsys, results->dYrange, results->dYstdev); 385 406 386 407 psFree (xErr); … … 390 411 psFree (xResGood); 391 412 psFree (yResGood); 413 psFree (xPosValid); 414 psFree (yPosValid); 415 psFree (xResValid); 416 psFree (yResValid); 392 417 393 418 psFree (x); -
branches/eam_branches/ipp-dev-20210817/psModules/src/astrom/pmAstrometryObjects.h
r39926 r41814 102 102 double dXrange; ///< 10% - 90% range X residuals (unmasked, high S/N) 103 103 double dYrange; ///< 10% - 90% range Y residuals (unmasked, high S/N) 104 double dXstdev; ///< stdev of median residual in NxN bins 105 double dYstdev; ///< stdev of median residual in NxN bins 104 106 } 105 107 pmAstromFitResults; -
branches/eam_branches/ipp-dev-20210817/psastro/src/psastroMosaicOneChip.c
r39926 r41814 134 134 int astNstar = results->yStats->clippedNvalues; 135 135 136 // astStdev is the average 1D stdev of median residuals in arcsec ('results' are in FPA units = microns) 137 // the median residuals are calculated in a grid of N x N bins 138 float astStdev = 0.5*(results->xStdev + results->yStdev) * plateScale; 139 136 140 // if we clip away too many stars, the order may be invalid 137 141 if (order == 3) { minNstar = PS_MAX (15, minNstar); } … … 142 146 143 147 // XXX should these result in errors or be handled another way? 144 psLogMsg ("psastro", PS_LOG_INFO, "astrometry solution: error: %f arcsec, Nstars: %d", astError, astNstar); 148 // psLogMsg ("psastro", PS_LOG_INFO, "astrometry solution: error: %f arcsec, Nstars: %d", astError, astNstar); 149 psLogMsg ("psastro", PS_LOG_INFO, "astrometry solution: error: %f arcsec, Nstars: %d, stdev: %f arcsec", astError, astNstar, astStdev); 145 150 if ((maxError > 0) && (astError > maxError)) { 146 151 psLogMsg("psastro", PS_LOG_INFO, "residual error is too large, failed to find a solution: %f > %f", astError, maxError); … … 155 160 psMetadataAddF32 (updates, PS_LIST_TAIL, "PERROR", PS_META_REPLACE, "astrometry error (pixels)", pixError); 156 161 psMetadataAddF32 (updates, PS_LIST_TAIL, "CERROR", PS_META_REPLACE, "astrometry error (arcsec)", astError); 162 psMetadataAddF32 (updates, PS_LIST_TAIL, "CERSTD", PS_META_REPLACE, "astrometry stdev (arcsec)", astStdev); 157 163 if (validSolution) { 158 164 psMetadataAddF32 (updates, PS_LIST_TAIL, "CPRECISE", PS_META_REPLACE, "astrometry precision (arcsec)", astError/sqrt(astNstar)); -
branches/eam_branches/ipp-dev-20210817/psastro/src/psastroOneChipFit.c
r41285 r41814 192 192 float astError = 0.5*(rawXstdev + rawYstdev) * plateScale; 193 193 194 // astStdev is the average 1D stdev of median residuals in arcsec ('results' are in FPA units = microns) 195 // the median residuals are calculated in a grid of N x N bins 196 float astStdev = 0.5*(results->xStdev + results->yStdev) * plateScale; 197 194 198 // x and y are forced to use the same subset of values: 195 199 int astNstar = results->yStats->clippedNvalues; … … 198 202 199 203 // XXX should these result in errors or be handled another way? 200 psLogMsg ("psastro", PS_LOG_INFO, "astrometry solution: error: %f arcsec, Nstars: %d ", astError, astNstar);204 psLogMsg ("psastro", PS_LOG_INFO, "astrometry solution: error: %f arcsec, Nstars: %d, stdev: %f arcsec", astError, astNstar, astStdev); 201 205 if (astError > maxError) { 202 206 psLogMsg("psastro", PS_LOG_INFO, "residual error is too large, failed to find a solution: %f > %f", astError, maxError); … … 211 215 psMetadataAddF32 (updates, PS_LIST_TAIL, "PERROR", PS_META_REPLACE, "astrometry error (pixels)", pixError); 212 216 psMetadataAddF32 (updates, PS_LIST_TAIL, "CERROR", PS_META_REPLACE, "astrometry error (arcsec)", astError); 217 psMetadataAddF32 (updates, PS_LIST_TAIL, "CERSTD", PS_META_REPLACE, "astrometry stdev (arcsec)", astStdev); 213 218 if (validSolution) { 214 219 psMetadataAddF32 (updates, PS_LIST_TAIL, "CPRECISE", PS_META_REPLACE, "astrometry precision (arcsec)", astError/sqrt(astNstar));
Note:
See TracChangeset
for help on using the changeset viewer.
