IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Nov 8, 2011, 2:56:56 PM (15 years ago)
Author:
eugene
Message:

add unofficial PS1_V4 output format (not yet standard); add clean radial profile to find sky limit; use sky limit to control kron analysis window; fix thread / memory problem for radial photometry; fix object matching for forced psf photometry; fix object matching to get the right matches

Location:
trunk/psphot
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot

  • trunk/psphot/src/psphotStackObjects.c

    r32348 r32633  
    7070
    7171    // S/N limit to perform full non-linear fits
    72     float SN_LIM = psMetadataLookupF32 (&status, recipe, "EXTENDED_SOURCE_SN_LIM");
     72    float SN_LIM_PETRO  = psMetadataLookupF32 (&status, recipe, "EXTENDED_SOURCE_SN_LIM");
     73    float SN_LIM_RADIAL = psMetadataLookupF32 (&status, recipe, "RADIAL_APERTURES_SN_LIM");
    7374
    7475    bool doPetroStars   = psMetadataLookupBool (&status, recipe, "PETROSIAN_FOR_STARS");
     
    8182        // we check each source for an object and keep the object if any source is valid
    8283
    83         bool keepObject = false;
     84        bool keepObjectRadial = false;
     85        bool keepObjectPetro = false;
    8486        for (int j = 0; j < object->sources->n; j++) {
    8587
     
    9496            if (source->mode & PM_SOURCE_MODE_SATSTAR) continue;
    9597           
    96         // optionally allow non-extended objects to get petrosians as well
    97         if (!doPetroStars) {
    98             if (!(source->mode & PM_SOURCE_MODE_EXT_LIMIT)) continue;
    99             if (source->type == PM_SOURCE_TYPE_STAR) continue;
    100         }
    101 
    102             // limit selection to some SN limit
    103             // assert (source->peak); // how can a source not have a peak?
    104             // limit selection to some SN limit
    105             bool skipSource = false;
    106             if (source->mode & PM_SOURCE_MODE_EXT_LIMIT) {
    107                 skipSource = (source->moments->KronFlux < SN_LIM * source->moments->KronFluxErr);
    108             } else {
    109                 skipSource = (sqrt(source->peak->detValue) < SN_LIM);
    110             }
    111             if (skipSource) continue;
    112 
    11398            // limit selection by analysis region (this automatically apply
    11499            if (source->peak->x < AnalysisRegion.x0) continue;
     
    117102            if (source->peak->y > AnalysisRegion.y1) continue;
    118103           
    119             keepObject = true;
     104            // SN limit tests for RADIAL APERTURES:
     105            bool skipSourceRadial = false;
     106            if (source->mode & PM_SOURCE_MODE_EXT_LIMIT) {
     107                skipSourceRadial = (source->moments->KronFlux < SN_LIM_RADIAL * source->moments->KronFluxErr);
     108            } else {
     109                skipSourceRadial = (sqrt(source->peak->detValue) < SN_LIM_RADIAL);
     110            }
     111            if (!skipSourceRadial) keepObjectRadial = true;
     112
     113            // SN limit tests for PETRO
     114            bool skipSourcePetro = false;
     115            if (source->mode & PM_SOURCE_MODE_EXT_LIMIT) {
     116                skipSourcePetro = (source->moments->KronFlux < SN_LIM_PETRO * source->moments->KronFluxErr);
     117            } else {
     118                skipSourcePetro = doPetroStars ? (sqrt(source->peak->detValue) < SN_LIM_PETRO) : true;
     119            }
     120            if (!skipSourcePetro) keepObjectPetro = true;
     121
     122            keepObjectPetro = true;
    120123        }
    121124
     
    128131            // avoid the single-detection tests
    129132
    130             if (keepObject) {
    131                 source->tmpFlags |=  PM_SOURCE_TMPF_STACK_KEEP;
    132                 source->tmpFlags &= ~PM_SOURCE_TMPF_STACK_SKIP;
     133            if (keepObjectPetro) {
     134                source->tmpFlags |=  PM_SOURCE_TMPF_PETRO_KEEP;
     135                source->tmpFlags &= ~PM_SOURCE_TMPF_PETRO_SKIP;
    133136            } else {
    134                 source->tmpFlags |=  PM_SOURCE_TMPF_STACK_SKIP;
    135                 source->tmpFlags &= ~PM_SOURCE_TMPF_STACK_KEEP;
     137                source->tmpFlags |=  PM_SOURCE_TMPF_PETRO_SKIP;
     138                source->tmpFlags &= ~PM_SOURCE_TMPF_PETRO_KEEP;
     139            }       
     140
     141            if (keepObjectRadial) {
     142                source->tmpFlags |=  PM_SOURCE_TMPF_RADIAL_KEEP;
     143                source->tmpFlags &= ~PM_SOURCE_TMPF_RADIAL_SKIP;
     144            } else {
     145                source->tmpFlags |=  PM_SOURCE_TMPF_RADIAL_SKIP;
     146                source->tmpFlags &= ~PM_SOURCE_TMPF_RADIAL_KEEP;
    136147            }       
    137148        }
Note: See TracChangeset for help on using the changeset viewer.