Changeset 24590
- Timestamp:
- Jun 25, 2009, 3:53:34 PM (17 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotVisual.c (modified) (6 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotVisual.c
r23259 r24590 471 471 bool status; 472 472 Graphdata graphdata; 473 474 if (!pmVisualIsVisual()) return true; 473 KapaSection section; 474 475 // if (!pmVisualIsVisual()) return true; 475 476 476 477 if (kapa3 == -1) { … … 485 486 KapaClearPlots (kapa3); 486 487 KapaInitGraph (&graphdata); 487 488 // there are N regions: use the first (guaranteed to exist) to get the overall limits 489 psMetadata *regionMD = psMetadataLookupPtr (&status, recipe, "PSF.CLUMP.REGION.000"); 490 491 float psfX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X"); 492 float psfY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y"); 493 494 // examine sources to set data range 495 graphdata.xmin = -0.05; 496 graphdata.ymin = -0.05; 497 graphdata.xmax = 2.0*psfX; 498 graphdata.ymax = 2.0*psfY; 499 KapaSetLimits (kapa3, &graphdata); 500 501 KapaSetFont (kapa3, "helvetica", 14); 502 KapaBox (kapa3, &graphdata); 503 KapaSendLabel (kapa3, "&ss&h_x| (pixels)", KAPA_LABEL_XM); 504 KapaSendLabel (kapa3, "&ss&h_y| (pixels)", KAPA_LABEL_YM); 505 488 KapaSetFont (kapa3, "courier", 14); 489 490 float SN_LIM = psMetadataLookupF32(&status, recipe, "PSF_SN_LIM"); 491 492 // select the max psfX,Y values for the plot limits 493 float Xmin = 0.0, Xmax = 0.0; 494 float Ymin = 0.0, Ymax = 0.0; 495 { 496 int nRegions = psMetadataLookupS32 (&status, recipe, "PSF.CLUMP.NREGIONS"); 497 for (int n = 0; n < nRegions; n++) { 498 499 char regionName[64]; 500 snprintf (regionName, 64, "PSF.CLUMP.REGION.%03d", n); 501 psMetadata *regionMD = psMetadataLookupPtr (&status, recipe, regionName); 502 503 float psfX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.X"); 504 float psfY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.Y"); 505 float psfdX = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DX"); 506 float psfdY = psMetadataLookupF32 (&status, regionMD, "PSF.CLUMP.DY"); 507 508 float X0 = psfX - 4.0*psfdX; 509 float X1 = psfX + 4.0*psfdX; 510 float Y0 = psfY - 4.0*psfdY; 511 float Y1 = psfY + 4.0*psfdY; 512 513 if (isfinite(X0)) { Xmin = PS_MAX(Xmin, X0); } 514 if (isfinite(X1)) { Xmax = PS_MAX(Xmax, X1); } 515 if (isfinite(Y0)) { Ymin = PS_MAX(Ymin, Y0); } 516 if (isfinite(Y1)) { Ymax = PS_MAX(Ymax, Y1); } 517 } 518 } 519 520 // storage vectors for data to be plotted 506 521 psVector *xBright = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 507 522 psVector *yBright = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 523 psVector *mBright = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 508 524 psVector *xFaint = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 509 525 psVector *yFaint = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 526 psVector *mFaint = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 510 527 511 528 // construct the vectors … … 519 536 xFaint->data.F32[nF] = source->moments->Mxx; 520 537 yFaint->data.F32[nF] = source->moments->Myy; 538 mFaint->data.F32[nF] = -2.5*log10(source->moments->Sum); 521 539 nF++; 522 540 523 541 // XXX make this a user-defined cutoff 524 if (source->moments->SN < 50)542 if (source->moments->SN < SN_LIM) 525 543 continue; 526 544 527 545 xBright->data.F32[nB] = source->moments->Mxx; 528 546 yBright->data.F32[nB] = source->moments->Myy; 547 mBright->data.F32[nB] = -2.5*log10(source->moments->Sum); 529 548 nB++; 530 549 } 531 550 xFaint->n = nF; 532 551 yFaint->n = nF; 552 mFaint->n = nF; 533 553 534 554 xBright->n = nB; 535 555 yBright->n = nB; 556 mBright->n = nB; 557 558 // three sections: MxxMyy, MagMxx, MagMyy 559 560 // first section: MxxMyy 561 section.dx = 0.75; 562 section.dy = 0.75; 563 section.x = 0.00; 564 section.y = 0.00; 565 section.name = psStringCopy ("MxxMyy"); 566 KapaSetSection (kapa3, §ion); 567 psFree (section.name); 568 569 graphdata.color = KapaColorByName ("black"); 570 graphdata.xmin = Xmin; 571 graphdata.ymin = Ymin; 572 graphdata.xmax = Xmax; 573 graphdata.ymax = Ymax; 574 KapaSetLimits (kapa3, &graphdata); 575 576 KapaBox (kapa3, &graphdata); 577 KapaSendLabel (kapa3, "M_xx| (pixels)", KAPA_LABEL_XM); 578 KapaSendLabel (kapa3, "M_yy| (pixels)", KAPA_LABEL_YM); 536 579 537 580 graphdata.color = KapaColorByName ("black"); … … 551 594 KapaPlotVector (kapa3, nB, yBright->data.F32, "y"); 552 595 553 // XXX draw N circles to outline the clumps 596 // second section: MagMyy 597 section.dx = 0.75; 598 section.dy = 0.25; 599 section.x = 0.00; 600 section.y = 0.80; 601 section.name = psStringCopy ("MagMyy"); 602 KapaSetSection (kapa3, §ion); 603 psFree (section.name); 604 605 graphdata.color = KapaColorByName ("black"); 606 graphdata.xmin = -17.1; 607 graphdata.xmax = -7.9; 608 graphdata.ymin = Ymin; 609 graphdata.ymax = Ymax; 610 KapaSetLimits (kapa3, &graphdata); 611 612 strcpy (graphdata.labels, "0210"); 613 KapaBox (kapa3, &graphdata); 614 KapaSendLabel (kapa3, "inst mag", KAPA_LABEL_XP); 615 KapaSendLabel (kapa3, "M_yy| (pixels)", KAPA_LABEL_YM); 616 617 graphdata.color = KapaColorByName ("black"); 618 graphdata.ptype = 0; 619 graphdata.size = 0.3; 620 graphdata.style = 2; 621 KapaPrepPlot (kapa3, nF, &graphdata); 622 KapaPlotVector (kapa3, nF, mFaint->data.F32, "x"); 623 KapaPlotVector (kapa3, nF, yFaint->data.F32, "y"); 624 625 graphdata.color = KapaColorByName ("red"); 626 graphdata.ptype = 2; 627 graphdata.size = 0.5; 628 graphdata.style = 2; 629 KapaPrepPlot (kapa3, nB, &graphdata); 630 KapaPlotVector (kapa3, nB, mBright->data.F32, "x"); 631 KapaPlotVector (kapa3, nB, yBright->data.F32, "y"); 632 633 // third section: MagMxx 634 section.dx = 0.25; 635 section.dy = 0.75; 636 section.x = 0.80; 637 section.y = 0.00; 638 section.name = psStringCopy ("MagMxx"); 639 KapaSetSection (kapa3, §ion); 640 psFree (section.name); 641 642 graphdata.color = KapaColorByName ("black"); 643 graphdata.xmin = Xmin; 644 graphdata.xmax = Xmax; 645 graphdata.ymin = -7.9; 646 graphdata.ymax = -17.1; 647 KapaSetLimits (kapa3, &graphdata); 648 649 strcpy (graphdata.labels, "2001"); 650 KapaBox (kapa3, &graphdata); 651 KapaSendLabel (kapa3, "M_xx| (pixels)", KAPA_LABEL_XM); 652 KapaSendLabel (kapa3, "inst mag", KAPA_LABEL_YP); 653 654 graphdata.color = KapaColorByName ("black"); 655 graphdata.ptype = 0; 656 graphdata.size = 0.3; 657 graphdata.style = 2; 658 KapaPrepPlot (kapa3, nF, &graphdata); 659 KapaPlotVector (kapa3, nF, xFaint->data.F32, "x"); 660 KapaPlotVector (kapa3, nF, mFaint->data.F32, "y"); 661 662 graphdata.color = KapaColorByName ("red"); 663 graphdata.ptype = 2; 664 graphdata.size = 0.5; 665 graphdata.style = 2; 666 KapaPrepPlot (kapa3, nB, &graphdata); 667 KapaPlotVector (kapa3, nB, xBright->data.F32, "x"); 668 KapaPlotVector (kapa3, nB, mBright->data.F32, "y"); 669 670 // draw N circles to outline the clumps 554 671 { 672 KapaSelectSection (kapa3, "MxxMyy"); 673 555 674 // draw a circle centered on psfX,Y with size of the psf limit 556 675 psVector *xLimit = psVectorAlloc (120, PS_TYPE_F32); … … 562 681 graphdata.color = KapaColorByName ("blue"); 563 682 graphdata.style = 0; 683 684 graphdata.xmin = Xmin; 685 graphdata.ymin = Ymin; 686 graphdata.xmax = Xmax; 687 graphdata.ymax = Ymax; 688 KapaSetLimits (kapa3, &graphdata); 564 689 565 690 for (int n = 0; n < nRegions; n++) { … … 626 751 psFree (xBright); 627 752 psFree (yBright); 753 psFree (mBright); 628 754 psFree (xFaint); 629 755 psFree (yFaint); 756 psFree (mFaint); 630 757 631 758 // pause and wait for user input:
Note:
See TracChangeset
for help on using the changeset viewer.
