Changeset 33394
- Timestamp:
- Mar 2, 2012, 12:20:43 PM (14 years ago)
- Location:
- branches/eam_branches/ipp-20111122/Ohana/src/relphot
- Files:
-
- 6 edited
-
include/relphot.h (modified) (2 diffs)
-
src/ImageOps.c (modified) (8 diffs)
-
src/MosaicOps.c (modified) (8 diffs)
-
src/StarOps.c (modified) (12 diffs)
-
src/liststats.c (modified) (1 diff)
-
src/relphot.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20111122/Ohana/src/relphot/include/relphot.h
r33374 r33394 25 25 short Xm; 26 26 float secz; 27 char flags; 27 float ubercalDist; 28 unsigned int flags; 28 29 Coords coords; 29 30 } Mosaic; … … 37 38 double min; 38 39 double max; 40 double Upper80; 41 double Lower20; 39 42 double total; 40 43 int Nmeas; -
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/ImageOps.c
r33391 r33394 370 370 void setMcal (Catalog *catalog, int PoorImages, FlatCorrectionTable *flatcorr) { 371 371 372 off_t i, j, m, c, n, N, Nmax , mark, bad;373 int Nfew, Nbad, Nmos, Ngrid, Nrel, Nsys, Nbright;374 float Msys, Mrel, Mmos, Mgrid, Mflat , McalBright, McalBright2;375 double *list, *dlist ;372 off_t i, j, m, c, n, N, Nmax; 373 int mark, bad, Nfew, Nbad, Nmos, Nrel, Ngrid, Nsys, Nbright; 374 float Msys, Mrel, Mmos, Mgrid, Mflat; 375 double *list, *dlist, *Mlist, *dMlist; 376 376 StatType stats; 377 377 … … 383 383 384 384 if (PoorImages) { 385 IMAGE_BAD = STAR_BAD = MEAS_BAD = 0; 385 // XXX use bad stars and measurements for PoorImages? or not? 386 // IMAGE_BAD = STAR_BAD = MEAS_BAD = 0; 387 IMAGE_BAD = 0; 386 388 } 387 389 … … 392 394 ALLOCATE (list, double, Nmax); 393 395 ALLOCATE (dlist, double, Nmax); 396 ALLOCATE (Mlist, double, Nmax); 397 ALLOCATE (dMlist, double, Nmax); 394 398 395 399 Nfew = Nbad = Nmos = Ngrid = Nrel = Nsys = 0; 396 400 397 // counters to measure the bright-end scatter398 McalBright = McalBright2 = 0.0;399 Nbright = 0;400 401 401 for (i = 0; i < Nimage; i++) { 402 402 403 // XXXX TEST 404 Nfew = Nbad = Nmos = Ngrid = Nrel = Nsys = 0; 405 403 406 /* on PoorImages run, skip good images */ 404 407 if (PoorImages) { … … 415 418 416 419 int minUbercalDist = 1000; 420 421 // number of stars to measure the bright-end scatter 422 Nbright = 0; 417 423 418 424 N = 0; … … 469 475 dlist[N] = MAX (catalog[c].measureT[m].dM, MIN_ERROR); 470 476 if (catalog[c].measureT[m].dM < IMFIT_SYS_SIGMA_LIM) { 471 M calBright += list[N];472 McalBright2 += SQ(list[N]);477 Mlist[Nbright] = list[N]; 478 dMlist[Nbright] = dlist[N]; 473 479 Nbright ++; 474 480 } … … 476 482 } 477 483 /* N_onImage[i] is all measurements, N is good measurements */ 484 485 // XXX TEST 486 fprintf (stderr, "meas skipped: (Nbad: %d, Nmos: %d, Ngrid: %d, Nrel: %d, Nsys: %d)\n", Nbad, Nmos, Ngrid, Nrel, Nsys); 478 487 479 488 /* too few good measurements or too many bad measurements */ … … 487 496 } 488 497 } 489 498 490 499 liststats (list, dlist, N, &stats); 491 492 500 image[i].Mcal = stats.mean; 493 501 image[i].dMcal = stats.error; 494 image[i].dMagSys = stats.sigma;495 502 image[i].nFitPhotom = N; 496 503 image[i].Xm = 100.0*log10(stats.chisq); … … 498 505 plot_setMcal (list, N, &stats, CLOUD_TOLERANCE); 499 506 507 // bright end scatter 508 liststats (Mlist, dMlist, Nbright, &stats); 509 image[i].dMagSys = stats.sigma; 510 500 511 if (image[i].Mcal < -CLOUD_TOLERANCE) { 501 512 image[i].Mcal = 0.0; 502 513 } 503 514 504 image[i].dummy3 = minUbercalDist; 505 fprintf (stderr, "%s : %d\n", image[i].name, image[i].dummy3); 515 // minUbercalDist calculated here is the min value for any star owned by this image 516 // since this particular image is tied to that star, bump its distance by 1 517 image[i].dummy3 = minUbercalDist + 1; 506 518 } 507 519 free (list); 508 520 free (dlist); 521 free (Mlist); 522 free (dMlist); 509 523 510 524 fprintf (stderr, "%d images marked having too few measurements (Nbad: %d, Nmos: %d, Ngrid: %d, Nrel: %d, Nsys: %d)\n", Nfew, Nbad, Nmos, Ngrid, Nrel, Nsys); -
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/MosaicOps.c
r33157 r33394 1 1 # include "relphot.h" 2 void plot_setMcal (double *list, int Npts, StatType *stats, float clouds); 2 3 3 4 // array of mosaic definition structures … … 391 392 int setMmos (Catalog *catalog, int PoorImages, FlatCorrectionTable *flatcorr) { 392 393 393 off_t i, j, m, c, N, Nmax;394 int n, mark, bad, Nfew, Nbad, Ncal, Nrel, Ngrid, Nsys, Nsecfilt;394 off_t i, j, m, c, n, N, Nmax; 395 int mark, bad, Nfew, Nbad, Ncal, Nrel, Ngrid, Nsys, Nbright; 395 396 float Msys, Mrel, Mcal, Mgrid, Mflat; 396 397 double *list, *dlist, *Mlist, *dMlist; … … 403 404 image = getimages (&N, NULL); 404 405 405 Nsecfilt = GetPhotcodeNsecfilt (); 406 fprintf (stderr, "limiting negative clouds to %f\n", CLOUD_TOLERANCE); 407 408 int Nsecfilt = GetPhotcodeNsecfilt (); 406 409 407 410 if (PoorImages) { 411 // XXX use bad stars and measurements for PoorImages? or not? 412 // IMAGE_BAD = STAR_BAD = MEAS_BAD = 0; 408 413 IMAGE_BAD = 0; 409 414 } … … 428 433 } 429 434 430 /* we optionally do not recalibrate images with UBERCAL zero points */ 431 if (KEEP_UBERCAL && (mosaic[i].flags & ID_IMAGE_PHOTOM_UBERCAL)) continue; 435 // UBERCAL image: if this is an ubercal image, set minUbercalDist to 0: 436 // we optionally do not recalibrate images with UBERCAL zero points 437 if (mosaic[i].flags & ID_IMAGE_PHOTOM_UBERCAL) { 438 mosaic[i].ubercalDist = 0; 439 // propagate ubercalDist to the images 440 for (j = 0; j < MosaicN_Image[i]; j++) { 441 off_t im = MosaicToImage[i][j]; 442 image[im].dummy3 = mosaic[i].ubercalDist; 443 fprintf (stderr, "%d %d %d\n", (int) i, (int) im, image[im].dummy3); 444 } 445 if (KEEP_UBERCAL) continue; 446 } 447 448 int minUbercalDist = 1000; 449 450 // number of stars to measure the bright-end scatter 451 Nbright = 0; 432 452 433 453 N = 0; … … 470 490 continue; 471 491 } 492 493 PhotCode *code = GetPhotcodebyCode (catalog[c].measureT[m].photcode); 494 if (!code) goto skip; 495 if (code->equiv < 1) goto skip; 496 int Nsec = GetPhotcodeNsec (code->equiv); 497 if (Nsec == -1) goto skip; 498 minUbercalDist = MIN (catalog[c].secfilt[n*Nsecfilt + Nsec].M_80, minUbercalDist); // M_80 == ubercalDist 499 500 skip: 472 501 list[N] = Msys - Mrel - Mcal - Mgrid + Mflat; 473 502 dlist[N] = MAX (catalog[c].measureT[m].dM, MIN_ERROR); 474 Mlist[N] = Msys; 475 dMlist[N] = list[N]; 503 if (catalog[c].measureT[m].dM < IMFIT_SYS_SIGMA_LIM) { 504 Mlist[Nbright] = list[N]; 505 dMlist[Nbright] = dlist[N]; 506 Nbright ++; 507 } 476 508 N++; 477 509 } … … 479 511 480 512 /* too few good measurements or too many bad measurements (skip in PoorImages run) */ 481 482 513 if (!PoorImages) { 483 514 mark = (N < IMAGE_TOOFEW) || (N < IMAGE_GOOD_FRACTION*N_onMosaic[i]); … … 493 524 if (PoorImages) fprintf (stderr, "Mmos: %f %f %d "OFF_T_FMT"\n", stats.mean, stats.sigma, stats.Nmeas, N); 494 525 495 float CLOUD_TOLERANCE = 0.01;496 526 mosaic[i].Mcal = stats.mean; 497 527 mosaic[i].dMcal = stats.error; 498 mosaic[i].dMsys = stats.sigma;499 528 mosaic[i].nFitPhotom = N; 500 529 mosaic[i].Xm = 100.0*log10(stats.chisq); 501 530 531 plot_setMcal (list, N, &stats, CLOUD_TOLERANCE); 532 533 // bright end scatter 534 liststats (Mlist, dMlist, Nbright, &stats); 535 mosaic[i].dMsys = stats.sigma; 536 502 537 if (mosaic[i].Mcal < -CLOUD_TOLERANCE) { 503 538 mosaic[i].Mcal = 0.0; 539 } 540 541 // minUbercalDist calculated here is the min value for any star owned by this image 542 // since this particular image is tied to that star, bump its distance by 1 543 mosaic[i].ubercalDist = minUbercalDist + 1; 544 545 // propagate ubercalDist to the images 546 for (j = 0; j < MosaicN_Image[i]; j++) { 547 off_t im = MosaicToImage[i][j]; 548 image[im].dummy3 = mosaic[i].ubercalDist; 549 fprintf (stderr, "%d %d %d\n", (int) i, (int) im, image[im].dummy3); 504 550 } 505 551 } … … 875 921 Nmark = Nscatter = Noffset = 0; 876 922 for (i = 0; i < Nmosaic; i++) { 923 // if we are keeping ubercal sacrosanct, then we should not be allowed to break them... 924 if (KEEP_UBERCAL && (mosaic[i].flags & ID_IMAGE_PHOTOM_UBERCAL)) continue; 925 877 926 mark = FALSE; 878 927 if (mosaic[i].dMcal > MaxScatter) { -
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/StarOps.c
r33391 r33394 61 61 for (i = 0; i < Ncatalog; i++) { 62 62 for (j = 0; j < catalog[i].Naverage; j++) { 63 64 63 // XXX accumulate all secfilt values in a single pass? 65 64 … … 100 99 101 100 Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt]); 102 if (isnan(Msys)) { 103 Nsys++; 104 continue; 105 } 101 if (isnan(Msys)) { Nsys++; continue; } 106 102 list[N] = Msys - Mcal - Mmos - Mgrid; 107 103 … … 194 190 for (j = 0; j < catalog[i].Naverage; j++) { 195 191 192 int minUbercalDist = 1000; 193 196 194 int Ns; 197 195 for (Ns = 0; Ns < Nphotcodes; Ns++) { … … 229 227 230 228 Msys = PhotSysTiny (&catalog[i].measureT[m], &catalog[i].averageT[j], &catalog[i].secfilt[j*Nsecfilt]); 229 if (isnan(Msys)) { continue; } 231 230 list[N] = Msys - Mcal - Mmos - Mgrid; 231 232 int myUbercalDist = getUbercalDist(m,i); 233 minUbercalDist = MIN(minUbercalDist, myUbercalDist); 232 234 233 235 // dlist gives the error, which is used as the weight in WT_MEAN. … … 258 260 if (N < 1) continue; 259 261 260 // force WT_MEAN or MEAN here? 261 262 // XXX force WT_MEAN or MEAN here? 262 263 liststats (list, dlist, N, &stats); 263 264 catalog[i].found[Nsecfilt*j+Nsec] = TRUE; … … 286 287 catalog[i].secfilt[Nsecfilt*j+Nsec].Ncode = Ncode; 287 288 catalog[i].secfilt[Nsecfilt*j+Nsec].Nused = stats.Nmeas; 289 290 catalog[i].secfilt[Nsecfilt*j+Nsec].M_80 = stats.Upper80; // M_80 == ubercalDist 291 catalog[i].secfilt[Nsecfilt*j+Nsec].M_20 = stats.Lower20; // M_80 == ubercalDist 292 catalog[i].secfilt[Nsecfilt*j+Nsec].M_80 = minUbercalDist; // M_80 == ubercalDist 288 293 } 289 294 } … … 465 470 void clean_stars (Catalog *catalog, int Ncatalog) { 466 471 467 int i, j, Ndel, Nave, Ntot, mark, Ns ;472 int i, j, Ndel, Nave, Ntot, mark, Ns, Nscat, Nchi, Nnan; 468 473 float dM, Xm; 469 474 double Chisq, MaxScatter, MaxChisq; … … 482 487 483 488 int Nsecfilt = GetPhotcodeNsecfilt (); 489 490 // XX int oldPLOTSTUFF = PLOTSTUFF; 491 // XX PLOTSTUFF = TRUE; 492 // XX plot_chisq (catalog, Ncatalog); 493 // XX PLOTSTUFF = oldPLOTSTUFF; 484 494 485 495 // eliminate bad stars using the stats for a single secfilt at a time … … 510 520 fprintf (stderr, "Max Scatter: %f, Max Chisq: %f\n", MaxScatter, MaxChisq); 511 521 512 Ndel = Nave = 0;522 Ndel = Nave = Nscat = Nnan = Nchi = 0; 513 523 for (i = 0; i < Ncatalog; i++) { 514 524 for (j = 0; j < catalog[i].Naverage; j++) { … … 520 530 catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_STAR_POOR; 521 531 Ndel ++; 532 if (dM > MaxScatter) { Nscat ++; } 533 if (Xm == NAN_S_SHORT) { Nnan ++; } 534 if (Chisq > MaxChisq) { Nchi ++; } 522 535 } else { 523 536 catalog[i].secfilt[Nsecfilt*j+Nsec].flags &= ~ID_STAR_POOR; … … 526 539 } 527 540 } 528 fprintf (stderr, "%d stars marked variable , %d total\n", Ndel, Nave);541 fprintf (stderr, "%d stars marked variable (%d scat, %d nan, %d chi), %d total\n", Ndel, Nscat, Nnan, Nchi, Nave); 529 542 initstats (STATMODE); 530 543 } … … 564 577 TOOFEW = MAX (5, STAR_TOOFEW); 565 578 566 FILE *f = f open ("poor.dat", "w");579 FILE *f = final ? fopen ("poor.dat", "a") : fopen ("poor.dat", "w"); 567 580 568 581 Ndel = Nave = 0; -
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/liststats.c
r33391 r33394 41 41 stats[0].min = value[0]; 42 42 stats[0].max = value[N-1]; 43 int N80 = MIN (N-1, 0.8*N); 44 int N20 = MAX (0, 0.2*N); 45 stats[0].Upper80 = value[N80]; 46 stats[0].Lower20 = value[N20]; 43 47 44 48 switch (statmode) { -
branches/eam_branches/ipp-20111122/Ohana/src/relphot/src/relphot.c
r33364 r33394 237 237 freeGridBins (Ncatalog); 238 238 239 // XXX 240 FILE *f = fopen ("poor.dat", "w"); 241 fclose (f); 242 239 243 /* load catalog data from region files, update Mrel include all data */ 240 244 reload_catalogs (skylist, flatcorr, 0, NULL);
Note:
See TracChangeset
for help on using the changeset viewer.
