Changeset 27532 for trunk/psphot/src/psphotVisual.c
- Timestamp:
- Mar 30, 2010, 1:33:47 PM (16 years ago)
- File:
-
- 1 edited
-
trunk/psphot/src/psphotVisual.c (modified) (15 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psphot/src/psphotVisual.c
r26894 r27532 1099 1099 psFree (outsat); 1100 1100 return true; 1101 } 1102 1103 static void plotline (int myKapa, Graphdata *graphdata, float x0, float y0, float x1, float y1) 1104 { 1105 float x[2], y[2]; 1106 x[0] = x0; 1107 x[1] = x1; 1108 y[0] = y0; 1109 y[1] = y1; 1110 KapaPrepPlot (myKapa, 2, graphdata); 1111 KapaPlotVector (myKapa, 2, x, "x"); 1112 KapaPlotVector (myKapa, 2, y, "y"); 1101 1113 } 1102 1114 … … 1138 1150 } 1139 1151 1152 // generate model profiles (major and minor axis): 1153 // create a model with theta = 0.0 so major and minor axes are equiv to x and y: 1154 psEllipseShape rawShape, rotShape; 1155 1156 rawShape.sx = source->modelPSF->params->data.F32[PM_PAR_SXX] / M_SQRT2; 1157 rawShape.sy = source->modelPSF->params->data.F32[PM_PAR_SYY] / M_SQRT2; 1158 rawShape.sxy = source->modelPSF->params->data.F32[PM_PAR_SXY]; 1159 1160 psEllipseAxes axes = psEllipseShapeToAxes (rawShape, 20.0); 1161 1162 axes.theta = 0.0; 1163 1164 rotShape = psEllipseAxesToShape (axes); 1165 1166 psVector *params = psVectorAlloc(source->modelPSF->params->n, PS_TYPE_F32); 1167 for (int i = 0; i < source->modelPSF->params->n; i++) { 1168 params->data.F32[i] = source->modelPSF->params->data.F32[i]; 1169 } 1170 params->data.F32[PM_PAR_SXX] = rotShape.sx * M_SQRT2; 1171 params->data.F32[PM_PAR_SYY] = rotShape.sy * M_SQRT2; 1172 params->data.F32[PM_PAR_SXY] = rotShape.sxy; 1173 params->data.F32[PM_PAR_XPOS] = 0.0; 1174 params->data.F32[PM_PAR_YPOS] = 0.0; 1175 1176 psVector *rmod = psVectorAlloc(300, PS_TYPE_F32); 1177 psVector *fmaj = psVectorAlloc(300, PS_TYPE_F32); 1178 psVector *fmin = psVectorAlloc(300, PS_TYPE_F32); 1179 1180 psVector *coord = psVectorAlloc(2, PS_TYPE_F32); 1181 1182 float r = 0.0; 1183 for (int i = 0; i < rmod->n; i++) { 1184 r = i*0.1; 1185 rmod->data.F32[i] = r; 1186 1187 coord->data.F32[1] = r; 1188 coord->data.F32[0] = 0.0; 1189 fmaj->data.F32[i] = log10(source->modelPSF->modelFunc (NULL, params, coord)); 1190 1191 coord->data.F32[0] = r; 1192 coord->data.F32[1] = 0.0; 1193 fmin->data.F32[i] = log10(source->modelPSF->modelFunc (NULL, params, coord)); 1194 } 1195 psFree (coord); 1196 psFree (params); 1197 1198 float FWHM_MAJOR = 2.0*source->modelPSF->modelRadius (source->modelPSF->params, 0.5*source->modelPSF->params->data.F32[PM_PAR_I0]); 1199 float FWHM_MINOR = FWHM_MAJOR * (axes.minor / axes.major); 1200 if (FWHM_MAJOR < FWHM_MINOR) PS_SWAP (FWHM_MAJOR, FWHM_MINOR); 1201 1202 psEllipseMoments emoments; 1203 emoments.x2 = source->moments->Mxx; 1204 emoments.xy = source->moments->Mxy; 1205 emoments.y2 = source->moments->Myy; 1206 axes = psEllipseMomentsToAxes (emoments, 20.0); 1207 float MOMENTS_MAJOR = 2.355*axes.major; 1208 float MOMENTS_MINOR = 2.355*axes.minor; 1209 1210 float logHM = log10(0.5*source->modelPSF->params->data.F32[PM_PAR_I0]); 1211 1140 1212 // reset source Add/Sub state to recorded 1141 1213 if (subtracted) pmSourceSub (source, PM_MODEL_OP_FULL, maskVal); … … 1174 1246 KapaPlotVector (myKapa, nb, fb->data.F32, "y"); 1175 1247 1248 graphdata.color = KapaColorByName ("blue"); 1249 graphdata.ptype = 0; 1250 graphdata.size = 0.0; 1251 graphdata.style = 0; 1252 KapaPrepPlot (myKapa, rmod->n, &graphdata); 1253 KapaPlotVector (myKapa, rmod->n, rmod->data.F32, "x"); 1254 KapaPlotVector (myKapa, rmod->n, fmin->data.F32, "y"); 1255 plotline (myKapa, &graphdata, 0.0, logHM, 30.0, logHM); 1256 plotline (myKapa, &graphdata, 0.5*FWHM_MINOR, 0.0, 0.5*FWHM_MINOR, 5.0); 1257 graphdata.ltype = 1; 1258 plotline (myKapa, &graphdata, 0.5*MOMENTS_MINOR, 0.0, 0.5*MOMENTS_MINOR, 5.0); 1259 graphdata.ltype = 0; 1260 1261 graphdata.color = KapaColorByName ("green"); 1262 graphdata.ptype = 0; 1263 graphdata.size = 0.0; 1264 graphdata.style = 0; 1265 KapaPrepPlot (myKapa, rmod->n, &graphdata); 1266 KapaPlotVector (myKapa, rmod->n, rmod->data.F32, "x"); 1267 KapaPlotVector (myKapa, rmod->n, fmaj->data.F32, "y"); 1268 plotline (myKapa, &graphdata, 0.5*FWHM_MAJOR, 0.0, 0.5*FWHM_MAJOR, 5.0); 1269 graphdata.ltype = 1; 1270 plotline (myKapa, &graphdata, 0.5*MOMENTS_MAJOR, 0.0, 0.5*MOMENTS_MAJOR, 5.0); 1271 graphdata.ltype = 0; 1272 1273 for (int i = 0; i < rmod->n; i++) { 1274 rmod->data.F32[i] = log10(rmod->data.F32[i]); 1275 } 1276 1176 1277 // ** loglog ** 1177 1278 KapaSelectSection (myKapa, "loglog"); … … 1182 1283 graphdata.ymin = -0.05; 1183 1284 graphdata.ymax = +5.05; 1285 graphdata.color = KapaColorByName ("black"); 1184 1286 KapaSetLimits (myKapa, &graphdata); 1185 1287 … … 1204 1306 KapaPlotVector (myKapa, nb, Rb->data.F32, "x"); 1205 1307 KapaPlotVector (myKapa, nb, fb->data.F32, "y"); 1308 1309 graphdata.color = KapaColorByName ("blue"); 1310 graphdata.ptype = 0; 1311 graphdata.size = 0.0; 1312 graphdata.style = 0; 1313 KapaPrepPlot (myKapa, rmod->n, &graphdata); 1314 KapaPlotVector (myKapa, rmod->n, rmod->data.F32, "x"); 1315 KapaPlotVector (myKapa, rmod->n, fmin->data.F32, "y"); 1316 1317 graphdata.color = KapaColorByName ("green"); 1318 graphdata.ptype = 0; 1319 graphdata.size = 0.0; 1320 graphdata.style = 0; 1321 KapaPrepPlot (myKapa, rmod->n, &graphdata); 1322 KapaPlotVector (myKapa, rmod->n, rmod->data.F32, "x"); 1323 KapaPlotVector (myKapa, rmod->n, fmaj->data.F32, "y"); 1324 1325 psFree (rmod); 1326 psFree (fmin); 1327 psFree (fmaj); 1206 1328 1207 1329 psFree (rg); … … 1392 1514 if (source == NULL) continue; 1393 1515 1394 // if (source->type != type) continue;1395 1516 if (mode) { 1396 1517 if (keep) { … … 1516 1637 psVector *sDEF = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1517 1638 1639 psVector *xLOW = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1640 psVector *yLOW = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1641 psVector *mLOW = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1642 psVector *sLOW = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1643 1518 1644 psVector *xCR = psVectorAllocEmpty (sources->n, PS_TYPE_F32); 1519 1645 psVector *yCR = psVectorAllocEmpty (sources->n, PS_TYPE_F32); … … 1526 1652 int nPSF = 0; 1527 1653 int nDEF = 0; 1654 int nLOW = 0; 1528 1655 int nCR = 0; 1529 1656 for (int i = 0; i < sources->n; i++) { 1530 1657 pmSource *source = sources->data[i]; 1531 1658 if (source->moments == NULL) continue; 1659 1660 // only plot the measured sources... 1661 if (!(source->tmpFlags & PM_SOURCE_TMPF_SIZE_MEASURED)) continue; 1532 1662 1533 1663 if (source->mode & PM_SOURCE_MODE_CR_LIMIT) { … … 1561 1691 continue; 1562 1692 } 1563 if ((source->mode & PM_SOURCE_MODE_CR_LIMIT) || (source->mode & PM_SOURCE_MODE_SATSTAR)) { 1693 if (source->errMag > 0.1) { 1694 xLOW->data.F32[nLOW] = source->moments->Mxx; 1695 yLOW->data.F32[nLOW] = source->moments->Myy; 1696 mLOW->data.F32[nLOW] = -2.5*log10(source->moments->Sum); 1697 sLOW->data.F32[nLOW] = source->extNsigma; 1698 nLOW++; 1564 1699 continue; 1565 1700 } … … 1570 1705 nPSF++; 1571 1706 } 1707 1572 1708 xSAT->n = nSAT; 1573 1709 ySAT->n = nSAT; … … 1594 1730 mDEF->n = nDEF; 1595 1731 sDEF->n = nDEF; 1732 1733 xLOW->n = nLOW; 1734 yLOW->n = nLOW; 1735 mLOW->n = nLOW; 1736 sLOW->n = nLOW; 1596 1737 1597 1738 // four sections: MxxMyy, MagMxx, MagMyy, MagSigma … … 1657 1798 KapaPlotVector (myKapa, nSAT, ySAT->data.F32, "y"); 1658 1799 1800 graphdata.color = KapaColorByName ("black"); 1801 graphdata.ptype = 7; 1802 graphdata.size = 1.0; 1803 graphdata.style = 2; 1804 KapaPrepPlot (myKapa, nLOW, &graphdata); 1805 KapaPlotVector (myKapa, nLOW, xLOW->data.F32, "x"); 1806 KapaPlotVector (myKapa, nLOW, yLOW->data.F32, "y"); 1807 1659 1808 // second section: MagMyy 1660 1809 section.dx = 0.75; … … 1668 1817 graphdata.color = KapaColorByName ("black"); 1669 1818 graphdata.xmin = -17.1; 1670 graphdata.xmax = - 7.9;1819 graphdata.xmax = -6.9; 1671 1820 graphdata.ymin = Ymin; 1672 1821 graphdata.ymax = Ymax; … … 1730 1879 graphdata.xmin = Xmin; 1731 1880 graphdata.xmax = Xmax; 1732 graphdata.ymin = - 7.9;1881 graphdata.ymin = -6.9; 1733 1882 graphdata.ymax = -17.1; 1734 1883 KapaSetLimits (myKapa, &graphdata); … … 1789 1938 1790 1939 graphdata.color = KapaColorByName ("black"); 1791 graphdata.xmax = - 7.9;1940 graphdata.xmax = -6.9; 1792 1941 graphdata.xmin = -17.1; 1793 1942 graphdata.ymin = -20.1;
Note:
See TracChangeset
for help on using the changeset viewer.
