Changeset 33643
- Timestamp:
- Mar 30, 2012, 3:01:51 PM (14 years ago)
- Location:
- trunk/psastro/src
- Files:
-
- 2 edited
-
psastroLoadRefstars.c (modified) (1 diff)
-
psastroZeroPoint.c (modified) (3 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psastro/src/psastroLoadRefstars.c
r33028 r33643 180 180 } 181 181 182 // apply a color correction 183 { 184 // from Tonry 185 // (w-r)_obs = 0.042 + 0.166 (r-i)_obs - 0.398 (r-i)_obs^2, (r-i)_obs < 0.5 186 // (w-r)_obs = 0.268 - 0.435 (r-i)_obs - 0.078 (r-i)_obs^2, (r-i)_obs > 0.5 187 // thus, for (r-i < 0.5): 188 // (r - i < 0.5) : w = r + 0.042 + 0.166*(r-i) - 0.398(r-i)^2 189 // (r - i > 0.5) : w = r + 0.268 - 0.435 (r-i) - 0.078(r-i)^2 190 191 // apply a color correction 192 // XXX this is very GPC1 specific and hard-wired -- be very afraid! 193 // select the filter; default to fixed photcode and mag limit otherwise 194 pmFPAfile *input = psMetadataLookupPtr (NULL, config->files, source); // we've already done this before 195 char *filter = psMetadataLookupStr (&status, input->fpa->concepts, "FPA.FILTERID"); 196 if (!strcmp(filter, "w")) { 197 for (int i = 0; i < refstars->n; i++) { 198 pmAstromObj *ref = refstars->data[i]; 199 float r = ref->Mag; 200 float ri = ref->Color; 201 // saturate at some valid range limits 202 ri = PS_MAX (PS_MIN(ri, 2.0), -0.2); 203 float w = NAN; 204 if (ri < 0.5) { 205 w = r + 0.042 + 0.166*(ri) - 0.398*PS_SQR(ri); 206 } else { 207 w = r + 0.268 - 0.435*(ri) - 0.078*PS_SQR(ri); 208 } 209 ref->Mag = w; 210 } 211 } 212 } 213 182 214 psLogMsg ("psastro", 3, "loaded %ld reference stars : %f sec\n", refstars->n, psTimerMark ("psastro")); 183 215 -
trunk/psastro/src/psastroZeroPoint.c
r27034 r33643 189 189 pmAstromObj *ref = refstars->data[match->ref]; 190 190 191 // XXX I should be applying the airmass term here or in psastroLoadRefstars 192 // (ie, ref->Mag would be a prediction for a given star. 191 193 float value = ref->Mag - raw->Mag - 2.5*log10(exptime); 192 194 psVectorAppend (dMag, value); … … 214 216 215 217 psStats *stats = NULL; 218 float zeroPtObs, zeroPtErr; 216 219 if (useMean) { 217 220 // stats structure and mask for use in measuring the clipping statistic 218 221 // this analysis has too few data points to use the robust median method 219 stats = psStatsAlloc (PS_STAT_ CLIPPED_MEAN | PS_STAT_CLIPPED_STDEV);222 stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV); 220 223 if (!psVectorStats (stats, dMag, NULL, NULL, 0)) { 221 224 psError(PS_ERR_UNKNOWN, false, "failure to measure zero point by mean"); 222 225 return false; 223 226 } 227 zeroPtObs = stats->robustMedian; 228 zeroPtErr = stats->robustStdev; 224 229 } else { 225 230 stats = psastroStatsPercentile (dMag, recipe); … … 228 233 return false; 229 234 } 230 } 231 fprintf (stderr, "zero point %f +/- %f using %ld stars; transparency %f\n", stats->clippedMean, stats->clippedStdev, dMag->n, zeropt - stats->clippedMean); 232 233 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OBS", PS_META_REPLACE, "measured zero point", stats->clippedMean); 235 zeroPtObs = stats->clippedMean; 236 zeroPtErr = stats->clippedStdev; 237 } 238 fprintf (stderr, "zero point %f +/- %f using %ld stars; transparency %f\n", zeroPtObs, zeroPtErr, dMag->n, zeropt - zeroPtObs); 239 240 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OBS", PS_META_REPLACE, "measured zero point", zeroPtObs); 234 241 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_REF", PS_META_REPLACE, "reference zero point", zeropt); 235 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_ERR", PS_META_REPLACE, "error on zero point", stats->clippedStdev);236 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OFF", PS_META_REPLACE, "zero point offset", zeropt - stats->clippedMean);242 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_ERR", PS_META_REPLACE, "error on zero point", zeroPtErr); 243 psMetadataAddF32 (header, PS_LIST_TAIL, "ZPT_OFF", PS_META_REPLACE, "zero point offset", zeropt - zeroPtObs); 237 244 238 245 psFree (stats);
Note:
See TracChangeset
for help on using the changeset viewer.
