Changeset 4420
- Timestamp:
- Jun 28, 2005, 2:40:42 PM (21 years ago)
- Location:
- trunk/Ohana/src/opihi
- Files:
-
- 6 edited
-
cmd.astro/imfit-qrgauss.c (modified) (2 diffs)
-
dvo/.dvo (modified) (1 diff)
-
dvo/avextract.c (modified) (1 diff)
-
dvo/dmagaves.c (modified) (1 diff)
-
dvo/photometry.c (modified) (16 diffs)
-
include/dvo1.h (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/Ohana/src/opihi/cmd.astro/imfit-qrgauss.c
r3144 r4420 44 44 } 45 45 46 float qrgaussTD (float x, float y, float *par, int Npar, float *dpar) { 47 48 float X, Y, px, py; 49 float z, r, q, f; 50 51 X = x - par[0]; 52 Y = y - par[1]; 53 54 px = par[2]*X; 55 py = par[3]*Y; 56 57 z = 0.5*SQ(px) + 0.5*SQ(py) + par[4]*X*Y; 58 59 r = 1.0 / (1 + fpar[0]*z + pow(z,par[7])); 60 f = par[5]*r + par[6]; 61 q = par[5]*SQ(r)*(fpar[0] + par[7]*pow(z,(par[7]-1))); 62 63 if (dpar != NULL) { 64 dpar[0] = q*(2*px*par[2] + par[4]*Y); 65 dpar[1] = q*(2*py*par[3] + par[4]*X); 66 dpar[2] = -2*q*px*X*2; 67 dpar[3] = -2*q*py*Y*2; 68 dpar[4] = -q*X*Y; 69 dpar[5] = +r; 70 dpar[6] = +1; 71 dpar[7] = -5*par[5]*SQ(r)*log(z)*pow(z,par[7]); 72 } 73 return (f); 74 } 75 76 77 # if (0) 46 78 /* one component, two slopes: (1 + z^M + z^N)^(-1) -- x, y, sx, sy, sxy, I, sky, sr */ 47 79 float qrgaussTD (float x, float y, float *par, int Npar, float *dpar) { … … 76 108 return (f); 77 109 } 78 110 # endif -
trunk/Ohana/src/opihi/dvo/.dvo
r2598 r4420 1 avextract -phothelp -
trunk/Ohana/src/opihi/dvo/avextract.c
r3462 r4420 50 50 if (param == AVE_ZERO) { 51 51 if (!GetPhotcodeInfo (argv[2], &code, &mode)) { 52 GetAverageParam ("help"); 53 fprintf (stderr, "value may also be a valid photcode\n"); 54 fprintf (stderr, "photcodes or 'mag' may have optional magnitude mode: mag,[Mave, Mref]\n"); 52 GetAverageParamHelp (); 55 53 goto escape; 56 54 } -
trunk/Ohana/src/opihi/dvo/dmagaves.c
r3462 r4420 41 41 if (!GetPhotcodeInfo (argv[1], &code[0], &mode[0])) return (FALSE); 42 42 if (!GetPhotcodeInfo (argv[3], &code[1], &mode[1])) return (FALSE); 43 if ((param = GetAverageParam (argv[5])) == AVE_ZERO) return (FALSE); 43 if ((param = GetAverageParam (argv[5])) == AVE_ZERO) { 44 GetAverageParamHelp (); 45 return (FALSE); 46 } 44 47 code[2] = GetPhotcodeEquivbyCode (code[0][0].code); 45 48 mode[2] = mode[0]; -
trunk/Ohana/src/opihi/dvo/photometry.c
r4027 r4420 48 48 static double iMagMin; 49 49 static int FlagSelect, FlagValue; 50 static int TypefracSelect, TypefracType, TypefracSign; 51 static double TypefracValue; 50 52 51 53 /* applied to Average quantities */ … … 237 239 if (!strcasecmp (parname, "flag")) param = AVE_FLAG; 238 240 if (!strcasecmp (parname, "type")) param = AVE_TYPE; 241 if (!strcasecmp (parname, "typefrac")) { 242 if (!TypefracType) { 243 fprintf (stderr, "typefrac needs to specify type to use\n"); 244 return (param); 245 } 246 param = AVE_TYPEFRAC; 247 } 239 248 if (!strcasecmp (parname, "Nphot")) param = AVE_NPHOT; 240 249 if (!strcasecmp (parname, "Ncode")) param = AVE_NCODE; 241 if (!strcasecmp (parname, "help")) {242 fprintf (stderr, "value may be one of the following:\n");243 fprintf (stderr, " ra dec dmag Nmeas Nmiss Xm Xp Nphot Ncode flag type\n");244 }245 250 return (param); 251 } 252 253 void GetAverageParamHelp () { 254 fprintf (stderr, "value may be one of the following:\n"); 255 fprintf (stderr, " ra dec dmag Nmeas Nmiss Xm Xp Nphot Ncode flag type typefrac\n\n"); 256 fprintf (stderr, "value may also be a valid photcode\n"); 257 fprintf (stderr, "photcodes or 'mag' may have optional magnitude mode: mag,[Mave, Mref]\n"); 258 return; 246 259 } 247 260 … … 253 266 254 267 switch (mode) { 255 case MEAS_XCCD:256 case MEAS_YCCD:257 break;258 case MEAS_XMOSAIC:259 case MEAS_YMOSAIC:260 /* mosaic defines a frame with 0,0 at the mosaic center, and 1 arcsec / pixel */261 mosaic.crpix1 = mosaic.crpix2 = 0.0;262 mosaic.cdelt1 = mosaic.cdelt2 = 1.0 / 3600;263 mosaic.pc1_1 = mosaic.pc2_2 = 1.0;264 mosaic.pc1_2 = mosaic.pc2_1 = 0.0;265 mosaic.Npolyterms = 0;266 strcpy (mosaic.ctype, "RA---SIN");267 break;268 default:269 return (TRUE);268 case MEAS_XCCD: 269 case MEAS_YCCD: 270 break; 271 case MEAS_XMOSAIC: 272 case MEAS_YMOSAIC: 273 /* mosaic defines a frame with 0,0 at the mosaic center, and 1 arcsec / pixel */ 274 mosaic.crpix1 = mosaic.crpix2 = 0.0; 275 mosaic.cdelt1 = mosaic.cdelt2 = 1.0 / 3600; 276 mosaic.pc1_1 = mosaic.pc2_2 = 1.0; 277 mosaic.pc1_2 = mosaic.pc2_1 = 0.0; 278 mosaic.Npolyterms = 0; 279 strcpy (mosaic.ctype, "RA---SIN"); 280 break; 281 default: 282 return (TRUE); 270 283 } 271 284 … … 418 431 } 419 432 433 /* select on measurement type: 1,2,3 (AVERAGE ONLY) */ 434 TypefracType = 0; 435 if (N = get_argument (*argc, argv, "-usetype")) { 436 remove_argument (N, argc, argv); 437 TypefracType = atoi (argv[N]); 438 remove_argument (N, argc, argv); 439 } 440 441 /* select on measurement type: 1,2,3 (AVERAGE ONLY) */ 442 TypefracSelect = FALSE; 443 if (N = get_argument (*argc, argv, "-typefrac")) { 444 remove_argument (N, argc, argv); 445 TypefracType = atoi (argv[N]); 446 remove_argument (N, argc, argv); 447 TypefracValue = fabs (atof (argv[N])); 448 TypefracSign = 0; 449 if (argv[N][0] == '-') TypefracSign = -1; 450 if (argv[N][0] == '+') TypefracSign = +1; 451 remove_argument (N, argc, argv); 452 TypefracSelect = TRUE; 453 } 454 420 455 /* select by number of measurements (AVERAGE ONLY) */ 421 456 NphotSelect = FALSE; … … 474 509 475 510 /* chisq, fwhm, Nphot, Ncode */ 476 if (!TestAverage (code, average, secfilt, measure)) return (list);511 /* if (!TestAverage (code, average, secfilt, measure)) return (list); */ 477 512 478 513 /* look for measures */ … … 490 525 value = 0; 491 526 switch (param) { 492 case MEAS_MAG: /* magnitudes are already determined above */493 value = M;494 break;495 case MEAS_RA: /* OK */496 value = average[0].R - measure[i].dR / 360000.0;497 break;498 case MEAS_DEC: /* OK */499 value = average[0].D - measure[i].dD / 360000.0;500 break;501 case MEAS_dMAG: /* OK */502 value = 0.001*measure[i].dM;503 break;504 case MEAS_AIRMASS: /* OK */505 value = 0.001*measure[i].airmass;506 break;507 case MEAS_EXPTIME: /* OK */508 value = pow (10.0, measure[i].dt * 0.0004);509 break;510 case MEAS_PHOTCODE: /* OK */511 value = measure[i].source;512 break;513 case MEAS_TIME: /* OK */514 value = TimeValue (measure[i].t, TimeReference, TimeFormat);515 break;516 case MEAS_dR: /* OK */517 value = 0.01*measure[i].dR;518 break;519 case MEAS_dD: /* OK */520 value = 0.01*measure[i].dD;521 break;522 case MEAS_FWHM: /* OK */523 value = 0.01*measure[i].FWx;524 break;525 case MEAS_DOPHOT: /* OK */526 value = measure[i].dophot;527 break;528 case MEAS_FLAGS: /* ? */529 value = measure[i].flags;530 break;531 case MEAS_XCCD: /* OK */532 ra = average[0].R - measure[i].dR / 360000.0;533 dec = average[0].D - measure[i].dD / 360000.0;534 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);535 if (m == -1) break;536 if (!FindMosaicForImage (image, Nimage, m)) break;537 RD_to_XY (&x, &y, ra, dec, &image[m].coords);538 value = x;539 break;540 case MEAS_YCCD: /* OK */541 ra = average[0].R - measure[i].dR / 360000.0;542 dec = average[0].D - measure[i].dD / 360000.0;543 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);544 if (m == -1) break;545 if (!FindMosaicForImage (image, Nimage, m)) break;546 RD_to_XY (&x, &y, ra, dec, &image[m].coords);547 value = y;548 break;549 case MEAS_XMOSAIC: /* OK */550 ra = average[0].R - measure[i].dR / 360000.0;551 dec = average[0].D - measure[i].dD / 360000.0;552 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);553 if (m == -1) break;554 /* this should use the mosaic assoicated with the image */555 /* the solution here depends on image.coords having crref1,2 set to match the boresite center */556 /* XXX set the mosaic.coords to have a unity WRP transformation in which x,y = ra,dec */557 mosaic.crval1 = image[m].coords.crval1;558 mosaic.crval2 = image[m].coords.crval2;559 RD_to_XY (&x, &y, ra, dec, &mosaic);560 value = x;561 break;562 case MEAS_YMOSAIC: /* OK */563 ra = average[0].R - measure[i].dR / 360000.0;564 dec = average[0].D - measure[i].dD / 360000.0;565 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source);566 if (m == -1) break;567 /* same comments as above */568 mosaic.crval1 = image[m].coords.crval1;569 mosaic.crval2 = image[m].coords.crval2;570 RD_to_XY (&x, &y, ra, dec, &mosaic);571 value = y;572 break;527 case MEAS_MAG: /* magnitudes are already determined above */ 528 value = M; 529 break; 530 case MEAS_RA: /* OK */ 531 value = average[0].R - measure[i].dR / 360000.0; 532 break; 533 case MEAS_DEC: /* OK */ 534 value = average[0].D - measure[i].dD / 360000.0; 535 break; 536 case MEAS_dMAG: /* OK */ 537 value = 0.001*measure[i].dM; 538 break; 539 case MEAS_AIRMASS: /* OK */ 540 value = 0.001*measure[i].airmass; 541 break; 542 case MEAS_EXPTIME: /* OK */ 543 value = pow (10.0, measure[i].dt * 0.0004); 544 break; 545 case MEAS_PHOTCODE: /* OK */ 546 value = measure[i].source; 547 break; 548 case MEAS_TIME: /* OK */ 549 value = TimeValue (measure[i].t, TimeReference, TimeFormat); 550 break; 551 case MEAS_dR: /* OK */ 552 value = 0.01*measure[i].dR; 553 break; 554 case MEAS_dD: /* OK */ 555 value = 0.01*measure[i].dD; 556 break; 557 case MEAS_FWHM: /* OK */ 558 value = 0.01*measure[i].FWx; 559 break; 560 case MEAS_DOPHOT: /* OK */ 561 value = measure[i].dophot; 562 break; 563 case MEAS_FLAGS: /* ? */ 564 value = measure[i].flags; 565 break; 566 case MEAS_XCCD: /* OK */ 567 ra = average[0].R - measure[i].dR / 360000.0; 568 dec = average[0].D - measure[i].dD / 360000.0; 569 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source); 570 if (m == -1) break; 571 if (!FindMosaicForImage (image, Nimage, m)) break; 572 RD_to_XY (&x, &y, ra, dec, &image[m].coords); 573 value = x; 574 break; 575 case MEAS_YCCD: /* OK */ 576 ra = average[0].R - measure[i].dR / 360000.0; 577 dec = average[0].D - measure[i].dD / 360000.0; 578 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source); 579 if (m == -1) break; 580 if (!FindMosaicForImage (image, Nimage, m)) break; 581 RD_to_XY (&x, &y, ra, dec, &image[m].coords); 582 value = y; 583 break; 584 case MEAS_XMOSAIC: /* OK */ 585 ra = average[0].R - measure[i].dR / 360000.0; 586 dec = average[0].D - measure[i].dD / 360000.0; 587 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source); 588 if (m == -1) break; 589 /* this should use the mosaic assoicated with the image */ 590 /* the solution here depends on image.coords having crref1,2 set to match the boresite center */ 591 /* XXX set the mosaic.coords to have a unity WRP transformation in which x,y = ra,dec */ 592 mosaic.crval1 = image[m].coords.crval1; 593 mosaic.crval2 = image[m].coords.crval2; 594 RD_to_XY (&x, &y, ra, dec, &mosaic); 595 value = x; 596 break; 597 case MEAS_YMOSAIC: /* OK */ 598 ra = average[0].R - measure[i].dR / 360000.0; 599 dec = average[0].D - measure[i].dD / 360000.0; 600 m = match_image_subset (image, subset, Nsubset, measure[i].t, measure[i].source); 601 if (m == -1) break; 602 /* same comments as above */ 603 mosaic.crval1 = image[m].coords.crval1; 604 mosaic.crval2 = image[m].coords.crval2; 605 RD_to_XY (&x, &y, ra, dec, &mosaic); 606 value = y; 607 break; 573 608 } 574 609 list[Nlist] = value; … … 582 617 double ExtractAverages (PhotCode *code, int mode, Average *average, SecFilt *secfilt, Measure *measure, int param) { 583 618 584 int i, k, Nm , Type;585 double fwhm, value, dM;619 int i, k, Nm; 620 double value; 586 621 587 622 value = NO_MAG; … … 589 624 /* need valid code if param is: */ 590 625 switch (param) { 591 case AVE_MAG:592 case AVE_dMAG:593 case AVE_Xm:594 case AVE_TYPE:595 case AVE_NCODE:596 case AVE_NPHOT:597 if (code == NULL) return (NO_MAG);598 break;599 default:600 break;626 case AVE_MAG: 627 case AVE_dMAG: 628 case AVE_Xm: 629 case AVE_TYPE: 630 case AVE_NCODE: 631 case AVE_NPHOT: 632 if (code == NULL) return (NO_MAG); 633 break; 634 default: 635 break; 601 636 } 602 637 … … 604 639 if (!TestAverage (code, average, secfilt, measure)) return (NO_MAG); 605 640 606 /* for ErrSelect, check average errors */607 if (ErrSelect) {608 dM = iPhotdM (code, average, secfilt);609 if (dM > ErrValue) return (NO_MAG);610 }611 612 /* for TypeSelect, check on TypeCode for this object */613 if (TypeSelect) {614 Type = DetermineTypeCode (average, measure, code[0].code);615 if (Type != TypeValue) return (NO_MAG);616 }617 618 641 /* assign vector values */ 619 642 switch (param) { 620 case AVE_RA: 621 value = average[0].R; 622 break; 623 case AVE_DEC: 624 value = average[0].D; 625 break; 626 case AVE_NMEAS: 627 value = average[0].Nm; 628 break; 629 case AVE_NMISS: 630 value = average[0].Nn; 631 break; 632 case AVE_Xp: 633 value = 0.01*average[0].Xp; 634 break; 635 case AVE_FLAG: 636 value = average[0].code; 637 break; 638 case AVE_MAG: 639 switch (mode) { 640 case MAG_AVE: 641 value = PhotAve (code, average, secfilt); 642 break; 643 case MAG_REF: 644 value = PhotRef (code, average, secfilt, measure); 645 break; 646 } 647 break; 648 case AVE_dMAG: 649 value = PhotdM (code, average, secfilt); 650 break; 651 case AVE_Xm: 652 value = PhotXm (code, average, secfilt); 653 break; 654 case AVE_TYPE: 655 value = DetermineTypeCode (average, measure, code[0].code); 656 break; 657 case AVE_NCODE: 658 value = 0; 659 for (i = 0; i < average[0].Nm; i++) { 660 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 661 value ++; 662 } 663 break; 664 case AVE_NPHOT: 665 value = 0; 666 for (i = 0; i < average[0].Nm; i++) { 667 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 668 if (measure[i].flags & (ID_MEAS_POOR | ID_MEAS_SKIP)) continue; 669 value ++; 670 } 671 break; 672 case AVE_NCRIT: 673 value = 0; 674 for (i = 0; i < average[0].Nm; i++) { 675 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 676 if (ErrSelect && (measure[i].dM > ErrValue)) continue; 677 if (FlagSelect && (measure[i].flags != FlagValue)) continue; 678 if (TypeSelect && (TypeValue != GetMeasureTypeCode (&measure[i]))) continue; 679 if (iMagSelect && (PhotInst (&measure[i]) < iMagMin)) continue; 680 value ++; 681 } 682 break; 643 case AVE_RA: 644 value = average[0].R; 645 break; 646 case AVE_DEC: 647 value = average[0].D; 648 break; 649 case AVE_NMEAS: 650 value = average[0].Nm; 651 break; 652 case AVE_NMISS: 653 value = average[0].Nn; 654 break; 655 case AVE_Xp: 656 value = 0.01*average[0].Xp; 657 break; 658 case AVE_FLAG: 659 value = average[0].code; 660 break; 661 case AVE_MAG: 662 switch (mode) { 663 case MAG_AVE: 664 value = PhotAve (code, average, secfilt); 665 break; 666 case MAG_REF: 667 value = PhotRef (code, average, secfilt, measure); 668 break; 669 } 670 break; 671 case AVE_dMAG: 672 value = PhotdM (code, average, secfilt); 673 break; 674 case AVE_Xm: 675 value = PhotXm (code, average, secfilt); 676 break; 677 case AVE_TYPE: 678 value = DetermineTypeCode (average, measure, code[0].code); 679 break; 680 case AVE_TYPEFRAC: 681 value = DetermineTypefrac (average, measure, code); 682 break; 683 case AVE_NCODE: 684 value = 0; 685 for (i = 0; i < average[0].Nm; i++) { 686 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 687 value ++; 688 } 689 break; 690 case AVE_NPHOT: 691 value = 0; 692 for (i = 0; i < average[0].Nm; i++) { 693 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 694 if (measure[i].flags & (ID_MEAS_POOR | ID_MEAS_SKIP)) continue; 695 value ++; 696 } 697 break; 698 case AVE_NCRIT: 699 value = 0; 700 for (i = 0; i < average[0].Nm; i++) { 701 if (code[0].code != GetPhotcodeEquivCodebyCode (measure[i].source)) continue; 702 if (ErrSelect && (measure[i].dM > ErrValue)) continue; 703 if (FlagSelect && (measure[i].flags != FlagValue)) continue; 704 if (TypeSelect && (TypeValue != GetMeasureTypeCode (&measure[i]))) continue; 705 if (iMagSelect && (PhotInst (&measure[i]) < iMagMin)) continue; 706 value ++; 707 } 708 break; 683 709 } 684 710 return (value); 685 711 } 712 713 /* return fraction of measures (matching code) which have requested type */ 714 double DetermineTypefrac (Average *average, Measure *measure, PhotCode *code) { 715 716 double frac; 717 int k, Nc, Nt; 718 719 Nt = Nc = 0; 720 for (k = 0; k < average[0].Nm; k++) { 721 if ((code != NULL) && (code[0].code != GetPhotcodeEquivCodebyCode (measure[k].source))) continue; 722 Nc ++; 723 if (measure[k].dophot != TypefracType) continue; 724 Nt ++; 725 } 726 frac = (double) Nt / (double) Nc; 727 return (frac); 728 } 686 729 687 730 /* determine the representative dophot type for this photcode */ … … 704 747 int GetMeasureTypeCode (Measure *measure) { 705 748 switch (measure[0].dophot) { 706 case 0:707 case 1:708 case 2:709 return (0);710 break;711 case 3:712 case 4:713 case 5:714 case 7:715 case 9:716 return (1);717 break;718 case 10:719 default:720 return (2);749 case 0: 750 case 1: 751 case 2: 752 return (0); 753 break; 754 case 3: 755 case 4: 756 case 5: 757 case 7: 758 case 9: 759 return (1); 760 break; 761 case 10: 762 default: 763 return (2); 721 764 } 722 765 return (2); … … 744 787 int TestAverage (PhotCode *code, Average *average, SecFilt *secfilt, Measure *measure) { 745 788 746 int i, Nm ;747 double value, fwhm;789 int i, Nm, Type; 790 double fwhm, typefrac, dM, Xm; 748 791 749 792 /* exclusions based on average.params */ … … 751 794 /* some average.params need a valid photcode for reference */ 752 795 if (code == NULL) return (FALSE); 753 value = PhotXm (code, average, secfilt); 754 if (value == -1) return (FALSE); 755 if (value > ChiLimit) return (FALSE); 796 Xm = PhotXm (code, average, secfilt); 797 if (Xm == -1) return (FALSE); 798 if (Xm > ChiLimit) return (FALSE); 799 } 800 801 /* for ErrSelect, check average errors */ 802 if (ErrSelect) { 803 if (code == NULL) return (FALSE); /* need a valid code */ 804 dM = iPhotdM (code, average, secfilt); 805 if (dM > ErrValue) return (NO_MAG); 756 806 } 757 807 … … 762 812 fwhm = measure[i].FWx / 100.0; 763 813 switch (FWHMsign) { 764 case 0:765 if (fwhm == FWHMvalue) break;766 continue;767 case +1:768 if (fwhm >= FWHMvalue) break;769 continue;770 case -1:771 if (fwhm <= FWHMvalue) break;772 continue;814 case 0: 815 if (fwhm == FWHMvalue) break; 816 continue; 817 case +1: 818 if (fwhm >= FWHMvalue) break; 819 continue; 820 case -1: 821 if (fwhm <= FWHMvalue) break; 822 continue; 773 823 } 774 824 Nm++; … … 785 835 } 786 836 switch (NcodeSign) { 787 case 0:788 if (Nm == NcodeValue) break;789 return (FALSE);790 case 1:791 if (Nm >= NcodeValue) break;792 return (FALSE);793 case -1:794 if (Nm <= NcodeValue) break;795 return (FALSE);796 default:797 return (FALSE);837 case 0: 838 if (Nm == NcodeValue) break; 839 return (FALSE); 840 case 1: 841 if (Nm >= NcodeValue) break; 842 return (FALSE); 843 case -1: 844 if (Nm <= NcodeValue) break; 845 return (FALSE); 846 default: 847 return (FALSE); 798 848 } 799 849 } … … 808 858 } 809 859 switch (NphotSign) { 810 case 0: 811 if (Nm == NphotValue) break; 812 return (FALSE); 813 case 1: 814 if (Nm >= NphotValue) break; 815 return (FALSE); 816 case -1: 817 if (Nm <= NphotValue) break; 818 return (FALSE); 819 default: 820 return (FALSE); 821 } 822 } 860 case 0: 861 if (Nm == NphotValue) break; 862 return (FALSE); 863 case 1: 864 if (Nm >= NphotValue) break; 865 return (FALSE); 866 case -1: 867 if (Nm <= NphotValue) break; 868 return (FALSE); 869 default: 870 return (FALSE); 871 } 872 } 873 874 /* for TypeSelect, check on TypeCode for this object */ 875 if (TypeSelect) { 876 Type = DetermineTypeCode (average, measure, code[0].code); 877 if (Type != TypeValue) return (FALSE); 878 } 879 880 /* for TypeSelect, check on TypeCode for this object */ 881 if (TypefracSelect) { 882 typefrac = DetermineTypefrac (average, measure, code); 883 switch (TypefracSign) { 884 case 0: 885 if (typefrac == TypefracValue) break; 886 return (FALSE); 887 case +1: 888 if (typefrac >= TypefracValue) break; 889 return (FALSE); 890 case -1: 891 if (typefrac <= TypefracValue) break; 892 return (FALSE); 893 default: 894 return (FALSE); 895 } 896 } 897 823 898 return (TRUE); 824 899 } … … 1009 1084 value = 0; 1010 1085 switch (param) { 1011 case MEAS_MAG: /* magnitudes are already determined above */1012 value = use_first ? M1 : M2;1013 break;1014 case MEAS_RA: /* OK */1015 value = average[0].R - measure[n].dR / 360000.0;1016 break;1017 case MEAS_DEC: /* OK */1018 value = average[0].D - measure[n].dD / 360000.0;1019 break;1020 case MEAS_dMAG: /* OK */1021 value = 0.001*measure[n].dM;1022 break;1023 case MEAS_AIRMASS: /* OK */1024 value = 0.001*measure[n].airmass;1025 break;1026 case MEAS_EXPTIME: /* OK */1027 value = pow (10.0, measure[n].dt * 0.0004);1028 break;1029 case MEAS_PHOTCODE: /* OK */1030 value = measure[n].source;1031 break;1032 case MEAS_TIME: /* OK */1033 value = TimeValue (measure[n].t, TimeReference, TimeFormat);1034 break;1035 case MEAS_dR: /* OK */1036 value = 0.01*measure[n].dR;1037 break;1038 case MEAS_dD: /* OK */1039 value = 0.01*measure[n].dD;1040 break;1041 case MEAS_FWHM: /* OK */1042 value = 0.01*measure[n].FWx;1043 break;1044 case MEAS_DOPHOT: /* OK */1045 value = measure[n].dophot;1046 break;1047 case MEAS_FLAGS: /* ? */1048 value = measure[n].flags;1049 break;1050 case MEAS_XCCD: /* OK */1051 ra = average[0].R - measure[n].dR / 360000.0;1052 dec = average[0].D - measure[n].dD / 360000.0;1053 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);1054 if (m == -1) break;1055 if (!FindMosaicForImage (image, Nimage, m)) break;1056 RD_to_XY (&x, &y, ra, dec, &image[m].coords);1057 value = x;1058 break;1059 case MEAS_YCCD: /* OK */1060 ra = average[0].R - measure[n].dR / 360000.0;1061 dec = average[0].D - measure[n].dD / 360000.0;1062 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);1063 if (m == -1) break;1064 if (!FindMosaicForImage (image, Nimage, m)) break;1065 RD_to_XY (&x, &y, ra, dec, &image[m].coords);1066 value = y;1067 break;1068 case MEAS_XMOSAIC: /* OK */1069 ra = average[0].R - measure[n].dR / 360000.0;1070 dec = average[0].D - measure[n].dD / 360000.0;1071 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);1072 if (m == -1) break;1073 mosaic.crval1 = image[m].coords.crval1;1074 mosaic.crval2 = image[m].coords.crval2;1075 RD_to_XY (&x, &y, ra, dec, &mosaic);1076 value = x;1077 break;1078 case MEAS_YMOSAIC: /* OK */1079 ra = average[0].R - measure[n].dR / 360000.0;1080 dec = average[0].D - measure[n].dD / 360000.0;1081 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source);1082 if (m == -1) break;1083 mosaic.crval1 = image[m].coords.crval1;1084 mosaic.crval2 = image[m].coords.crval2;1085 RD_to_XY (&x, &y, ra, dec, &mosaic);1086 value = y;1087 break;1086 case MEAS_MAG: /* magnitudes are already determined above */ 1087 value = use_first ? M1 : M2; 1088 break; 1089 case MEAS_RA: /* OK */ 1090 value = average[0].R - measure[n].dR / 360000.0; 1091 break; 1092 case MEAS_DEC: /* OK */ 1093 value = average[0].D - measure[n].dD / 360000.0; 1094 break; 1095 case MEAS_dMAG: /* OK */ 1096 value = 0.001*measure[n].dM; 1097 break; 1098 case MEAS_AIRMASS: /* OK */ 1099 value = 0.001*measure[n].airmass; 1100 break; 1101 case MEAS_EXPTIME: /* OK */ 1102 value = pow (10.0, measure[n].dt * 0.0004); 1103 break; 1104 case MEAS_PHOTCODE: /* OK */ 1105 value = measure[n].source; 1106 break; 1107 case MEAS_TIME: /* OK */ 1108 value = TimeValue (measure[n].t, TimeReference, TimeFormat); 1109 break; 1110 case MEAS_dR: /* OK */ 1111 value = 0.01*measure[n].dR; 1112 break; 1113 case MEAS_dD: /* OK */ 1114 value = 0.01*measure[n].dD; 1115 break; 1116 case MEAS_FWHM: /* OK */ 1117 value = 0.01*measure[n].FWx; 1118 break; 1119 case MEAS_DOPHOT: /* OK */ 1120 value = measure[n].dophot; 1121 break; 1122 case MEAS_FLAGS: /* ? */ 1123 value = measure[n].flags; 1124 break; 1125 case MEAS_XCCD: /* OK */ 1126 ra = average[0].R - measure[n].dR / 360000.0; 1127 dec = average[0].D - measure[n].dD / 360000.0; 1128 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source); 1129 if (m == -1) break; 1130 if (!FindMosaicForImage (image, Nimage, m)) break; 1131 RD_to_XY (&x, &y, ra, dec, &image[m].coords); 1132 value = x; 1133 break; 1134 case MEAS_YCCD: /* OK */ 1135 ra = average[0].R - measure[n].dR / 360000.0; 1136 dec = average[0].D - measure[n].dD / 360000.0; 1137 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source); 1138 if (m == -1) break; 1139 if (!FindMosaicForImage (image, Nimage, m)) break; 1140 RD_to_XY (&x, &y, ra, dec, &image[m].coords); 1141 value = y; 1142 break; 1143 case MEAS_XMOSAIC: /* OK */ 1144 ra = average[0].R - measure[n].dR / 360000.0; 1145 dec = average[0].D - measure[n].dD / 360000.0; 1146 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source); 1147 if (m == -1) break; 1148 mosaic.crval1 = image[m].coords.crval1; 1149 mosaic.crval2 = image[m].coords.crval2; 1150 RD_to_XY (&x, &y, ra, dec, &mosaic); 1151 value = x; 1152 break; 1153 case MEAS_YMOSAIC: /* OK */ 1154 ra = average[0].R - measure[n].dR / 360000.0; 1155 dec = average[0].D - measure[n].dD / 360000.0; 1156 m = match_image_subset (image, subset, Nsubset, measure[n].t, measure[n].source); 1157 if (m == -1) break; 1158 mosaic.crval1 = image[m].coords.crval1; 1159 mosaic.crval2 = image[m].coords.crval2; 1160 RD_to_XY (&x, &y, ra, dec, &mosaic); 1161 value = y; 1162 break; 1088 1163 } 1089 1164 list[Nlist] = value; -
trunk/Ohana/src/opihi/include/dvo1.h
r3517 r4420 19 19 /* average params */ 20 20 enum {AVE_ZERO, AVE_RA, AVE_DEC, AVE_MAG, AVE_REF, AVE_dMAG, AVE_Xm, AVE_Xp, AVE_NMEAS, 21 AVE_NMISS, AVE_TYPE, AVE_NPHOT, AVE_NCODE, AVE_NCRIT, AVE_FLAG };21 AVE_NMISS, AVE_TYPE, AVE_NPHOT, AVE_NCODE, AVE_NCRIT, AVE_FLAG, AVE_TYPEFRAC}; 22 22 23 23 typedef struct { … … 60 60 double *ExtractMeasuresDMag PROTO((PhotCode **code, int *mode, Average *average, SecFilt *secfilt, Measure *measure, int *nlist)); 61 61 double *ExtractMeasuresByDMag PROTO((PhotCode **code, int *mode, int use_first, Average *average, SecFilt *secfilt, Measure *measure, int *nlist, int param)); 62 double DetermineTypefrac PROTO((Average *average, Measure *measure, PhotCode *code)); 63 void GetAverageParamHelp PROTO(()); 64 62 65 63 66 # endif
Note:
See TracChangeset
for help on using the changeset viewer.
