- Timestamp:
- Feb 23, 2016, 4:48:13 PM (10 years ago)
- Location:
- trunk/Ohana/src/relastro
- Files:
-
- 1 added
- 13 edited
-
Makefile (modified) (7 diffs)
-
include/relastro.h (modified) (3 diffs)
-
src/ConfigInit.c (modified) (1 diff)
-
src/FitAstromOps.c (modified) (4 diffs)
-
src/FitPosPMfixed.c (modified) (1 diff)
-
src/ICRF.c (modified) (1 diff)
-
src/UpdateObjects.c (modified) (19 diffs)
-
src/bcatalog.c (modified) (5 diffs)
-
src/fitobj2.c (modified) (3 diffs)
-
src/fitstk.c (added)
-
src/hpm_objects.c (modified) (1 diff)
-
src/relastro_objects.c (modified) (2 diffs)
-
test/dvo.photcodes (modified) (1 diff)
-
test/mana.sh (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/relastro/Makefile
r39370 r39375 1 default: relastro relastro_client 1 default: relastro relastro_client fitobj fitobj2 fitpm 2 2 help: 3 3 @echo "make options: relastro (default)" … … 33 33 $(SRC)/FitPMandPar.$(ARCH).o \ 34 34 $(SRC)/FitPosPMfixed.$(ARCH).o \ 35 $(SRC)/FitPosStack.$(ARCH).o \ 35 36 $(SRC)/BootstrapOps.$(ARCH).o \ 36 37 $(SRC)/ImageOps.$(ARCH).o \ … … 108 109 $(SRC)/FitPMandPar.$(ARCH).o \ 109 110 $(SRC)/FitPosPMfixed.$(ARCH).o \ 111 $(SRC)/FitPosStack.$(ARCH).o \ 110 112 $(SRC)/BootstrapOps.$(ARCH).o \ 111 113 $(SRC)/ImageOps.$(ARCH).o \ … … 171 173 $(SRC)/FitPM.$(ARCH).o \ 172 174 $(SRC)/FitPMandPar.$(ARCH).o \ 175 $(SRC)/FitPosStack.$(ARCH).o \ 173 176 $(SRC)/BootstrapOps.$(ARCH).o \ 174 177 $(SRC)/mkpolyterm.$(ARCH).o \ … … 187 190 $(SRC)/FitPM.$(ARCH).o \ 188 191 $(SRC)/FitPMandPar.$(ARCH).o \ 192 $(SRC)/FitPosStack.$(ARCH).o \ 189 193 $(SRC)/UpdateObjects.$(ARCH).o \ 190 194 $(SRC)/BootstrapOps.$(ARCH).o \ … … 209 213 $(SRC)/FitPM.$(ARCH).o \ 210 214 $(SRC)/FitPMandPar.$(ARCH).o \ 215 $(SRC)/FitPosStack.$(ARCH).o \ 211 216 $(SRC)/UpdateObjects.$(ARCH).o \ 212 217 $(SRC)/BootstrapOps.$(ARCH).o \ … … 221 226 $(FITOBJ2): $(INC)/relastro.h 222 227 $(BIN)/fitobj2.$(ARCH): $(FITOBJ2) 228 229 fitstk: $(BIN)/fitstk.$(ARCH) 230 231 FITSTK = \ 232 $(SRC)/fitstk.$(ARCH).o \ 233 $(SRC)/ParFactor.$(ARCH).o \ 234 $(SRC)/FitAstromOps.$(ARCH).o \ 235 $(SRC)/FitPosPMfixed.$(ARCH).o \ 236 $(SRC)/FitPM.$(ARCH).o \ 237 $(SRC)/FitPMandPar.$(ARCH).o \ 238 $(SRC)/FitPosStack.$(ARCH).o \ 239 $(SRC)/UpdateObjects.$(ARCH).o \ 240 $(SRC)/BootstrapOps.$(ARCH).o \ 241 $(SRC)/mkpolyterm.$(ARCH).o \ 242 $(SRC)/GetAstromError.$(ARCH).o \ 243 $(SRC)/ImageOps.$(ARCH).o \ 244 $(SRC)/MosaicOps.$(ARCH).o \ 245 $(SRC)/extra.$(ARCH).o \ 246 $(SRC)/plotstuff.$(ARCH).o \ 247 $(SRC)/fitpoly.$(ARCH).o 248 249 $(FITSTK): $(INC)/relastro.h 250 $(BIN)/fitstk.$(ARCH): $(FITSTK) 223 251 224 252 # $(SRC)/FitPM_IRLS.$(ARCH).o \ -
trunk/Ohana/src/relastro/include/relastro.h
r39371 r39375 173 173 int Nfit; 174 174 int NfitAlloc; 175 176 double * Xstack; 177 double *dXstack; 178 double * Ystack; 179 double *dYstack; 175 180 176 181 FitAstromPoint *points; … … 755 760 int FitAstromResultSetPM (FitAstromResult *fit, int Nfit, Average *average); 756 761 void AstromErrorSetLoop (int Nloop, int isImageMode); 762 void FitPointsClearMasks (FitAstromPoint *points, int Npoints); 757 763 758 764 int FitPM_IRLS (FitAstromResult *fit, FitAstromData *data, FitAstromPoint *points, int Npoints); … … 760 766 int FitPosPMfixed_IRLS (FitAstromResult *fit, FitAstromData *data, FitAstromPoint *points, int Npoints); 761 767 int FitPosPMfixed_Single (FitAstromResult *fit, FitAstromPoint *points, int Npoints); 768 int FitPosStack (FitAstromResult *fit, FitStats *fitstats); 762 769 763 770 double MedianAbsDeviation(FitAstromPoint *points, int Npoints); -
trunk/Ohana/src/relastro/src/ConfigInit.c
r39371 r39375 84 84 SetZeroPoint (25.0); 85 85 86 if (USE_GALAXY_MODEL) { 87 if (!InitGalaxyModel ("FEAST-HIPPARCOS")) { 88 fprintf (stderr, "failed to init galaxy model\n"); 89 exit (2); 90 } 91 } 92 86 93 free (config); 87 94 free (file); -
trunk/Ohana/src/relastro/src/FitAstromOps.c
r39364 r39375 85 85 86 86 // containers to hold the measurements for a given star 87 fitStats-> Xstack = NULL; // pre-allocated array for median 88 fitStats->dXstack = NULL; // pre-allocated array for median 89 fitStats-> Ystack = NULL; // pre-allocated array for median 90 fitStats->dYstack = NULL; // pre-allocated array for median 87 91 fitStats->points = NULL; 88 92 fitStats->sample = NULL; … … 94 98 ALLOCATE (fitStats->sample, FitAstromPoint, Nmax); 95 99 ALLOCATE (fitStats->nomask, FitAstromPoint, Nmax); 100 ALLOCATE (fitStats-> Xstack, double, Nmax); 101 ALLOCATE (fitStats->dXstack, double, Nmax); 102 ALLOCATE (fitStats-> Ystack, double, Nmax); 103 ALLOCATE (fitStats->dYstack, double, Nmax); 96 104 } 97 105 … … 143 151 FREE (fitStats->nomask); 144 152 153 FREE (fitStats-> Xstack); 154 FREE (fitStats->dXstack); 155 FREE (fitStats-> Ystack); 156 FREE (fitStats->dYstack); 157 145 158 FitAstromDataFree (fitStats->fitdataPos); 146 159 FitAstromDataFree (fitStats->fitdataPM); … … 168 181 169 182 return fit; 183 } 184 185 void FitPointsClearMasks (FitAstromPoint *points, int Npoints) { 186 187 int i; 188 for (i = 0; i < Npoints; i++) { 189 points[i].mask = FALSE; 190 } 191 return; 170 192 } 171 193 -
trunk/Ohana/src/relastro/src/FitPosPMfixed.c
r39371 r39375 26 26 fit->duD = 0.0; 27 27 fit->dp = 0.0; 28 fit->Nfit = 1; 28 29 29 30 found = i; -
trunk/Ohana/src/relastro/src/ICRF.c
r37807 r39375 63 63 64 64 for (i = 0; i < catalog[c].Naverage; i++) { 65 if (!(catalog[c].average[i].flags & ID_ ICRF_QSO)) continue;65 if (!(catalog[c].average[i].flags & ID_OBJ_ICRF_QSO)) continue; 66 66 67 67 // only save a single value -
trunk/Ohana/src/relastro/src/UpdateObjects.c
r39371 r39375 116 116 117 117 // if we fail to fit the astrometry for some reason, we need to set/reset these 118 average[0].flags |= ID_ STAR_NO_ASTROM;118 average[0].flags |= ID_OBJ_NO_MEAN_ASTROM; 119 119 average[0].ChiSqAve = NAN; 120 120 average[0].ChiSqPM = NAN; … … 142 142 average[0].dR = average[0].dRstk; 143 143 average[0].dD = average[0].dDstk; 144 average[0].flags |= ID_ STACK_ASTROM;144 average[0].flags |= ID_OBJ_STACK_FOR_MEAN; 145 145 } 146 146 return FALSE; … … 207 207 if (fabs(fitPar.Ro) < 0.01) fprintf (stderr, "watch out for 0,360 boundary\n"); 208 208 209 average[0].flags |= ID_ STAR_FIT_PAR;209 average[0].flags |= ID_OBJ_FIT_PAR; 210 210 fitStats->Npar ++; 211 211 … … 225 225 mode = FIT_PM_ONLY; 226 226 } else { 227 average[0].flags |= ID_ STAR_USE_PAR;227 average[0].flags |= ID_OBJ_USE_PAR; 228 228 } 229 229 } … … 242 242 } 243 243 244 if (average[0].flags & ID_ STAR_USE_PAR) {244 if (average[0].flags & ID_OBJ_USE_PAR) { 245 245 // get the best pm fit and chisq given the set of points (mask is respected) 246 246 if (!FitPM_Basic (&fitPM, fitStats->fitdataPM, fitStats->points, fitStats->Npoints)) { 247 average[0].flags |= ID_ STAR_BAD_PM;247 average[0].flags |= ID_OBJ_BAD_PM; 248 248 goto justPosition; 249 249 } … … 277 277 if (fabs(fitPM.Ro) < 0.01) fprintf (stderr, "watch out for 0,360 boundary\n"); 278 278 279 average[0].flags |= ID_ STAR_FIT_PM;279 average[0].flags |= ID_OBJ_FIT_PM; 280 280 fitStats->Npm ++; 281 281 … … 290 290 if (!valid) { 291 291 mode = FIT_AVERAGE; 292 average[0].flags |= ID_ STAR_BAD_PM;292 average[0].flags |= ID_OBJ_BAD_PM; 293 293 } else { 294 if (!(average[0].flags & ID_ STAR_USE_PAR)) {295 average[0].flags |= ID_ STAR_USE_PM;294 if (!(average[0].flags & ID_OBJ_USE_PAR)) { 295 average[0].flags |= ID_OBJ_USE_PM; 296 296 } 297 297 } … … 305 305 FitAstromResultSetPM (&fitPos, 1, average); 306 306 // fprintf (stderr, "fit 1: %f %f : %f %f\n", fitPos.Ro, fitPos.Do, fitPos.uR, fitPos.uD); 307 if (average[0].flags & (ID_ STAR_USE_PAR | ID_STAR_USE_PM)) {307 if (average[0].flags & (ID_OBJ_USE_PAR | ID_OBJ_USE_PM)) { 308 308 if (!FitPosPMfixed_Basic (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints)) { 309 // if this fails, stick with the PM and/or PAR fit from above 309 310 goto doneWithFit; 310 311 } … … 313 314 // I will not try to outlier-reject, just calculate the weighted average 314 315 if (!FitPosPMfixed_Basic (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints)) { 316 // if we have tried this, we have not masked any points; we will find a single unmasked point below 315 317 goto doneWithFit; 316 318 } 317 // XXX Maybe add a flag here?318 average[0].flags |= ID_ STAR_USE_AVE;319 average[0].flags |= ID_OBJ_USE_AVE; 320 average[0].flags |= ID_OBJ_RAW_AVE; 319 321 goto useBasic; 320 322 } 321 323 if (!FitPosPMfixed_IRLS (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints)) { 322 goto doneWithFit; 324 // if the above fails, we need to clear the masks and try again below 325 FitPointsClearMasks (fitStats->points, fitStats->Npoints); 326 // just calculate the weighted average 327 if (!FitPosPMfixed_Basic (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints)) { 328 // if this fails, find a single unmasked point below 329 goto doneWithFit; 330 } 331 average[0].flags |= ID_OBJ_USE_AVE; 332 average[0].flags |= ID_OBJ_RAW_AVE; 333 goto useBasic; 323 334 } 324 335 // fprintf (stderr, "fit 2: %f %f : %f %f\n", fitPos.Ro, fitPos.Do, fitPos.uR, fitPos.uD); … … 327 338 int Nnomask = BootstrapSaveUnmasked (fitStats->nomask, fitStats->points, fitStats->Npoints); 328 339 if (Nnomask < POS_MIN_NPTS_BOOT) { 340 // if the above fails, we need to clear the masks and try again below 341 FitPointsClearMasks (fitStats->points, fitStats->Npoints); 329 342 if (!FitPosPMfixed_Basic (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints)) { 343 // if this fails, find a single unmasked point below 330 344 goto doneWithFit; 331 345 } 332 // XXX Maybe add a flag here?333 average[0].flags |= ID_ STAR_USE_AVE;346 average[0].flags |= ID_OBJ_USE_AVE; 347 average[0].flags |= ID_OBJ_RAW_AVE; 334 348 goto useBasic; 335 349 } … … 343 357 BootstrapRobustStats (&fitPos, fitStats->fit, fitStats->Nfit, FIT_RESULT_DEC); 344 358 } 345 average[0].flags |= ID_ STAR_USE_AVE;359 average[0].flags |= ID_OBJ_USE_AVE; 346 360 } 347 361 … … 351 365 if (fabs(fitPos.Ro) < 0.01) fprintf (stderr, "watch out for 0,360 boundary\n"); 352 366 353 average[0].flags |= ID_ STAR_FIT_AVE;367 average[0].flags |= ID_OBJ_FIT_AVE; 354 368 fitStats->Nave ++; 355 369 } … … 357 371 doneWithFit: 358 372 // if no valid fit has been found, try to use a single unmasked point: 359 if (!(average[0].flags & (ID_ STAR_USE_PAR | ID_STAR_USE_PM | ID_STAR_USE_AVE))) {373 if (!(average[0].flags & (ID_OBJ_USE_PAR | ID_OBJ_USE_PM | ID_OBJ_USE_AVE))) { 360 374 if (!FitPosPMfixed_Single (&fitPos, fitStats->points, fitStats->Npoints)) { 361 375 fitStats->Nskip ++; … … 366 380 if (fabs(fitPos.Ro) < 0.01) fprintf (stderr, "watch out for 0,360 boundary\n"); 367 381 368 average[0].flags |= ID_ STAR_USE_AVE;369 average[0].flags |= ID_ STAR_FIT_AVE;382 average[0].flags |= ID_OBJ_USE_AVE; 383 average[0].flags |= ID_OBJ_FIT_AVE; 370 384 fitStats->Nave ++; 371 385 } … … 422 436 FitAstromResultInit (&fit); 423 437 424 if (average[0].flags & ID_ STAR_USE_PAR) {425 myAssert ((average[0].flags & (ID_ STAR_USE_PM | ID_STAR_USE_AVE)) == 0, "programming error");438 if (average[0].flags & ID_OBJ_USE_PAR) { 439 myAssert ((average[0].flags & (ID_OBJ_USE_PM | ID_OBJ_USE_AVE)) == 0, "programming error"); 426 440 fit = fitPar; 427 441 } 428 if (average[0].flags & ID_ STAR_USE_PM) {429 myAssert ((average[0].flags & (ID_ STAR_USE_PAR | ID_STAR_USE_AVE)) == 0, "programming error");442 if (average[0].flags & ID_OBJ_USE_PM) { 443 myAssert ((average[0].flags & (ID_OBJ_USE_PAR | ID_OBJ_USE_AVE)) == 0, "programming error"); 430 444 fit = fitPM; 431 445 } 432 if (average[0].flags & ID_ STAR_USE_AVE) {433 myAssert ((average[0].flags & (ID_ STAR_USE_PAR | ID_STAR_USE_PM)) == 0, "programming error");446 if (average[0].flags & ID_OBJ_USE_AVE) { 447 myAssert ((average[0].flags & (ID_OBJ_USE_PAR | ID_OBJ_USE_PM)) == 0, "programming error"); 434 448 fit = fitPos; 435 449 } … … 516 530 517 531 // unset the NO_ASTROM bit (not(NO_ASTROM) == HAVE_ASTROM) 518 average[0].flags &= ~ID_ STAR_NO_ASTROM;532 average[0].flags &= ~ID_OBJ_NO_MEAN_ASTROM; 519 533 520 534 return (TRUE); … … 554 568 average[0].dRstk = average[0].dR; // RA scatter in arcsec 555 569 average[0].dDstk = average[0].dD; // DEC scatter in arcsec 570 average[0].flags |= ID_OBJ_MEAN_FOR_STACK; 556 571 } 557 572 … … 563 578 564 579 // the stack positions are not statistically independent... 565 FitPosPMfixed_Basic (&fitPos, fitStats->fitdataPos, fitStats->points, fitStats->Npoints); 566 FitAstromSetChisq (&fitPos, fitStats->points, fitStats->Npoints, FIT_AVERAGE); 580 FitPosStack (&fitPos, fitStats); 567 581 568 582 // project Ro, Do back to RA,DEC 569 583 XY_to_RD (&fitPos.Ro, &fitPos.Do, fitPos.Ro, fitPos.Do, &fitStats->coords); 570 584 571 // XXX choose stack flag? average[0].flags |= ID_ STAR_FIT_AVE;585 // XXX choose stack flag? average[0].flags |= ID_OBJ_FIT_AVE; 572 586 fitStats->Nave ++; 573 587 … … 610 624 average[0].dRstk = fitPos.dRo; // RA scatter in arcsec 611 625 average[0].dDstk = fitPos.dDo; // DEC scatter in arcsec 626 average[0].Tmean = (Tmean * 86400 * 365.25) + fitStats->T2000; 627 average[0].flags &= ~ID_OBJ_MEAN_FOR_STACK; 612 628 613 629 return (TRUE); -
trunk/Ohana/src/relastro/src/bcatalog.c
r39287 r39375 25 25 int Nsecfilt; 26 26 Coords coords; 27 28 CoordTransform *transform = NULL; 29 if (USE_GALAXY_MODEL) { 30 transform = InitTransform (COORD_CELESTIAL, COORD_GALACTIC); 31 } 27 32 28 33 /* for outlier rejection, project coordinates to a plane centered on the object with units of arcsec */ … … 43 48 Nmeasure = Naverage = 0; 44 49 45 DVOAverageFlags averageBits = 46 ID_STAR_FIT_AVE | 47 ID_STAR_FIT_PM | 48 ID_STAR_FIT_PAR | 49 ID_STAR_USE_AVE | 50 ID_STAR_USE_PM | 51 ID_STAR_USE_PAR | 52 ID_STAR_NO_ASTROM ; 50 DVOAverageFlags astromBits = 51 ID_OBJ_LARGE_PM | // star with large proper motion 52 ID_OBJ_RAW_AVE | // simple weighted average position was used (no IRLS fitting) 53 ID_OBJ_FIT_AVE | // average position was fitted 54 ID_OBJ_FIT_PM | // proper motion model was fitted 55 ID_OBJ_FIT_PAR | // parallax model was fitted 56 ID_OBJ_USE_AVE | // average position used (not PM or PAR) 57 ID_OBJ_USE_PM | // proper motion used (not AVE or PAR) 58 ID_OBJ_USE_PAR | // parallax used (not AVE or PM) 59 ID_OBJ_NO_MEAN_ASTROM | // mean astrometry could not be measured 60 ID_OBJ_STACK_FOR_MEAN | // stack position used for mean astrometry 61 ID_OBJ_MEAN_FOR_STACK | // mean astrometry could not be measured 62 ID_OBJ_BAD_PM; // failure to measure proper-motion model 53 63 54 64 if (VERBOSE2 && ExcludeBogus && (fbogus == NULL)) { … … 78 88 79 89 if (RESET) { 80 subcatalog[0].average[Naverage].flags &= ~a verageBits;90 subcatalog[0].average[Naverage].flags &= ~astromBits; 81 91 } 82 92 83 93 // if we want to do static correction to ICRF, keep the ICRF QSOs (regardless of other data quality) 84 if (USE_ICRF_CORRECT && (subcatalog[0].average[Naverage].flags & ID_ ICRF_QSO)) {94 if (USE_ICRF_CORRECT && (subcatalog[0].average[Naverage].flags & ID_OBJ_ICRF_QSO)) { 85 95 Nm = 0; 86 96 for (j = 0; j < catalog[0].average[i].Nmeasure; j++) { … … 115 125 } 116 126 117 // if we want to correct to the gala y model, we need to use objects with distances determined by Green & Schlafly127 // if we want to correct to the galaxy model, we need to use objects with distances determined by Green & Schlafly 118 128 if (USE_GALAXY_MODEL) { 119 129 // if we use the galaxy model, we need to require the model pm to exist 120 if (!catalog[0].average[i].Nstarpar) continue; 121 if (!isfinite(catalog[0].average[i].uRgal)) continue; 122 if (!isfinite(catalog[0].average[i].uDgal)) continue; 130 131 int gotStarpar = TRUE; 132 gotStarpar = gotStarpar && (catalog[0].average[i].Nstarpar > 0); 133 gotStarpar = gotStarpar && isfinite(catalog[0].average[i].uRgal); 134 gotStarpar = gotStarpar && isfinite(catalog[0].average[i].uDgal); 135 if (!gotStarpar) { 136 // if we do not have starpar for some objects, generate an estimated starpar using d = 500pc 137 138 // NOTE: distance is in kiloparsec 139 double distance = 0.5; // pow(10.0, 0.2*(starpar->DistMag + 5.0)) / 1000.0; 140 141 double galLon, galLat; 142 ApplyTransform (&galLon, &galLat, catalog[0].average[i].R, catalog[0].average[i].D, transform); 143 144 double Lrad = galLon * RAD_DEG; 145 double Brad = galLat * RAD_DEG; 146 147 double uL_gal, uB_gal; 148 GalaxyMotionModel_radians(&uL_gal, &uB_gal, Lrad, Brad); 149 150 double uL_sol, uB_sol; 151 SolarMotionModel_radians(&uL_sol, &uB_sol, Lrad, Brad, distance); 152 153 double uL = uL_gal + uL_sol; 154 double uB = uB_gal + uB_sol; 155 156 double uR, uD; 157 TransformProperMotion (&uR, &uD, uL, uB, catalog[0].average[i].R, catalog[0].average[i].D, transform); 158 159 catalog[0].average[i].uRgal = uR; 160 catalog[0].average[i].uDgal = uD; 161 } else { 123 162 124 // filter stars which are not well-handled by the galactic motion model125 int mStarpar = catalog[0].average[i].starparOffset;126 myAssert (mStarpar < catalog[0].Nstarpar, "oops");163 // filter stars which are not well-handled by the galactic motion model 164 int mStarpar = catalog[0].average[i].starparOffset; 165 myAssert (mStarpar < catalog[0].Nstarpar, "oops"); 127 166 128 StarPar *starpar = &catalog[0].starpar[mStarpar]; 129 if (starpar->DistMag < MIN_DISTANCE_MOD) continue; 130 if (starpar->DistMag > MAX_DISTANCE_MOD) continue; 131 if (starpar->dDistMag > MAX_DISTANCE_MOD_ERR) continue; 167 StarPar *starpar = &catalog[0].starpar[mStarpar]; 168 if (starpar->DistMag < MIN_DISTANCE_MOD) continue; 169 if (starpar->DistMag > MAX_DISTANCE_MOD) continue; 170 if (starpar->dDistMag > MAX_DISTANCE_MOD_ERR) continue; 171 } 132 172 } 133 173 … … 264 304 } 265 305 306 if (transform) free (transform); 266 307 return (TRUE); 267 308 } -
trunk/Ohana/src/relastro/src/fitobj2.c
r39371 r39375 136 136 137 137 double plx = 0.5*(drand48_cnt() + 0.0); 138 if (FIT_MODE == FIT_PM_AND_PAR) plx = 0.0;138 if (FIT_MODE != FIT_PM_AND_PAR) plx = 0.0; 139 139 140 140 int Npoints = N_POINTS*drand48_cnt(); // minimum of 0 points 141 141 int Noutliers_max = Npoints * F_OUTLIERS; 142 142 int Noutliers = Noutliers_max*drand48_cnt(); // minimum of 0 points 143 144 if (Npoints + Noutliers == 0) continue; 143 145 144 146 // generate a single fake star with N_POINTS real points and N_OUTLIERS bad points … … 189 191 catalog->average->catID = 1; 190 192 191 catalog->average->R = Ro;192 catalog->average->D = Do;193 catalog->average->uR = uR;194 catalog->average->uD = uD;195 catalog->average->uRgal = uR;196 catalog->average->uDgal = uD;193 // catalog->average->R = Ro; 194 // catalog->average->D = Do; 195 // catalog->average->uR = uR; 196 // catalog->average->uD = uD; 197 // catalog->average->uRgal = uR; 198 // catalog->average->uDgal = uD; 197 199 198 200 // int T2000 = ohana_date_to_sec ("2000/01/01,12:00:00"); … … 250 252 catalog->measureT[i].dt = 2.5*log10(30.0); 251 253 } 254 255 if (Ntotal > 0) { 256 catalog->average->R = catalog->measureT[0].R; 257 catalog->average->D = catalog->measureT[0].D; 258 catalog->average->uRgal = uR; 259 catalog->average->uDgal = uD; 260 } 261 252 262 catalog->average->Nmeasure = Ntotal; 253 263 -
trunk/Ohana/src/relastro/src/hpm_objects.c
r38986 r39375 264 264 good |= (testcat.average[0].ChiSqPM < MAX_CHISQ_PM); 265 265 good |= (testcat.average[0].Npos > MIN_NPOS_FRAC * testcat.average[0].Nmeasure); 266 good &= ((testcat.average[0].flags & ID_ STAR_FIT_PM) > 0);266 good &= ((testcat.average[0].flags & ID_OBJ_FIT_PM) > 0); 267 267 268 268 if (good) { -
trunk/Ohana/src/relastro/src/relastro_objects.c
r38986 r39375 15 15 ID_MEAS_USED_CHIP; 16 16 17 DVOAverageFlags averageBits = 18 ID_STAR_FIT_AVE | 19 ID_STAR_FIT_PM | 20 ID_STAR_FIT_PAR | 21 ID_STAR_USE_AVE | 22 ID_STAR_USE_PM | 23 ID_STAR_USE_PAR | 24 ID_STAR_NO_ASTROM ; 17 DVOAverageFlags astromBits = 18 ID_OBJ_LARGE_PM | // star with large proper motion 19 ID_OBJ_RAW_AVE | // simple weighted average position was used (no IRLS fitting) 20 ID_OBJ_FIT_AVE | // average position was fitted 21 ID_OBJ_FIT_PM | // proper motion model was fitted 22 ID_OBJ_FIT_PAR | // parallax model was fitted 23 ID_OBJ_USE_AVE | // average position used (not PM or PAR) 24 ID_OBJ_USE_PM | // proper motion used (not AVE or PAR) 25 ID_OBJ_USE_PAR | // parallax used (not AVE or PM) 26 ID_OBJ_NO_MEAN_ASTROM | // mean astrometry could not be measured 27 ID_OBJ_STACK_FOR_MEAN | // stack position used for mean astrometry 28 ID_OBJ_MEAN_FOR_STACK | // mean astrometry could not be measured 29 ID_OBJ_BAD_PM; // failure to measure proper-motion model 25 30 26 31 // XXX need to decide how to determine PARALLEL mode... … … 69 74 if (RESET) { 70 75 for (j = 0; j < catalog.Naverage; j++) { 71 catalog.average[j].flags &= ~a verageBits;76 catalog.average[j].flags &= ~astromBits; 72 77 m = catalog.average[j].measureOffset; 73 78 for (k = 0; k < catalog.average[j].Nmeasure; k++) { -
trunk/Ohana/src/relastro/test/dvo.photcodes
r39363 r39375 32 32 33 33 10233 GPC1.i.XY33 dep 24.611 -0.044 0.000 - - 0.0000 0 3 0.000 1.000 0.000 0.000 0x0000 0x0000 0xe0440130 0x1003bc88 34 11200 GPC1.i.SkyChip dep 25.000 0.000 0.000 - - 0.0000 0 3 0.000 1.000 0.000 0.000 0x0000 0x0000 0x0000 0x0000 -
trunk/Ohana/src/relastro/test/mana.sh
r39371 r39375 28 28 testnboot pm-boot 29 29 testnboot plx-boot 30 end 31 32 macro teststk 33 if ($0 != 3) 34 echo "USAGE: testobj2 (Nstars) (foutliers)" 35 break 36 end 37 38 exec ../bin/fitstk.lin64 plx -Nstars $1 -foutliers $2 > test.stk.dat 39 load.stack test.stk.dat 40 end 41 42 macro testobj2 43 if ($0 != 3) 44 echo "USAGE: testobj2 (Nstars) (foutliers)" 45 break 46 end 47 48 exec ../bin/fitobj2.lin64 plx -Nstars $1 -foutliers $2 > test.plx.dat 49 checkstats test.plx.dat 30 50 end 31 51 … … 191 211 end 192 212 213 macro load.stack 214 if ($0 != 2) 215 echo "USAGE: load.stack (file)" 216 break 217 end 218 219 data $1 220 read Npts 1 Nout 2 Nstk 3 Ro 4 Do 5 uRo 6 uDo 7 Po 8 Rx 10 Dx 11 uRx 12 uDx 3 Px 14 Tx 16 dRo 18 dDo 19 duRo 20 duDo 21 dPo 22 Nfit 23 Rstk 25 Dstk 26 dRstk 27 dDstk 28 chisq 32 221 # read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 24 222 # read Ro 1 Do 2 uRo 3 uDo 4 Po 5 Rx 7 Dx 8 uRx 9 uDx 10 Px 11 Tx 13 dRo 15 dDo 16 duRo 17 duDo 18 dPo 19 Nfit 20 chisq 22 223 224 foreach f uD uR P 225 set d$f = $f\o - $f\x 226 end 227 set sdR = 3600*(Ro - Rstk)*dcos(Do) 228 set sdD = 3600*(Do - Dstk) 229 230 set Rf = Rx - uRx*(Tx - $Tref)/3600.0/dcos(Dx) 231 set Df = Dx - uDx*(Tx - $Tref)/3600.0 232 233 set dRf = 3600*(Ro - Rf)*dcos(Dx) 234 set dDf = 3600*(Do - Df) 235 236 # echo "fit scatter" 237 vstat -q dRf; $value_dRf = $SIGMA*1000 238 vstat -q dDf; $value_dDf = $SIGMA*1000 239 vstat -q duR; $value_duR = $SIGMA*1000 240 vstat -q duD; $value_duD = $SIGMA*1000 241 vstat -q dP ; $value_dP = $SIGMA*1000 242 243 vstat -q sdR; $value_sdR = $SIGMA*1000 244 vstat -q sdD; $value_sdD = $SIGMA*1000 245 246 # echo "fit errors" 247 vstat -q dRo; $value_dRo = $MEAN*1000; $sigma_dRo = $SIGMA*1000 248 vstat -q dDo; $value_dDo = $MEAN*1000; $sigma_dDo = $SIGMA*1000 249 vstat -q duRo; $value_duRo = $MEAN*1000; $sigma_duRo = $SIGMA*1000 250 vstat -q duDo; $value_duDo = $MEAN*1000; $sigma_duDo = $SIGMA*1000 251 vstat -q dPo ; $value_dPo = $MEAN*1000; $sigma_dPo = $SIGMA*1000 252 253 # echo "Nfit" 254 vstat -q Nfit; $mean_Nfit = $MEAN 255 256 # echo chisq 257 vstat -q chisq; $mean_chisq = $MEAN 258 259 fprintf "%5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %5.2f %5.2f %5.2f %5.2f %5.2f : %6.2f %5.2f" $value_dRf $value_dDf $value_duR $value_duD $value_dP $value_dRo $value_dDo $value_duRo $value_duDo $value_dPo $sigma_dRo $sigma_dDo $sigma_duRo $sigma_duDo $sigma_dPo $mean_Nfit $mean_chisq 260 261 delete dRbin oRbin 262 for i 0 100 263 subset tmp = dRf if (Npts == $i) 264 vstat tmp -q 265 concat $SIGMA dRbin 266 concat $MEAN oRbin 267 end 268 269 create n 0 dRbin[] 270 set dRmod = 0.010 / sqrt (n) 271 lim n -0.001 0.015; clear; box; plot n dRbin 272 plot -c red -pt 7 n dRmod 273 end 274 193 275 # determine the parallax factor (time) (ra) (dec) (parfR) (parfD) are vectors, 194 276 macro getParFactor_vectors
Note:
See TracChangeset
for help on using the changeset viewer.
