IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 20999


Ignore:
Timestamp:
Dec 15, 2008, 3:58:30 PM (17 years ago)
Author:
Paul Price
Message:

Attempting to get correct scaling for stacked images.

Location:
trunk/psModules/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/camera/pmReadoutFake.c

    r20937 r20999  
    5050bool pmReadoutFakeFromSources(pmReadout *readout, int numCols, int numRows, const psArray *sources,
    5151                              const psVector *xOffset, const psVector *yOffset, const pmPSF *psf,
    52                               float minFlux, int radius, bool circularise)
     52                              float minFlux, int radius, bool circularise, bool normalisePeak)
    5353{
    5454    PS_ASSERT_PTR_NON_NULL(readout, false);
     
    8383    pmModel *fakeModel = pmModelFromPSFforXY(psf, (float)numCols / 2.0, (float)numRows / 2.0,
    8484                                             1.0); // Fake model, with central intensity of 1.0
    85     psAssert (fakeModel, "failed to generate model: should this be an error or not?");
     85    psAssert(fakeModel, "failed to generate model: should this be an error or not?");
    8686
    87 
    88     float flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
     87    float flux0 = NAN;                  // Flux for central intensity of 1.0
     88    if (normalisePeak) {
     89        flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
     90    }
    8991
    9092    if (circularise && !circulariseModel(fakeModel)) {
     
    112114        }
    113115
    114         pmModel *fakeModel = pmModelFromPSFforXY(psf, x, y, powf(10.0, -0.4 * source->psfMag) / flux0);
     116        float flux = powf(10.0, -0.4 * source->psfMag); // Flux of source
     117        if (normalisePeak) {
     118            flux /= flux0;
     119        }
     120
     121        pmModel *fakeModel = pmModelFromPSFforXY(psf, x, y, flux);
    115122        if (!fakeModel) {
    116123            continue;
  • trunk/psModules/src/camera/pmReadoutFake.h

    r15838 r20999  
    2121                              float minFlux, ///< Minimum flux to bother about; for setting source radius
    2222                              int radius, ///< Fixed radius for sources
    23                               bool circularise ///< Circularise PSF model?
     23                              bool circularise, ///< Circularise PSF model?
     24                              bool normalise ///< Normalise the peak value?
    2425    );
    2526
  • trunk/psModules/src/imcombine/pmPSFEnvelope.c

    r20937 r20999  
    118118        psf->residuals = NULL;
    119119        if (!pmReadoutFakeFromSources(fakeRO, fakeSize, fakeSize, fakes, xOffset, yOffset, psf,
    120                                       NAN, radius, true)) {
     120                                      NAN, radius, true, true)) {
    121121            psError(PS_ERR_UNKNOWN, false, "Unable to generate fake readout.");
    122122            psFree(envelope);
     
    148148            // Get the radius
    149149            pmModel *model = pmModelFromPSFforXY(psf, x, y, PEAK_FLUX); // Model for source
    150             psAssert (model, "failed to generate model: should this be an error or not?");
     150            psAssert (model, "failed to generate model: should this be an error or not?");
    151151            float srcRadius = model->modelRadius(model->params, PS_SQR(WEIGHT_VAL)); // Radius for source
    152152            if (srcRadius > maxRadius) {
     
    299299        pmModel *fakeModel = pmModelFromPSFforXY(psf, (float)numCols / 2.0, (float)numRows / 2.0,
    300300                                                 1.0); // Fake model, with central intensity of 1.0
    301         psAssert (fakeModel, "failed to generate model: should this be an error or not?");
     301        psAssert (fakeModel, "failed to generate model: should this be an error or not?");
    302302        float flux0 = fakeModel->modelFlux(fakeModel->params); // Flux for central intensity of 1.0
    303303        for (int i = 0; i < numFakes; i++) {
     
    308308        pmReadout *generated = pmReadoutAlloc(NULL); // Generated image
    309309        pmReadoutFakeFromSources(generated, numCols, numRows, fakes, NULL, NULL, psf, NAN, radius,
    310                                  false);
     310                                 false, true);
    311311        {
    312312            psFits *fits = psFitsOpen("psf_field_model.fits", "w");
Note: See TracChangeset for help on using the changeset viewer.