IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14972


Ignore:
Timestamp:
Sep 21, 2007, 11:45:00 AM (19 years ago)
Author:
eugene
Message:

updating psf parameter to pmTrend2D

Location:
branches/eam_branch_20070921/psModules/src/objects
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20070921/psModules/src/objects/pmPSF.c

    r14969 r14972  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.28.2.1 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2007-09-21 18:55:11 $
     8 *  @version $Revision: 1.28.2.2 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2007-09-21 21:45:00 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    4141
    4242/*****************************************************************************/
    43 /* DEFINE STATEMENTS                                                         */
    44 /*****************************************************************************/
    45 
    46 /*****************************************************************************/
    47 /* TYPE DEFINITIONS                                                          */
    48 /*****************************************************************************/
    49 
    50 /*****************************************************************************/
    51 /* GLOBAL VARIABLES                                                          */
    52 /*****************************************************************************/
    53 
    54 /*****************************************************************************/
    55 /* FILE STATIC VARIABLES                                                     */
    56 /*****************************************************************************/
    57 
    58 /*****************************************************************************/
    59 /* FUNCTION IMPLEMENTATION - LOCAL                                           */
    60 /*****************************************************************************/
    61 
    62 /*****************************************************************************/
    6343/* FUNCTION IMPLEMENTATION - PUBLIC                                          */
    6444/*****************************************************************************/
    6545
    6646static void pmPSFOptionsFree (pmPSFOptions *options) {
    67 
    6847    return;
    6948}
     
    7251
    7352    pmPSFOptions *options = (pmPSFOptions *) psAlloc(sizeof(pmPSFOptions));
     53    psMemSetDeallocator(options, (psFreeFunc) pmPSFOptionsFree);
    7454
    7555    options->type          = 0;
    7656    options->poissonErrors = false;
    77     options->psfTrendMode  = PM_TREND_MAP;
     57    options->psfTrendMode  = PM_TREND_NONE;
    7858    options->psfTrendNx    = 0;
    7959    options->psfTrendNy    = 0;
     
    11595
    11696    pmPSF *psf = (pmPSF *) psAlloc(sizeof(pmPSF));
     97    psMemSetDeallocator(psf, (psFreeFunc) pmPSFFree);
    11798
    11899    psf->type     = options->type;
     
    163144    // PM_PAR_XPOS, etc)
    164145
     146    // XXX make this a user option
     147    psStats *stats = psStatsAlloc (PS_STAT_ROBUST_MEDIAN | PS_STAT_ROBUST_STDEV);
     148
    165149    // XXX define new structure to carry in the psf options
    166     if (psfTrendMask) {
     150    if (options->psfTrendMode != PM_TREND_NONE) {
    167151        for (int i = 0; i < psf->params->n; i++) {
    168             if (i == PM_PAR_SKY)
    169                 continue;
    170             if (i == PM_PAR_I0)
    171                 continue;
    172             if (i == PM_PAR_XPOS)
    173                 continue;
    174             if (i == PM_PAR_YPOS)
    175                 continue;
    176 
    177             // XXX need to set stats, image
     152            if (i == PM_PAR_SKY) continue;
     153            if (i == PM_PAR_I0) continue;
     154            if (i == PM_PAR_XPOS) continue;
     155            if (i == PM_PAR_YPOS) continue;
     156
     157            // XXX need to set stats & image or else nXfine,nYfine
    178158            pmTrend2D *param = pmTrend2DAlloc (options->psfTrendMode, image, options->psfTrendNx, options->psfTrendNx, stats);
    179159            psf->params->data[i] = param;
    180160        }
    181161    }
    182 
    183     psMemSetDeallocator(psf, (psFreeFunc) pmPSFFree);
    184     return(psf);
     162   
     163    psFree (stats);
     164    return psf;
    185165}
    186166
  • branches/eam_branch_20070921/psModules/src/objects/pmPSFtry.c

    r14937 r14972  
    55 *  @author EAM, IfA
    66 *
    7  *  @version $Revision: 1.45 $ $Name: not supported by cvs2svn $
    8  *  @date $Date: 2007-09-21 00:06:57 $
     7 *  @version $Revision: 1.45.2.1 $ $Name: not supported by cvs2svn $
     8 *  @date $Date: 2007-09-21 21:45:00 $
    99 *
    1010 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    5858
    5959// allocate a pmPSFtry based on the desired sources and the model (identified by name)
    60 pmPSFtry *pmPSFtryAlloc (psArray *sources, char *modelName, bool poissonErrors, psPolynomial2D *psfTrendMask)
     60pmPSFtry *pmPSFtryAlloc (psArray *sources, char *modelName, pmPSFOptions *options)
    6161{
    6262
    6363    // validate the requested model name
    64     pmModelType type = pmModelClassGetType (modelName);
    65     if (type == -1) {
     64    options->type = pmModelClassGetType (modelName);
     65    if (options->type == -1) {
    6666        psError (PS_ERR_UNKNOWN, true, "invalid model name %s", modelName);
    6767        return NULL;
     
    7070    pmPSFtry *test = (pmPSFtry *) psAlloc(sizeof(pmPSFtry));
    7171
    72     test->psf       = pmPSFAlloc (type, poissonErrors, psfTrendMask);
     72    test->psf       = pmPSFAlloc (options);
    7373    test->metric    = psVectorAlloc (sources->n, PS_TYPE_F32);
    7474    test->metricErr = psVectorAlloc (sources->n, PS_TYPE_F32);
     
    9999
    100100// generate a pmPSFtry with a copy of the test PSF sources
    101 pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, float RADIUS, bool poissonErrors, psPolynomial2D *psfTrendMask, bool applyWeights, psMaskType maskVal, psMaskType mark)
     101pmPSFtry *pmPSFtryModel (psArray *sources, char *modelName, pmPSFOptions *options, psMaskType maskVal, psMaskType mark)
    102102{
    103103    bool status;
     
    105105    int Npsf = 0;
    106106
    107     pmPSFtry *psfTry = pmPSFtryAlloc (sources, modelName, poissonErrors, psfTrendMask);
     107    // XXX use the options structure here instead?
     108
     109    pmPSFtry *psfTry = pmPSFtryAlloc (sources, modelName, options);
    108110    if (psfTry == NULL) {
    109111        psError (PS_ERR_UNKNOWN, false, "failed to allocate psf model");
     
    124126
    125127        // set object mask to define valid pixels
    126         psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
     128        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "OR", mark);
    127129
    128130        // fit model as EXT, not PSF
     
    140142
    141143    // stage 2: construct a psf (pmPSF) from this collection of model fits
    142     if (!pmPSFFromPSFtry (psfTry, applyWeights)) {
     144    if (!pmPSFFromPSFtry (psfTry, options->applyWeights)) {
    143145        psError(PS_ERR_UNKNOWN, false, "failed to construct a psf model from collection of sources");
    144146        psFree(psfTry);
     
    162164            continue;
    163165        }
    164         source->modelPSF->radiusFit = RADIUS;
     166        source->modelPSF->radiusFit = options->radius;
    165167
    166168        // set object mask to define valid pixels
    167         psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, RADIUS, "OR", mark);
     169        psImageKeepCircle (source->maskObj, source->peak->x, source->peak->y, options->radius, "OR", mark);
    168170
    169171        // fit the PSF model to the source
     
    241243
    242244    // XXX this function wants aperture radius for pmSourcePhotometry
    243     pmPSFtryMetric (psfTry, RADIUS);
     245    pmPSFtryMetric (psfTry, options->radius);
    244246    psLogMsg ("psphot.pspsf", 3, "try model %s, ap-fit: %f +/- %f : sky bias: %f\n",
    245247              modelName, psfTry->psf->ApResid, psfTry->psf->dApResid, psfTry->psf->skyBias);
     
    501503    psFree (z);
    502504    psFree (dz);
    503     return (true);
     505    return true;
    504506}
    505507
  • branches/eam_branch_20070921/psModules/src/objects/pmTrend2D.h

    r14938 r14972  
    55 * @author EAM, IfA
    66 *
    7  * @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
    8  * @date $Date: 2007-09-21 00:09:18 $
     7 * @version $Revision: 1.2.2.1 $ $Name: not supported by cvs2svn $
     8 * @date $Date: 2007-09-21 21:45:00 $
    99 * Copyright 2004 Maui High Performance Computing Center, University of Hawaii
    1010 */
     
    1717
    1818typedef enum {
     19    PM_TREND_NONE,
    1920    PM_TREND_POLY_ORD,
    2021    PM_TREND_POLY_CHEB,
Note: See TracChangeset for help on using the changeset viewer.