IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 10, 2010, 7:34:39 PM (16 years ago)
Author:
eugene
Message:

updates from eam_branches/20091201 (substantially changes to the kernel matching code; updates to pmDetection container, added pmPattern, etc)

File:
1 edited

Legend:

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

    r26395 r26893  
    33 *  Functions to define and manipulate sources on images
    44 *
    5  *  @author GLG, MHPCC
    6  *  @author EAM, IfA: significant modifications.
     5 *  @author EAM, IfA
     6 *  @author GLG, MHPCC (initial code base)
    77 *
    88 *  @version $Revision: 1.70 $ $Name: not supported by cvs2svn $
    99 *  @date $Date: 2009-02-16 22:29:59 $
    10  *
    11  *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
    12  *
     10 *  Copyright 2009 Institute for Astronomy, University of Hawaii
    1311 */
    1412
     
    277275// psphot-specific function which applies the recipe values
    278276// only apply selection to sources within specified region
    279 pmPSFClump pmSourcePSFClump(psRegion *region, psArray *sources, psMetadata *recipe)
     277pmPSFClump pmSourcePSFClump(psImage **savedImage, psRegion *region, psArray *sources, float PSF_SN_LIM, float PSF_CLUMP_GRID_SCALE, psF32 SX_MAX, psF32 SY_MAX, psF32 AR_MAX)
    280278{
    281279    psTrace("psModules.objects", 10, "---- begin ----\n");
     
    287285
    288286    PS_ASSERT_PTR_NON_NULL(sources, errorClump);
    289     PS_ASSERT_PTR_NON_NULL(recipe, errorClump);
    290 
    291     bool status = true;                 // Status of MD lookup
    292     float PSF_SN_LIM = psMetadataLookupF32(&status, recipe, "PSF_SN_LIM");
    293     if (!status) {
    294         PSF_SN_LIM = 0;
    295     }
    296     float PSF_CLUMP_GRID_SCALE = psMetadataLookupF32(&status, recipe, "PSF_CLUMP_GRID_SCALE");
    297     if (!status) {
    298         PSF_CLUMP_GRID_SCALE = 0.1;
    299     }
    300287
    301288    // find the sigmaX, sigmaY clump
    302289    {
    303         psF32 SX_MAX = psMetadataLookupF32(&status, recipe, "MOMENTS_SX_MAX");
    304         if (!status) {
    305             psWarning("MOMENTS_SX_MAX not set in recipe");
    306             SX_MAX = 10.0;
    307         }
    308         psF32 SY_MAX = psMetadataLookupF32(&status, recipe, "MOMENTS_SY_MAX");
    309         if (!status) {
    310             psWarning("MOMENTS_SY_MAX not set in recipe");
    311             SY_MAX = 10.0;
    312         }
    313         psF32 AR_MAX = psMetadataLookupF32(&status, recipe, "MOMENTS_AR_MAX");
    314         if (!status) {
    315             psWarning("MOMENTS_AR_MAX not set in recipe");
    316             AR_MAX =  3.0;
    317         }
    318290        psF32 AR_MIN = 1.0 / AR_MAX;
    319291
     
    401373        psfClump.nSigma = stats->sampleStdev;
    402374
    403         const bool keep_psf_clump = psMetadataLookupBool(NULL, recipe, "KEEP_PSF_CLUMP");
    404         if (keep_psf_clump)
    405         {
    406             psMetadataAdd(recipe, PS_LIST_TAIL,
    407                           "PSF_CLUMP", PS_DATA_IMAGE, "Image of PSF coefficients", splane);
     375        if (savedImage) {
     376            *savedImage = psMemIncrRefCounter(splane);
    408377        }
    409378        psFree (splane);
     
    411380
    412381        // if we failed to find a valid peak, return the empty clump (failure signal)
    413         if (!peaks || !peaks->n) {
     382        if (peaks == NULL) {
     383            psError(PS_ERR_UNKNOWN, false, "failure in peak analysis for PSF clump.\n");
     384            psFree (peaks);
     385            return emptyClump;
     386        }
     387
     388        if (peaks->n == 0)
     389        {
    414390            psLogMsg ("psphot", 3, "failed to find a peak in the PSF clump image\n");
    415391            if (nValid == 0) {
     
    418394                psLogMsg ("psphot", 3, "no significant peak\n");
    419395            }
     396            psFree (peaks);
    420397            return (emptyClump);
    421398        }
     
    524501*****************************************************************************/
    525502
    526 bool pmSourceRoughClass(psRegion *region, psArray *sources, psMetadata *recipe, pmPSFClump clump, psImageMaskType maskSat)
     503bool pmSourceRoughClass(psRegion *region, psArray *sources, float PSF_SN_LIM, float PSF_CLUMP_NSIGMA, pmPSFClump clump, psImageMaskType maskSat)
    527504{
    528505    psTrace("psModules.objects", 10, "---- begin ----");
    529506
    530507    PS_ASSERT_PTR_NON_NULL(sources, false);
    531     PS_ASSERT_PTR_NON_NULL(recipe, false);
    532508
    533509    int Nsat     = 0;
     
    542518    psVector *starsn_peaks = psVectorAllocEmpty (sources->n, PS_TYPE_F32);
    543519    psVector *starsn_moments = psVectorAllocEmpty (sources->n, PS_TYPE_F32);
    544 
    545     // get basic parameters, or set defaults
    546     bool status;
    547     float PSF_SN_LIM = psMetadataLookupF32 (&status, recipe, "PSF_SN_LIM");
    548     if (!status) PSF_SN_LIM = 20.0;
    549     float PSF_CLUMP_NSIGMA = psMetadataLookupF32 (&status, recipe, "PSF_CLUMP_NSIGMA");
    550     if (!status) PSF_CLUMP_NSIGMA = 1.5;
    551 
    552     // float INNER_RADIUS = psMetadataLookupF32 (&status, recipe, "SKY_INNER_RADIUS");
    553520
    554521    pmSourceMode noMoments = PM_SOURCE_MODE_MOMENTS_FAILURE | PM_SOURCE_MODE_SKYVAR_FAILURE | PM_SOURCE_MODE_SKY_FAILURE | PM_SOURCE_MODE_BELOW_MOMENTS_SN;
Note: See TracChangeset for help on using the changeset viewer.