IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 36860


Ignore:
Timestamp:
Jun 13, 2014, 8:47:47 AM (12 years ago)
Author:
eugene
Message:

add psfCore to the outputs structure, assign only for PS1_V1 and QGAUSS models; add apNpixels to source & set with pmSourcePhotometryAper; use new pmModel.class.functions; add AP_NPIX,PSF_CORE,PSF_FWHM_MAJ,PSF_FWHM_MIN to output CMF (PS1_V5+, PS1_DV4+, PS1_SV3+), AP_MAG_RADIUS was S32 on read (how did this work??)

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

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmModelFuncs.h

    r36375 r36860  
    110110typedef psF64 (*pmModelRadius)(const psVector *params, double flux);
    111111
     112// This function returns the FWHM given the supplied sigma (major or minor)
     113typedef psF64 (*pmModelSetFWHM)(const psVector *params, double sigma);
     114
    112115//  This function provides the model guess parameters based on the details of
    113116//  the given source.
  • trunk/psModules/src/objects/pmSource.c

    r36747 r36860  
    3333#include "pmMoments.h"
    3434#include "pmModelFuncs.h"
     35#include "pmModelClass.h"
    3536#include "pmModel.h"
    3637#include "pmModelUtils.h"
    37 #include "pmModelClass.h"
    3838#include "pmSourceMasks.h"
    3939#include "pmSourceExtendedPars.h"
     
    146146    source->apMagRaw         = NAN;
    147147    source->apRadius         = NAN;
     148    source->apNpixels        = 0;
    148149    source->apFlux           = NAN;
    149150    source->apFluxErr        = NAN;
     
    237238    source->apMagRaw         = in->apMagRaw;
    238239    source->apRadius         = in->apRadius;
     240    source->apNpixels        = in->apNpixels;
    239241    source->apFlux           = in->apFlux;
    240242    source->apFluxErr        = in->apFluxErr;
     
    987989    if (!isfinite(oldI0)) return false;
    988990
    989     bool useReff = pmModelUseReff (model->type);
     991    bool useReff = model->class->useReff;
    990992    pmModelParamsToAxes (&axes, PAR[PM_PAR_SXX], PAR[PM_PAR_SXY], PAR[PM_PAR_SYY], useReff);
    991993
  • trunk/psModules/src/objects/pmSource.h

    r36747 r36860  
    9797    float apMagRaw;                     ///< raw mag in given aperture
    9898    float apRadius;                     ///< radius for aperture magnitude
     99    int   apNpixels;                    ///< number of unmasked pixels in aperture
    99100    float apFlux;                       ///< apFlux corresponding to psfMag or extMag (depending on type)
    100101    float apFluxErr;                    ///< apFluxErr corresponding to psfMag or extMag (depending on type)
  • trunk/psModules/src/objects/pmSourceIO_CMF.c.in

    r36758 r36860  
    3737#include "pmMoments.h"
    3838#include "pmModelFuncs.h"
     39#include "pmModelClass.h"
    3940#include "pmModel.h"
    4041#include "pmModelUtils.h"
    41 #include "pmModelClass.h"
    4242#include "pmSourceMasks.h"
    4343#include "pmSourceExtendedPars.h"
     
    142142        @ALL@                       psMetadataAdd (row, PS_LIST_TAIL, "AP_MAG",           PS_DATA_F32, "magnitude in standard aperture",             source->apMag);
    143143        @>PS1_V2,PS1_SV?,>PS1_DV1@  psMetadataAdd (row, PS_LIST_TAIL, "AP_MAG_RAW",       PS_DATA_F32, "magnitude in reported aperture",             source->apMagRaw);
    144         @ALL@                       psMetadataAdd (row, PS_LIST_TAIL, "AP_MAG_RADIUS",    PS_DATA_F32, "radius used for aperture mags",              outputs.apRadius);
     144        @ALL@                       psMetadataAdd (row, PS_LIST_TAIL, "AP_MAG_RADIUS",    PS_DATA_F32, "radius used for aperture mags",              source->apRadius);
    145145        @>PS1_DV1,>PS1_V3,>PS1_SV1@ psMetadataAdd (row, PS_LIST_TAIL, "AP_FLUX",          PS_DATA_F32, "instrumental flux in standard aperture",     source->apFlux);
    146146        @>PS1_DV1,>PS1_V3,>PS1_SV1@ psMetadataAdd (row, PS_LIST_TAIL, "AP_FLUX_SIG",      PS_DATA_F32, "aperture flux error",                        source->apFluxErr);
     147        @>PS1_V4,>PS1_SV2,>PS1_DV3@ psMetadataAdd (row, PS_LIST_TAIL, "AP_NPIX",          PS_DATA_S32, "aperture unmasked pixels",                   source->apNpixels);
    147148
    148149        @<PS1_V3,PS1_SV1,PS1_DV?@ psMetadataAdd (row, PS_LIST_TAIL, "PEAK_FLUX_AS_MAG", PS_DATA_F32, "Peak flux expressed as magnitude",           outputs.peakMag);
     
    163164        @ALL@                     psMetadataAdd (row, PS_LIST_TAIL, "EXT_NSIGMA",       PS_DATA_F32, "Nsigma deviations from PSF to EXT",          source->extNsigma);
    164165
     166        // PSF shape parameters:
    165167        @ALL@                     psMetadataAdd (row, PS_LIST_TAIL, "PSF_MAJOR",        PS_DATA_F32, "PSF width (major axis)",                     outputs.psfMajor);
    166168        @ALL@                     psMetadataAdd (row, PS_LIST_TAIL, "PSF_MINOR",        PS_DATA_F32, "PSF width (minor axis)",                     outputs.psfMinor);
    167169        @ALL@                     psMetadataAdd (row, PS_LIST_TAIL, "PSF_THETA",        PS_DATA_F32, "PSF orientation angle",                      outputs.psfTheta);
     170        @>PS1_V4,>PS1_SV2,>PS1_DV3@ psMetadataAdd (row, PS_LIST_TAIL, "PSF_CORE",         PS_DATA_F32, "k term if defined",                          outputs.psfCore);
     171
     172        // I use a look-up table and linear interpolation to map PSF_MAJOR,PSF_MINOR + PSF_CORE to FWHM values
     173        @>PS1_V4,>PS1_SV2,>PS1_DV3@ psMetadataAdd (row, PS_LIST_TAIL, "PSF_FWHM_MAJ",        PS_DATA_F32, "PSF FWHM (major axis)",                   outputs.psfMajorFWHM);
     174        @>PS1_V4,>PS1_SV2,>PS1_DV3@ psMetadataAdd (row, PS_LIST_TAIL, "PSF_FWHM_MIN",        PS_DATA_F32, "PSF FWHM (minor axis)",                   outputs.psfMinorFWHM);
     175
     176        // psf data quality
    168177        @ALL@                     psMetadataAdd (row, PS_LIST_TAIL, "PSF_QF",           PS_DATA_F32, "PSF coverage/quality factor (bad)",          source->pixWeightNotBad);
    169178        @>PS1_V2,PS1_SV?,>PS1_DV1@ psMetadataAdd (row, PS_LIST_TAIL, "PSF_QF_PERFECT",   PS_DATA_F32, "PSF coverage/quality factor (poor)",         source->pixWeightNotPoor);
     
    344353        @ALL@     axes.theta        = psMetadataLookupF32 (&status, row, "PSF_THETA");
    345354        @ALL@     axes.theta        = axes.theta * PS_RAD_DEG;
     355       
     356        @>PS1_V4,>PS1_SV2,>PS1_DV3@ if (model->params->n >= PM_PAR_7) {
     357        @>PS1_V4,>PS1_SV2,>PS1_DV3@     PAR[PM_PAR_7] = psMetadataLookupF32 (&status, row, "PSF_CORE");
     358        @>PS1_V4,>PS1_SV2,>PS1_DV3@ }
    346359
    347360        @ALL@     PAR[PM_PAR_SKY]   = psMetadataLookupF32 (&status, row, "SKY");
     
    383396        @ALL@     source->crNsigma  = psMetadataLookupF32 (&status, row, "CR_NSIGMA");
    384397        @ALL@     source->extNsigma = psMetadataLookupF32 (&status, row, "EXT_NSIGMA");
    385         @ALL@     source->apRadius  = psMetadataLookupS32 (&status, row, "AP_MAG_RADIUS");
     398        @ALL@     source->apRadius  = psMetadataLookupF32 (&status, row, "AP_MAG_RADIUS");
     399        @>PS1_V4,>PS1_SV2,>PS1_DV3@ source->apNpixels = psMetadataLookupS32 (&status, row, "AP_NPIX");
    386400
    387401        // note that some older versions used PSF_PROBABILITY: this was not well defined.
     
    982996                    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_THETA_ERR",     0, "EXT angle err (SXY, isnan)", dPAR[PM_PAR_SXY]);
    983997                } else {
    984                     psEllipseAxes axes = pmPSF_ModelToAxes (PAR, model->type);
     998                    psEllipseAxes axes = pmPSF_ModelToAxes (PAR, model->class->useReff);
    985999                    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ",    0, "EXT width (major axis), length for trail", axes.major);
    9861000                    psMetadataAddF32 (row, PS_LIST_TAIL, "EXT_WIDTH_MIN",    0, "EXT width (minor axis), sigma for trail",  axes.minor);
  • trunk/psModules/src/objects/pmSourceOutputs.c

    r36623 r36860  
    2626#include "pmMoments.h"
    2727#include "pmModelFuncs.h"
     28#include "pmModelClass.h"
    2829#include "pmModel.h"
    2930#include "pmModelUtils.h"
    30 #include "pmModelClass.h"
    3131#include "pmSourceMasks.h"
    3232#include "pmSourceExtendedPars.h"
     
    108108        }
    109109        if (isfinite(PAR[PM_PAR_SXX]) && isfinite(PAR[PM_PAR_SXY]) && isfinite(PAR[PM_PAR_SYY])) {
    110             axes = pmPSF_ModelToAxes (PAR, model->type);
     110            axes = pmPSF_ModelToAxes (PAR, model->class->useReff);
    111111            outputs->psfMajor = axes.major;
    112112            outputs->psfMinor = axes.minor;
    113113            outputs->psfTheta = axes.theta*PS_DEG_RAD;
     114
     115            // some models (PS1_V1, QGAUSS) have an extra 'core' parameter
     116            outputs->psfCore = NAN;
     117            if (model->type == pmModelClassGetType ("PS_MODEL_PS1_V1")) {
     118                outputs->psfCore = PAR[PM_PAR_7];
     119            }
     120            if (model->type == pmModelClassGetType ("PS_MODEL_QGAUSS")) {
     121                outputs->psfCore = PAR[PM_PAR_7];
     122            }
     123
     124            outputs->psfMajorFWHM = model->class->modelSetFWHM(model->params, axes.major);
     125            outputs->psfMinorFWHM = model->class->modelSetFWHM(model->params, axes.minor);
    114126        } else {
    115127            outputs->psfMajor = NAN;
    116128            outputs->psfMinor = NAN;
    117129            outputs->psfTheta = NAN;
     130            outputs->psfCore = NAN;
    118131        }
    119132        outputs->chisq = model->chisq;
    120133        outputs->nDOF = model->nDOF;
    121134        outputs->nPix = model->nPix;
    122         outputs->apRadius = source->apRadius;
    123135    } else {
    124136        bool useMoments = pmSourcePositionUseMoments(source);
     
    138150        outputs->psfMinor = NAN;
    139151        outputs->psfTheta = NAN;
     152        outputs->psfCore = NAN;
    140153        outputs->chisq = NAN;
    141154        outputs->nDOF = 0;
    142155        outputs->nPix = 0;
    143         outputs->apRadius = NAN;
    144156    }
    145157
  • trunk/psModules/src/objects/pmSourceOutputs.h

    r33690 r36860  
    2626    float psfMinor;
    2727    float psfTheta;
     28    float psfCore;
     29    float psfMajorFWHM;
     30    float psfMinorFWHM;
    2831    float chisq;
    29     float apRadius;
    3032    int nPix;
    3133    int nDOF;
  • trunk/psModules/src/objects/pmSourcePhotometry.c

    r36623 r36860  
    3333#include "pmMoments.h"
    3434#include "pmModelFuncs.h"
     35#include "pmModelClass.h"
    3536#include "pmModel.h"
    3637#include "pmModelUtils.h"
    37 #include "pmModelClass.h"
    3838#include "pmSourceMasks.h"
    3939#include "pmSourceExtendedPars.h"
     
    330330
    331331    // measure fitMag
    332     flux = model->modelFlux (model->params);
     332    flux = model->class->modelFlux (model->params);
    333333    if (flux > 0) {
    334334        mag = -2.5*log10(flux);
     
    359359
    360360    bool status;
    361     int nPix = 0;
    362     status = pmSourcePhotometryAper(&nPix, &source->apMagRaw, &source->apFlux, &source->apFluxErr, model, image, variance, mask, maskVal);
     361    status = pmSourcePhotometryAper(&source->apNpixels, &source->apMagRaw, &source->apFlux, &source->apFluxErr, model, image, variance, mask, maskVal);
    363362    if (status) {
    364363        source->mode |= PM_SOURCE_MODE_AP_MAGS;
     
    490489
    491490            // for the full model, add all points
    492             value = fabs(model->modelFunc (NULL, params, coord) - sky);
     491            value = fabs(model->class->modelFunc (NULL, params, coord) - sky);
    493492            modelSum += value;
    494493
     
    893892
    894893            // for the full model, add all points
    895             float value = model->modelFunc (NULL, params, coord);
     894            float value = model->class->modelFunc (NULL, params, coord);
    896895
    897896            // fprintf (stderr, "%d, %d : %f, %f : %f - %f : %f\n",
Note: See TracChangeset for help on using the changeset viewer.