IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Mar 28, 2007, 5:20:02 PM (19 years ago)
Author:
eugene
Message:

adding source plots

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotRadialPlot.c

    r12627 r12665  
    66# include <kapa.h>
    77
    8 bool psphotRadialPlot (const char *filename, pmSource *source) {
     8static int nCount = 0;
     9
     10bool 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    }
    922
    1023    // 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) {
    1331        psError(PSPHOT_ERR_UNKNOWN, true, "failure to open kapa");
    1432        return false;
    1533    }
    1634
    17     KapaResize (kapa, 500, 500);
    1835    KapaInitGraph (&graphdata);
     36    KapaClear(*kapa, true);
    1937
    2038    // examine sources to set data range
    21     graphdata.xmin = -0.05;
     39    graphdata.xmin =  -0.05;
     40    graphdata.xmax = +30.05;
    2241    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);
    2644 
    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);
    3149               
    3250    int nPts = source->pixels->numRows * source->pixels->numCols;
    33     psVector *radius = psVectorAllocEmpty (nPts, PS_TYPE_F32);
    34     psVector *lflux = psVectorAllocEmpty (nPts, PS_TYPE_F32);
    35     psVector *rmask = 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);
    3755
    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;
    4060    for (int iy = 0; iy < source->pixels->numRows; iy++) {
    4161        for (int ix = 0; ix < source->pixels->numCols; ix++) {
    42            
    4362            if (source->mask->data.U8[iy][ix]) {
    44                 rmask->data.F32[nm] = RADIUS;
    45                 lfmask->data.F32[nm] = log10(source->pixels->data.F32[iy][ix]);
    46                 nm++;
     63                rb->data.F32[nb] = hypot (ix - Xo, iy - Yo) ;
     64                fb->data.F32[nb] = log10(source->pixels->data.F32[iy][ix]);
     65                nb++;
    4766            } else {
    48                 radius->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++;
    5170            }
    5271        }
     
    5675
    5776    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");
    5885    graphdata.ptype = 0;
    5986    graphdata.size = 0.3;
    6087    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);
    6491 
    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);
    7293
    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    }
    75101
    76     psFree (radius);
    77     psFree (lflux);
    78     psFree (rmask);
    79     psFree (lfmask);
     102    psFree (rg);
     103    psFree (fg);
     104    psFree (rb);
     105    psFree (fb);
    80106
     107    nCount ++;
     108    return true;
    81109}
     110
     111# else
     112
     113bool 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.