IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 29, 2010, 4:31:24 PM (16 years ago)
Author:
eugene
Message:

make DV2 and V3 consistent wrt xErr, yErr

Location:
trunk/psModules/src/objects
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceIO_CMF_PS1_DV2.c

    r29546 r29620  
    6969    psF32 xPos, yPos;
    7070    psF32 xErr, yErr;
    71     psF32 errMag, chisq, apRadius;
     71    psF32 chisq, apRadius;
    7272    psS32 nPix, nDOF;
    7373
     
    8787    }
    8888    float zeroptErr = psMetadataLookupF32 (&status2, imageHeader, "ZPT_ERR");
     89
     90    // we need a measure of the image quality (FWHM) for this image, in order to get the positional errors
     91    float fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "FWHM_MAJ");
     92    if (!status1) {
     93        fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW1");
     94        if (!status1) {
     95            fwhmMajor = 5.0; // XXX just a guess!
     96        }
     97    }
     98    float fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "FWHM_MIN");
     99    if (!status1) {
     100        fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW2");
     101        if (!status1) {
     102            fwhmMinor = 5.0; // XXX just a guess!
     103        }
     104    }
    89105
    90106    // if the sequence is defined, write these in seq order; otherwise
     
    128144            } else {
    129145              // in linear-fit mode, there is no error on the centroid
    130               xErr = source->peak->dx;
    131               yErr = source->peak->dy;
     146                xErr = fwhmMajor * source->errMag / 2.35;
     147                yErr = fwhmMinor * source->errMag / 2.35;
    132148            }
    133149            if (isfinite(PAR[PM_PAR_SXX]) && isfinite(PAR[PM_PAR_SXX]) && isfinite(PAR[PM_PAR_SXX])) {
     
    142158            nPix = model->nPix;
    143159            apRadius = source->apRadius;
    144             errMag = model->dparams->data.F32[PM_PAR_I0] / model->params->data.F32[PM_PAR_I0];
    145160        } else {
    146             xPos = source->peak->xf;
    147             yPos = source->peak->yf;
    148             xErr = source->peak->dx;
    149             yErr = source->peak->dy;
     161            bool useMoments = true;
     162            useMoments = (useMoments && source->moments);          // can't if there are no moments
     163            useMoments = (useMoments && source->moments->nPixels); // can't if the moments were not measured
     164            useMoments = (useMoments && !(source->mode && PM_SOURCE_MODE_MOMENTS_FAILURE)); // can't if the moments failed...
     165
     166            if (useMoments) {
     167                xPos = source->moments->Mx;
     168                yPos = source->moments->My;
     169                xErr = fwhmMajor * source->errMag / 2.35;
     170                yErr = fwhmMinor * source->errMag / 2.35;
     171            } else {
     172                xPos = source->peak->xf;
     173                yPos = source->peak->yf;
     174                xErr = source->peak->dx;
     175                yErr = source->peak->dy;
     176            }
    150177            axes.major = NAN;
    151178            axes.minor = NAN;
     
    155182            nPix = 0;
    156183            apRadius = NAN;
    157             errMag = NAN;
    158184        }
    159185
     
    182208        psMetadataAdd (row, PS_LIST_TAIL, "PLTSCALE",         PS_DATA_F32, "plate scale at source (arcsec/pixel)",       pltScale*PS_DEG_RAD*3600.0);
    183209        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG",     PS_DATA_F32, "PSF fit instrumental magnitude",             source->psfMag);
    184         psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        errMag);
     210        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        source->errMag);
    185211        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_FLUX",    PS_DATA_F32, "PSF fit instrumental magnitude",             source->psfFlux);
    186212        psMetadataAdd (row, PS_LIST_TAIL, "PSF_INST_FLUX_SIG",PS_DATA_F32, "Sigma of PSF instrumental magnitude",        source->psfFluxErr);
  • trunk/psModules/src/objects/pmSourceIO_CMF_PS1_V3.c

    r29546 r29620  
    8989    if (!status1) {
    9090        fwhmMajor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW1");
     91        if (!status1) {
     92            fwhmMajor = 5.0; // XXX just a guess!
     93        }
    9194    }
    9295    float fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "FWHM_MIN");
    9396    if (!status1) {
    9497        fwhmMinor = psMetadataLookupF32(&status1, readout->analysis, "IQ_FW2");
     98        if (!status1) {
     99            fwhmMinor = 5.0; // XXX just a guess!
     100        }
    95101    }
    96102
     
    154160            useMoments = (useMoments && !(source->mode && PM_SOURCE_MODE_MOMENTS_FAILURE)); // can't if the moments failed...
    155161
    156             if (source->moments) {
     162            if (useMoments) {
    157163                xPos = source->moments->Mx;
    158164                yPos = source->moments->My;
Note: See TracChangeset for help on using the changeset viewer.