IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Oct 12, 2006, 4:24:34 PM (20 years ago)
Author:
rhl
Message:

Use CONSTANT_PHOTOMETRIC_WEIGHTS to control weighting of pmSourceCrossProduct; provide symbolic names for model parameters

File:
1 edited

Legend:

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

    r8815 r9527  
    33 *  @author EAM, IfA; GLG, MHPCC
    44 *
    5  *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2006-09-15 09:49:01 $
     5 *  @version $Revision: 1.9 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2006-10-13 02:24:34 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    9595    }
    9696
    97     if (model->dparams->data.F32[1] > 0) {
    98         SN = model->params->data.F32[1] / model->dparams->data.F32[1];
     97    if (model->dparams->data.F32[PM_PAR_FLUX] > 0) {
     98        SN = model->params->data.F32[PM_PAR_FLUX] / model->dparams->data.F32[PM_PAR_FLUX];
    9999        source->errMag = 1.0 / SN;
    100100    } else {
     
    102102        source->errMag = 0.0;
    103103    }
    104     x = model->params->data.F32[2];
    105     y = model->params->data.F32[3];
     104    x = model->params->data.F32[PM_PAR_XPOS];
     105    y = model->params->data.F32[PM_PAR_YPOS];
    106106
    107107    // measure object model photometry
     
    194194
    195195    if (DO_SKY) {
    196         sky = model->params->data.F32[0];
     196        sky = model->params->data.F32[PM_PAR_SKY];
    197197    } else {
    198198        sky = 0;
     
    233233    // we only care about the value of the object model, not the local sky
    234234    if (DO_SKY) {
    235         sky = model->params->data.F32[0];
     235        sky = model->params->data.F32[PM_PAR_SKY];
    236236    } else {
    237237        sky = 0;
     
    245245    psVector *params = model->params;
    246246
    247     Xo = params->data.F32[2];
    248     Yo = params->data.F32[3];
     247    Xo = params->data.F32[PM_PAR_XPOS];
     248    Yo = params->data.F32[PM_PAR_YPOS];
    249249
    250250    dX = Xo - image->col0;
     
    297297}
    298298
    299 float pmSourceCrossProduct (pmSource *Mi, pmSource *Mj)
     299double pmSourceCrossProduct (const pmSource *Mi,
     300                             const pmSource *Mj,
     301                             const bool unweighted_sum) // should the cross product be weighted?
    300302{
    301303
     
    304306    int xIs, xJs, yIs, yJs;
    305307    int xIe, yIe;
    306     float flux, wt;
    307 
    308     psImage *Pi = Mi->pixels;
    309     psImage *Pj = Mj->pixels;
    310 
    311     psImage *Wi = Mi->weight;
    312 
    313     psImage *Ti = Mi->mask;
    314     psImage *Tj = Mj->mask;
     308    double flux, wt;
     309
     310    const psImage *Pi = Mi->pixels;
     311    const psImage *Pj = Mj->pixels;
     312
     313    const psImage *Wi = Mi->weight;
     314
     315    const psImage *Ti = Mi->mask;
     316    const psImage *Tj = Mj->mask;
    315317
    316318    Xs = PS_MAX (Pi->col0, Pj->col0);
     
    337339            if (Tj->data.U8[yj][xj])
    338340                continue;
    339             wt = Wi->data.F32[yi][xi];
    340             if (wt > 0) {
    341                 flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]) / wt;
     341
     342            if (unweighted_sum) {
     343                flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]);
     344            } else {
     345                wt = Wi->data.F32[yi][xi];
     346                if (wt > 0) {
     347                    flux += (Pi->data.F32[yi][xi] * Pj->data.F32[yj][xj]) / wt;
     348                }
    342349            }
    343350        }
    344351    }
    345     return (flux);
    346 }
    347 
    348 float pmSourceCrossWeight (pmSource *Mi, pmSource *Mj)
     352    return flux;
     353}
     354
     355double pmSourceCrossWeight(const pmSource *Mi,
     356                           const pmSource *Mj,
     357                           const bool unweighted_sum) // should the cross product be weighted?
    349358{
    350359
     
    353362    int xIs, xJs, yIs, yJs;
    354363    int xIe, yIe;
    355     float flux, wt;
    356 
    357     psImage *Pi = Mi->pixels;
    358     psImage *Pj = Mj->pixels;
    359 
    360     psImage *Wi = Mi->weight;
    361 
    362     psImage *Ti = Mi->mask;
    363     psImage *Tj = Mj->mask;
     364    double flux, wt;
     365
     366    const psImage *Pi = Mi->pixels;
     367    const psImage *Pj = Mj->pixels;
     368
     369    const psImage *Wi = Mi->weight;
     370
     371    const psImage *Ti = Mi->mask;
     372    const psImage *Tj = Mj->mask;
    364373
    365374    Xs = PS_MAX (Pi->col0, Pj->col0);
     
    386395            if (Tj->data.U8[yj][xj])
    387396                continue;
    388             wt = Wi->data.F32[yi][xi];
    389             if (wt > 0) {
    390                 flux += 1.0 / wt;
     397
     398            if (unweighted_sum) {
     399                flux++;
     400            } else {
     401                wt = Wi->data.F32[yi][xi];
     402                if (wt > 0) {
     403                    flux += 1.0 / wt;
     404                }
    391405            }
    392406        }
    393407    }
    394     return (flux);
    395 }
    396 
     408    return flux;
     409}
     410
Note: See TracChangeset for help on using the changeset viewer.