Changeset 12665 for trunk/psphot/src/psphotRadialPlot.c
- Timestamp:
- Mar 28, 2007, 5:20:02 PM (19 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotRadialPlot.c (modified) (2 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotRadialPlot.c
r12627 r12665 6 6 # include <kapa.h> 7 7 8 bool psphotRadialPlot (const char *filename, pmSource *source) { 8 static int nCount = 0; 9 10 bool psphotRadialPlot (int *kapa, char *filename, pmSource *source) { 11 12 Graphdata graphdata; 13 14 // only plot 50 stars for now... 15 if (nCount > 00) { 16 if (*kapa != 0) { 17 KiiClose (*kapa); 18 *kapa = 0; 19 } 20 return true; 21 } 9 22 10 23 // XXX get the 'showWindow' option from the recipes somewhere 11 int kapa = pmKapaOpen (false); 12 if (kapa == -1) { 24 // XXX 'showWindow = false' is broken 25 if (*kapa == 0) { 26 *kapa = pmKapaOpen (true); 27 KapaResize (*kapa, 500, 500); 28 unlink (filename); 29 } 30 if (*kapa == -1) { 13 31 psError(PSPHOT_ERR_UNKNOWN, true, "failure to open kapa"); 14 32 return false; 15 33 } 16 34 17 KapaResize (kapa, 500, 500);18 35 KapaInitGraph (&graphdata); 36 KapaClear(*kapa, true); 19 37 20 38 // examine sources to set data range 21 graphdata.xmin = -0.05; 39 graphdata.xmin = -0.05; 40 graphdata.xmax = +30.05; 22 41 graphdata.ymin = -0.05; 23 graphdata.xmax = +2.05; 24 graphdata.ymax = +2.05; 25 KapaSetLimits (kapa, &graphdata); 42 graphdata.ymax = +5.05; 43 KapaSetLimits (*kapa, &graphdata); 26 44 27 KapaSetFont ( kapa, "helvetica", 14);28 KapaBox ( kapa, &graphdata);29 KapaSendLabel ( kapa, "&ss&h_x|(pixels)", KAPA_LABEL_XM);30 KapaSendLabel ( kapa, "&ss&h_y| (pixels)", KAPA_LABEL_YM);45 KapaSetFont (*kapa, "helvetica", 14); 46 KapaBox (*kapa, &graphdata); 47 KapaSendLabel (*kapa, "radius (pixels)", KAPA_LABEL_XM); 48 KapaSendLabel (*kapa, "log flux (counts)", KAPA_LABEL_YM); 31 49 32 50 int nPts = source->pixels->numRows * source->pixels->numCols; 33 psVector *r adius= psVectorAllocEmpty (nPts, PS_TYPE_F32);34 psVector * lflux= psVectorAllocEmpty (nPts, PS_TYPE_F32);35 psVector *r mask= psVectorAllocEmpty (nPts, PS_TYPE_F32);36 psVector * lfmask= psVectorAllocEmpty (nPts, PS_TYPE_F32);51 psVector *rg = psVectorAllocEmpty (nPts, PS_TYPE_F32); 52 psVector *fg = psVectorAllocEmpty (nPts, PS_TYPE_F32); 53 psVector *rb = psVectorAllocEmpty (nPts, PS_TYPE_F32); 54 psVector *fb = psVectorAllocEmpty (nPts, PS_TYPE_F32); 37 55 38 int n = 0; 39 int nm = 0; 56 int ng = 0; 57 int nb = 0; 58 float Xo = source->modelPSF->params->data.F32[PM_PAR_XPOS] - source->pixels->col0; 59 float Yo = source->modelPSF->params->data.F32[PM_PAR_YPOS] - source->pixels->row0; 40 60 for (int iy = 0; iy < source->pixels->numRows; iy++) { 41 61 for (int ix = 0; ix < source->pixels->numCols; ix++) { 42 43 62 if (source->mask->data.U8[iy][ix]) { 44 r mask->data.F32[nm] = RADIUS;45 lfmask->data.F32[nm] = log10(source->pixels->data.F32[iy][ix]);46 n m++;63 rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ; 64 fb->data.F32[nb] = log10(source->pixels->data.F32[iy][ix]); 65 nb++; 47 66 } else { 48 r adius->data.F32[n] = RADIUS;49 lflux->data.F32[n] = log10(source->pixels->data.F32[iy][ix]);50 n ++;67 rg->data.F32[ng] = hypot (ix - Xo, iy - Yo) ; 68 fg->data.F32[ng] = log10(source->pixels->data.F32[iy][ix]); 69 ng++; 51 70 } 52 71 } … … 56 75 57 76 graphdata.color = KapaColorByName ("black"); 77 graphdata.ptype = 2; 78 graphdata.size = 0.5; 79 graphdata.style = 2; 80 KapaPrepPlot (*kapa, ng, &graphdata); 81 KapaPlotVector (*kapa, ng, rg->data.F32); 82 KapaPlotVector (*kapa, ng, fg->data.F32); 83 84 graphdata.color = KapaColorByName ("red"); 58 85 graphdata.ptype = 0; 59 86 graphdata.size = 0.3; 60 87 graphdata.style = 2; 61 KapaPrepPlot ( kapa, nm, &graphdata);62 KapaPlotVector ( kapa, nm, rmask->data.F32);63 KapaPlotVector ( kapa, nm, lfmask->data.F32);88 KapaPrepPlot (*kapa, nb, &graphdata); 89 KapaPlotVector (*kapa, nb, rb->data.F32); 90 KapaPlotVector (*kapa, nb, fb->data.F32); 64 91 65 graphdata.color = KapaColorByName ("red"); 66 graphdata.ptype = 2; 67 graphdata.size = 0.5; 68 graphdata.style = 2; 69 KapaPrepPlot (kapa, n, &graphdata); 70 KapaPlotVector (kapa, n, radius->data.F32); 71 KapaPlotVector (kapa, n, lflux->data.F32); 92 psLogMsg ("psphot", 3, "saving plot to %s", filename); 72 93 73 psLogMsg ("psphot", 3, "saving plot to %s", file->filename); 74 KapaPS (kapa, false, KAPA_PS_NEWPAGE, filename, "none"); 94 char pagename[16]; 95 sprintf (pagename, "%02d", nCount); 96 if (nCount == 0) { 97 KiiPS (*kapa, false, KAPA_PS_NEWPLOT, filename, pagename); 98 } else { 99 KiiPS (*kapa, false, KAPA_PS_NEWPAGE, filename, pagename); 100 } 75 101 76 psFree (r adius);77 psFree ( lflux);78 psFree (r mask);79 psFree ( lfmask);102 psFree (rg); 103 psFree (fg); 104 psFree (rb); 105 psFree (fb); 80 106 107 nCount ++; 108 return true; 81 109 } 110 111 # else 112 113 bool psphotRadialPlot (int *kapa, const char *filename, pmSource *source) { 114 psLogMsg ("psphot", 3, "skipping source radial plots"); 115 return true; 116 } 117 118 # endif
Note:
See TracChangeset
for help on using the changeset viewer.
