Changeset 34429 for trunk/Ohana/src/relphot
- Timestamp:
- Sep 11, 2012, 10:26:52 AM (14 years ago)
- Location:
- trunk
- Files:
-
- 6 edited
-
. (modified) (1 prop)
-
Ohana/src/relphot/src/StarOps.c (modified) (18 diffs)
-
Ohana/src/relphot/src/initialize.c (modified) (1 diff)
-
Ohana/src/relphot/src/liststats.c (modified) (1 diff)
-
Ohana/src/relphot/src/relphot_objects.c (modified) (1 diff)
-
Ohana/src/relphot/src/setMrelFinal.c (modified) (1 diff)
Legend:
- Unmodified
- Added
- Removed
-
trunk
- Property svn:mergeinfo changed
/branches/eam_branches/ipp-20120905 merged: 34423-34428
- Property svn:mergeinfo changed
-
trunk/Ohana/src/relphot/src/StarOps.c
r34267 r34429 11 11 int Nmos; 12 12 int Ngrid; 13 double *list; 14 double *dlist; 15 double *wlist; 16 double *aplist; 17 double *kronlist; 18 double *dkronlist; 13 14 // NOTE: the following arrays are (possibly) pre-allocated and carried down to each 15 // thread. The first 3 (list, dlist, wlist) are used in all relphot analyses; the 16 // others are only used on the final output steps. 17 18 double *list; // list of measure.mag values for a given star 19 double *dlist; // mag errors for a star 20 double *wlist; // weights to use for mean mags 21 double *aplist; // ap mags for a star 22 double *kronlist; // kron mags for a star 23 double *dkronlist; // kron mag errors 24 25 double *psfqf_list; // psfqf for all filters 26 double *psfqfperf_list; // psfqfperf for all filters 27 double *stargal_list; // stargal for all filters 19 28 } SetMrelInfo; 20 29 … … 168 177 ALLOCATE (results.dkronlist, double, Nmax); 169 178 179 ALLOCATE (results.psfqf_list, double, Nmax); 180 ALLOCATE (results.psfqfperf_list, double, Nmax); 181 ALLOCATE (results.stargal_list, double, Nmax); 182 170 183 for (i = 0; i < Ncatalog; i++) { 171 184 setMrel_catalog (catalog, i, pass, flatcorr, &results, Nsecfilt); // XXX add arguments as needed for options … … 178 191 free (results.kronlist); 179 192 free (results.dkronlist); 193 194 free (results.psfqf_list); 195 free (results.psfqfperf_list); 196 free (results.stargal_list); 180 197 return (TRUE); 181 198 } … … 315 332 liststats_setmode (&kronstats, STATMODE); 316 333 334 // StatType psfstats; 335 // liststats_setmode (&psfstats, "MEAN"); 336 317 337 double *list = results->list; 318 338 double *dlist = results->dlist; … … 322 342 double *dkronlist = results->dkronlist; 323 343 344 double *psfqf_list = results->psfqf_list; 345 double *psfqfperf_list = results->psfqfperf_list; 346 double *stargal_list = results->stargal_list; 347 324 348 SetMrelInfoInit (results, FALSE); // do not allocate list,dlist,wlist arrays 325 349 … … 327 351 328 352 char *primaryCell = NULL; 329 ALLOCATE (primaryCell, char, DVO_MAX_PATH); 353 if (isSetMrelFinal) { 354 ALLOCATE (primaryCell, char, DVO_MAX_PATH); 355 } 330 356 331 357 for (j = 0; j < catalog[Nc].Naverage; j++) { … … 338 364 } 339 365 340 BoundaryTreePrimaryCell(primaryCell, catalog[Nc].average[j].R, catalog[Nc].average[j].D); 366 if (isSetMrelFinal) { 367 BoundaryTreePrimaryCell(primaryCell, catalog[Nc].average[j].R, catalog[Nc].average[j].D); 368 } 341 369 342 370 int GoodPS1 = FALSE; … … 346 374 int NextPS1 = 0; 347 375 int NpsfPS1 = 0; 376 377 int Nmeas = 0; // number of meas used for psfqf, psfqfperf, and stargal 348 378 349 379 int Ns; … … 365 395 int haveSynth = FALSE; 366 396 int haveStack = FALSE; 397 int havePS1 = FALSE; 367 398 368 399 // need to find the measurement closest to the center of its skycell, as well as the … … 420 451 421 452 if (isSetMrelFinal) { 453 // Map (aplist) and Mkron (kronlist,dkronlist) are used to calculate mean mags per filter 422 454 float Map = PhotAper (&catalog[Nc].measure[m]); 423 455 aplist[N] = Map - Mcal - Mmos - Mgrid; … … 426 458 kronlist[N] = Mkron - Mcal - Mmos - Mgrid; 427 459 dkronlist[N] = catalog[Nc].measure[m].dMkron; 460 461 // mean psfQF, psfQFperf, and stargal values are calculated per object (all filters) 462 psfqf_list[Nmeas] = catalog[Nc].measure[m].psfQF; 463 psfqfperf_list[Nmeas] = catalog[Nc].measure[m].psfQF; 464 stargal_list[Nmeas] = catalog[Nc].measure[m].extNsigma; 428 465 429 466 // special options for PS1 data … … 431 468 // count the extended detections 432 469 if (!isnan(catalog[Nc].measure[m].Map)) { 433 if (catalog[Nc].measure[m].M - catalog[Nc].measure[m].Map > 0.5) { 470 float dMagAp = catalog[Nc].measure[m].M - catalog[Nc].measure[m].Map; 471 float SigmaAp = hypot(0.1, 2.5*catalog[Nc].measure[m].dM); 472 // XXX this is still quite ad hoc, but at least it: 473 // (a) converges to 0.1 mag offset at the bright end 474 // (b) converges to 0.5 mag offset at the faint end (dM = 0.2) 475 if (dMagAp > SigmaAp) { 434 476 Next ++; 435 477 NextPS1 ++; … … 438 480 } 439 481 } 482 havePS1 = TRUE; 440 483 } 441 484 // gpc1 stack data … … 543 586 } 544 587 N++; 588 Nmeas++; 545 589 } 546 590 … … 658 702 case 0: 659 703 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_PHOTOM_PASS_0; 660 GoodPS1 = TRUE;704 if (havePS1) GoodPS1 = TRUE; 661 705 break; 662 706 case 1: 663 707 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_PHOTOM_PASS_1; 664 GoodPS1 = TRUE;708 if (havePS1) GoodPS1 = TRUE; 665 709 break; 666 710 case 2: 667 711 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_PHOTOM_PASS_2; 668 GoodPS1 = TRUE;712 if (havePS1) GoodPS1 = TRUE; 669 713 break; 670 714 case 3: … … 678 722 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_USE_SYNTH; 679 723 } 724 if (haveStack) { 725 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_HAS_STACK; 726 } 727 if (havePS1) { 728 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_HAS_PS1; 729 } 680 730 if (haveUbercal) { 681 731 catalog[Nc].secfilt[Nsecfilt*j+Nsec].flags |= ID_SECF_USE_UBERCAL; … … 685 735 686 736 if (isSetMrelFinal) { 687 DVOAverageFlags flagBits = ID_OBJ_EXT | ID_OBJ_EXT_ALT | ID_OBJ_GOOD | ID_OBJ_GOOD_ALT; 688 689 // we attempt to set a few flags here; reset those bits before trying: 690 catalog[Nc].average[j].flags &= ~flagBits; 737 if (pass == 0) { 738 DVOAverageFlags flagBits = ID_OBJ_EXT | ID_OBJ_EXT_ALT | ID_OBJ_GOOD | ID_OBJ_GOOD_ALT; 739 // we attempt to set a few flags here; reset those bits before trying: 740 catalog[Nc].average[j].flags &= ~flagBits; 741 } 691 742 692 743 if (NextPS1 && (NextPS1 > NpsfPS1)) { … … 701 752 if (Good2MASS) { 702 753 catalog[Nc].average[j].flags |= ID_OBJ_GOOD_ALT; 754 } 755 756 // use NAN values for catalog[Nc].average[j].psfQF as signal 757 if (!isfinite(catalog[Nc].average[j].psfQF)) { 758 // do something here 759 float psfQFmax = 0.0; 760 float psfQFperfmax = 0.0; 761 float stargalmax = 0.0; 762 int seq; 763 for (seq = 0; seq < Nmeas; seq++) { 764 if (isfinite(psfqf_list[seq])) { 765 psfQFmax = MAX (psfqf_list[seq], psfQFmax); 766 } 767 if (isfinite(psfqfperf_list[seq])) { 768 psfQFperfmax = MAX (psfqfperf_list[seq], psfQFperfmax); 769 } 770 if (isfinite(stargal_list[seq])) { 771 stargalmax = MAX (stargal_list[seq], stargalmax); 772 } 773 } 774 775 catalog[Nc].average[j].psfQF = psfQFmax; 776 catalog[Nc].average[j].psfQFperf = psfQFperfmax; 777 catalog[Nc].average[j].stargal = stargalmax; 703 778 } 704 779 } -
trunk/Ohana/src/relphot/src/initialize.c
r33963 r34429 77 77 args_client (argc, argv); 78 78 79 if (MODE == MODE_UPDATE_OBJECTS) return; 79 if (MODE == MODE_UPDATE_OBJECTS) { 80 char tmpline1[256]; 81 int Ns; 82 Nphotcodes = GetPhotcodeNsecfilt (); 83 ALLOCATE (photcodes, PhotCode *, Nphotcodes); 84 ALLOCATE (PhotcodeList, char, 256); 85 for (Ns = 0; Ns < Nphotcodes; Ns++) { 86 photcodes[Ns] = GetPhotcodebyNsec (Ns); 87 if (Ns > 0) { 88 snprintf (tmpline1, 256, "%s,%s", PhotcodeList, photcodes[Ns][0].name); 89 } else { 90 snprintf (tmpline1, 256, "%s", photcodes[Ns][0].name); 91 } 92 strcpy (PhotcodeList, tmpline1); 93 } 94 return; 95 } 80 96 81 97 // load the list of photcodes into the globals (photcodes, Nphotcodes) -
trunk/Ohana/src/relphot/src/liststats.c
r33963 r34429 38 38 dsortthree (value, dvalue, weight, N); 39 39 } else { 40 dsortpair (value, dvalue, N); 40 if (dvalue) { 41 dsortpair (value, dvalue, N); 42 } else { 43 dsort (value, N); 44 } 41 45 } 42 46 -
trunk/Ohana/src/relphot/src/relphot_objects.c
r34405 r34429 61 61 Nsecfilt = catalog.Nsecfilt; 62 62 DVOSecfiltFlags secfiltBits = 63 ID_SECF_STAR_FEW |64 ID_SECF_STAR_POOR |65 ID_PHOTOM_PASS_0 |66 ID_PHOTOM_PASS_1 |67 ID_PHOTOM_PASS_2 |68 ID_PHOTOM_PASS_3 |69 ID_PHOTOM_PASS_4 |70 ID_SECF_USE_SYNTH |63 ID_SECF_STAR_FEW | 64 ID_SECF_STAR_POOR | 65 ID_PHOTOM_PASS_0 | 66 ID_PHOTOM_PASS_1 | 67 ID_PHOTOM_PASS_2 | 68 ID_PHOTOM_PASS_3 | 69 ID_PHOTOM_PASS_4 | 70 ID_SECF_USE_SYNTH | 71 71 ID_SECF_USE_UBERCAL | 72 ID_SECF_OBJ_EXT; 72 ID_SECF_HAS_STACK | 73 ID_SECF_HAS_PS1 | 74 ID_SECF_OBJ_EXT ; 75 76 DVOAverageFlags astromBits = 77 ID_STAR_FIT_AVE | 78 ID_STAR_FIT_PM | 79 ID_STAR_FIT_PAR | 80 ID_STAR_USE_AVE | 81 ID_STAR_USE_PM | 82 ID_STAR_USE_PAR | 83 ID_STAR_NO_ASTROM ; 73 84 74 85 for (j = 0; j < catalog.Naverage; j++) { 75 catalog.average[j].flags = 0; 86 catalog.average[j].flags &= astromBits; // reset all except astrometry bits 87 catalog.average[j].psfQF = NAN; // reset (will be re-calculated here) 88 catalog.average[j].psfQFperf = NAN; // reset (will be re-calculated here) 89 catalog.average[j].stargal = NAN; // reset (will be re-calculated here) 76 90 for (k = 0; k < Nsecfilt; k++) { 77 catalog.secfilt[j*Nsecfilt + k].M = NAN; 78 catalog.secfilt[j*Nsecfilt + k].Map = NAN; 79 catalog.secfilt[j*Nsecfilt + k].dM = NAN; 80 catalog.secfilt[j*Nsecfilt + k].Mstdev = NAN_S_SHORT; 81 catalog.secfilt[j*Nsecfilt + k].Xm = NAN; 82 catalog.secfilt[j*Nsecfilt + k].M_20 = NAN_S_SHORT; 83 catalog.secfilt[j*Nsecfilt + k].M_80 = NAN_S_SHORT; 84 catalog.secfilt[j*Nsecfilt + k].Ncode = 0; 85 catalog.secfilt[j*Nsecfilt + k].Nused = 0; 86 catalog.secfilt[j*Nsecfilt + k].flags &= ~secfiltBits; 87 catalog.secfilt[j*Nsecfilt + k].ubercalDist = 1000; 91 dvo_secfilt_init (&catalog.secfilt[j*Nsecfilt + k]); 92 catalog.secfilt[j*Nsecfilt + k].flags &= ~secfiltBits; // XXX: only reset photom bits: 88 93 } 89 94 } -
trunk/Ohana/src/relphot/src/setMrelFinal.c
r34405 r34429 94 94 } 95 95 96 for (i = 0; i < catalog[0].Naverage; i++) { 97 catalog[0].average[i].psfQF = NAN; // force recalculation below 98 catalog[0].average[i].psfQFperf = NAN; // force recalculation below 99 catalog[0].average[i].stargal = NAN; // force recalculation below 100 } 101 96 102 // XXX make this optional? (do not clean for -averages?) 97 103 if (!simpleAverage) clean_measures (catalog, 1, TRUE, flatcorr); /* mark outliers ID_MEAS_POOR_PHOTOM */
Note:
See TracChangeset
for help on using the changeset viewer.
