IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 12, 2009, 1:03:29 PM (17 years ago)
Author:
Paul Price
Message:

Adding more debugging output. Think I've solved the problem of the poor photometry: the background being added in to the fake images produces the bad photometry. Without it, the photometry s.d. goes from 0.08 mag to 0.02 mag. Want to replace it with the proper psphot background model (not done yet). These files are currently in an intermediate state.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/pap_branch_20090108/ppStack/src/ppStackMatch.c

    r21096 r21106  
    4747#endif
    4848
     49// Get coordinates from a source
     50static void coordsFromSource(float *x, float *y, const pmSource *source)
     51{
     52    assert(x && y);
     53    assert(source);
     54
     55    if (source->modelPSF) {
     56        *x = source->modelPSF->params->data.F32[PM_PAR_XPOS];
     57        *y = source->modelPSF->params->data.F32[PM_PAR_YPOS];
     58    } else {
     59        *x = source->peak->xf;
     60        *y = source->peak->yf;
     61    }
     62    return;
     63}
     64
    4965static psArray *stackSourcesFilter(psArray *sources, // Source list to filter
    5066                                   int exclusion // Exclusion zone, pixels
     
    6480            continue;
    6581        }
    66         x->data.F32[numGood] = source->peak->xf;
    67         y->data.F32[numGood] = source->peak->yf;
     82        coordsFromSource(&x->data.F32[numGood], &y->data.F32[numGood], source);
    6883        numGood++;
    6984    }
     
    8095            continue;
    8196        }
    82         coords->data.F64[0] = source->peak->xf;
    83         coords->data.F64[1] = source->peak->yf;
     97        float xSource, ySource;         // Coordinates of source
     98        coordsFromSource(&xSource, &ySource, source);
     99
     100        coords->data.F64[0] = xSource;
     101        coords->data.F64[1] = ySource;
    84102
    85103        long numWithin = psTreeWithin(tree, coords, exclusion); // Number within exclusion zone
     
    120138        }
    121139
    122         int x = source->peak->xf + 0.5, y = source->peak->yf + 0.5; // Coordinates of source
     140        float xSource, ySource;         // Coordinates of source
     141        coordsFromSource(&xSource, &ySource, source);
     142
     143        int x = xSource + 0.5, y = ySource + 0.5; // Coordinates of source
    123144
    124145        int xMin = PS_MAX(x - BG_SIZE, 0), xMax = PS_MIN(x + BG_SIZE, numCols);
     
    319340                pmSource *source = pmSourceAlloc();     // Source
    320341                sources->data[0] = source;
    321                 source->peak = pmPeakAlloc(50, 50, 10000, PM_PEAK_LONE);
     342                source->peak = pmPeakAlloc(500, 500, 10000, PM_PEAK_LONE);
    322343                source->psfMag = -13.0;
    323                 pmReadoutFakeFromSources(test, 100, 100, sources, NULL, NULL, psf, 0.1, 0, false, true);
     344                pmReadoutFakeFromSources(test, 1000, 1000, sources, NULL, NULL, psf, 0.1, 0, false, true);
    324345                float sum = 0.0;
    325346                for (int y = 0; y < test->image->numRows; y++) {
     
    351372            }
    352373
     374
     375#if 0
    353376            // Add the background into the target image
    354377            psImage *bgImage = stackBackgroundModel(readout, maskVal, stampSources, footprint); // Image of background
    355378            psBinaryOp(fake->image, fake->image, "+", bgImage);
    356379            psFree(bgImage);
     380#endif
     381
    357382
    358383#ifdef TESTING
    359384            {
     385                pmHDU *hdu = pmHDUFromCell(readout->parent);
    360386                psString name = NULL;
    361387                psStringAppend(&name, "fake_%03d.fits", numInput);
    362388                psFits *fits = psFitsOpen(name, "w");
    363389                psFree(name);
    364                 psFitsWriteImage(fits, NULL, fake->image, 0, NULL);
     390                psFitsWriteImage(fits, hdu->header, fake->image, 0, NULL);
    365391                psFitsClose(fits);
    366392            }
    367393            {
     394                pmHDU *hdu = pmHDUFromCell(readout->parent);
    368395                psString name = NULL;
    369396                psStringAppend(&name, "real_%03d.fits", numInput);
    370397                psFits *fits = psFitsOpen(name, "w");
    371398                psFree(name);
    372                 psFitsWriteImage(fits, NULL, readout->image, 0, NULL);
     399                psFitsWriteImage(fits, hdu->header, readout->image, 0, NULL);
    373400                psFitsClose(fits);
    374401            }
     
    410437#ifdef TESTING
    411438            {
     439                pmHDU *hdu = pmHDUFromCell(readout->parent);
    412440                psString name = NULL;
    413441                psStringAppend(&name, "conv_%03d.fits", numInput);
    414442                psFits *fits = psFitsOpen(name, "w");
    415443                psFree(name);
    416                 psFitsWriteImage(fits, NULL, output->image, 0, NULL);
     444                psFitsWriteImage(fits, hdu->header, output->image, 0, NULL);
    417445                psFitsClose(fits);
    418446            }
    419447            {
     448                pmHDU *hdu = pmHDUFromCell(readout->parent);
    420449                psString name = NULL;
    421450                psStringAppend(&name, "diff_%03d.fits", numInput);
     
    423452                psFree(name);
    424453                psBinaryOp(fake->image, output->image, "-", fake->image);
    425                 psFitsWriteImage(fits, NULL, fake->image, 0, NULL);
     454                psFitsWriteImage(fits, hdu->header, fake->image, 0, NULL);
    426455                psFitsClose(fits);
    427456            }
     
    582611#define RADIUS 10                       // Radius of photometry
    583612#define MIN_ERR 0.05                    // Minimum photometric error, mag
     613#define MAX_MAG -13                     // Maximum magnitude for source
    584614
    585615    // Ensure the normalisation is correct
     
    595625        pmSource *source = sources->data[i]; // Source of interest
    596626        if (!source || source->mode & SOURCE_MASK || !isfinite(source->psfMag) || !isfinite(source->errMag) ||
    597             source->errMag > MIN_ERR) {
     627            source->errMag > MIN_ERR || source->psfMag > MAX_MAG) {
    598628            continue;
    599629        }
    600630
    601         float xSrc = source->peak->xf, ySrc = source->peak->yf; // Source coordinates
     631        float xSrc, ySrc;              // Source coordinates
     632        coordsFromSource(&xSrc, &ySrc, source);
    602633        int xMin = PS_MAX(0, xSrc - RADIUS), xMax = PS_MIN(numCols - 1, xSrc + RADIUS); // Bounds in x
    603634        int yMin = PS_MAX(0, ySrc - RADIUS), yMax = PS_MIN(numRows - 1, ySrc + RADIUS); // Bounds in y
     
    635666#ifdef TESTING
    636667    {
     668        pmHDU *hdu = pmHDUFromCell(readout->parent);
    637669        psString name = NULL;
    638670        psStringAppend(&name, "convolved_%03d.fits", numInput);
    639671        psFits *fits = psFitsOpen(name, "w");
    640672        psFree(name);
    641         psFitsWriteImage(fits, NULL, output->image, 0, NULL);
     673        psFitsWriteImage(fits, hdu->header, output->image, 0, NULL);
    642674        psFitsClose(fits);
    643675    }
Note: See TracChangeset for help on using the changeset viewer.