- Timestamp:
- Apr 12, 2011, 6:06:39 AM (15 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20110404/Ohana/src/relphot/src/StarOps.c
r31262 r31272 29 29 float getMrel (Catalog *catalog, off_t meas, int cat) { 30 30 31 int Nsec, Nsecfilt, code;31 int Nsec, Nsecfilt, photcode; 32 32 int ave; 33 33 float value; 34 34 35 35 ave = catalog[cat].measure[meas].averef; 36 code = catalog[cat].measure[meas].photcode; 37 38 // XXX DEP : this should use a flag associated with secfilt 39 if (catalog[cat].average[ave].flags & STAR_BAD) return (NAN); 36 photcode = catalog[cat].measure[meas].photcode; 37 38 int ecode = GetPhotcodeEquivCodebyCode (photcode); 39 Nsec = GetPhotcodeNsec(ecode); 40 Nsecfilt = GetPhotcodeNsecfilt (); 41 42 // is this star OK? 43 if (catalog[cat].secfilt[Nsecfilt*ave+Nsec].flags & STAR_BAD) return (NAN); 40 44 41 Nsec = GetPhotcodeNsec(code);42 Nsecfilt = GetPhotcodeNsecfilt ();43 44 45 value = catalog[cat].secfilt[Nsecfilt*ave+Nsec].M; 45 46 return (value); … … 52 53 float Msys, Mcal, Mmos, Mgrid; 53 54 StatType stats; 54 int Nsec, Nsecfilt, ecode; 55 56 Nsecfilt = GetPhotcodeNsecfilt (); 55 56 int Nsecfilt = GetPhotcodeNsecfilt (); 57 57 Nfew = Nsys = Nbad = Ncal = Nmos = Ngrid = 0; 58 58 … … 64 64 65 65 int thisCode = photcodes[Ns][0].code; 66 Nsec = GetPhotcodeNsec(thisCode);66 int Nsec = GetPhotcodeNsec(thisCode); 67 67 68 68 /* calculate the average value for a single star */ 69 // XXX this flag should be set by secfilt, not average 70 if (catalog[i].average[j].flags & STAR_BAD) continue; 69 70 // skip bad stars 71 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 71 72 m = catalog[i].average[j].measureOffset; 72 73 … … 74 75 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 75 76 // skip measurements that do not match the current photcode 76 ecode = GetPhotcodeEquivCodebyCode (catalog[i].measure[m].photcode);77 int ecode = GetPhotcodeEquivCodebyCode (catalog[i].measure[m].photcode); 77 78 if (ecode != thisCode) { continue; } 78 79 … … 123 124 124 125 // when performing the grid analysis, STAR_TOOFEW will be set to 1; 125 // XXX DEP this makes no sense: need a separate flag for each secfilt126 126 if (N <= STAR_TOOFEW) { /* too few measurements */ 127 catalog[i]. average[j].flags |= ID_STAR_FEW;127 catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_STAR_FEW; 128 128 Nfew ++; 129 129 } else { 130 catalog[i]. average[j].flags &= ~ID_STAR_FEW;130 catalog[i].secfilt[Nsecfilt*j+Nsec].flags &= ~ID_STAR_FEW; 131 131 } 132 132 … … 408 408 for (i = Ntot = 0; i < Ncatalog; i++) { 409 409 for (j = 0; j < catalog[i].Naverage; j++) { 410 if ( catalog[i].average[j].flags & STAR_BAD) continue;410 if ( catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD ) continue; 411 411 Xm = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm; 412 412 if (Xm == -1) continue; … … 434 434 mark = (dM > MaxScatter) || (Xm == NAN_S_SHORT) || (Chisq > MaxChisq); 435 435 if (mark) { 436 catalog[i]. average[j].flags |= ID_STAR_POOR;436 catalog[i].secfilt[Nsecfilt*j+Nsec].flags |= ID_STAR_POOR; 437 437 Ndel ++; 438 438 } else { 439 catalog[i]. average[j].flags &= ~ID_STAR_POOR;439 catalog[i].secfilt[Nsecfilt*j+Nsec].flags &= ~ID_STAR_POOR; 440 440 } 441 441 Nave ++; … … 492 492 493 493 int thisCode = photcodes[Ns][0].code; 494 494 int Nsec = GetPhotcodeNsec(thisCode); 495 495 496 /* skip bad stars to prevent them from becoming good (on inner sample) */ 496 if (catalog[i]. average[j].flags & STAR_BAD) continue;497 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 497 498 498 499 /* accumulate list of valid measurements */ … … 582 583 } 583 584 584 StatType statsStarN (Catalog *catalog, int Ncatalog, int seccode) {585 StatType statsStarN (Catalog *catalog, int Ncatalog, int Nsec, int seccode) { 585 586 586 587 off_t j, k, m, Ntot; … … 589 590 float Mcal, Mmos, Mgrid; 590 591 StatType stats; 592 int N1, N2, N3, N4, N0; 593 N1 = N2 = N3 = N4 = N0 = 0; 594 595 int Nsecfilt = GetPhotcodeNsecfilt (); 591 596 592 597 Ntot = 0; … … 603 608 604 609 /* calculate the average value for a single star */ 605 if (catalog[i]. average[j].flags & STAR_BAD) continue;610 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) { N1++; continue; } 606 611 m = catalog[i].average[j].measureOffset; 607 608 int ecode = GetPhotcodeEquivCodebyCode (catalog[i].measure[m].photcode);609 if (ecode == seccode) continue;610 612 611 613 N = 0; 612 614 for (k = 0; k < catalog[i].average[j].Nmeasure; k++, m++) { 615 int ecode = GetPhotcodeEquivCodebyCode (catalog[i].measure[m].photcode); 616 if (ecode != seccode) { N0++; continue;} 613 617 Mcal = getMcal (m, i); 614 if (isnan(Mcal)) continue;618 if (isnan(Mcal)) { N2++; continue;} 615 619 Mmos = getMmos (m, i); 616 if (isnan(Mmos)) continue;620 if (isnan(Mmos)) { N3++; continue; } 617 621 Mgrid = getMgrid (m, i); 618 if (isnan(Mgrid)) continue;622 if (isnan(Mgrid)) { N4++; continue;} 619 623 N++; 620 624 } … … 626 630 } 627 631 632 fprintf (stderr, "N1: %d, N2: %d, N3: %d, N4: %d, N0: %d\n", N1, N2, N3, N4, N0); 628 633 liststats (list, dlist, n, &stats); 629 634 free (list); … … 655 660 656 661 /* calculate the average value for a single star */ 657 if (catalog[i]. average[j].flags & STAR_BAD) continue;662 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 658 663 659 664 Xm = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm; … … 694 699 695 700 /* calculate the average value for a single star */ 696 if (catalog[i]. average[j].flags & STAR_BAD) continue;701 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 697 702 698 703 dM = catalog[i].secfilt[Nsecfilt*j+Nsec].dM; … … 733 738 for (i = 0; i < Ncatalog; i++) { 734 739 for (j = 0; j < catalog[i].Naverage; j++) { 735 if (catalog[i]. average[j].flags & STAR_BAD) continue;740 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 736 741 dMrel = catalog[i].secfilt[Nsecfilt*j+Nsec].dM; 737 742 bin = dMrel / 0.00025; … … 773 778 for (i = 0; i < Ncatalog; i++) { 774 779 for (j = 0; j < catalog[i].Naverage; j++) { 775 if (catalog[i]. average[j].flags & STAR_BAD) continue;780 if (catalog[i].secfilt[Nsecfilt*j+Nsec].flags & STAR_BAD) continue; 776 781 xlist[N] = catalog[i].secfilt[Nsecfilt*j+Nsec].M; 777 782 value = catalog[i].secfilt[Nsecfilt*j+Nsec].Xm;
Note:
See TracChangeset
for help on using the changeset viewer.
