IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Apr 2, 2014, 10:50:14 AM (12 years ago)
Author:
bills
Message:

Merge with ipp-20140401 (The staticsky tag)

Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk

  • trunk/psphot/src

  • trunk/psphot/src/psphotFullForceSummaryReadout.c

    r36441 r36633  
    1414    psArray *zeroPt;
    1515    psArray *exptime;
     16    psArray *cffTable;
    1617} galaxyShapeOptions;
    1718
     
    6970            if (!setOptions(&options, readout, recipe, true)) {
    7071                psError (PS_ERR_UNKNOWN, false, "problem determining galaxy shape options.");
     72                return false;
     73            }
     74            options.cffTable = psMetadataLookupPtr(NULL, config->arguments, "CFF_TABLE");
     75            if (!options.cffTable) {
     76                psError (PS_ERR_UNKNOWN, true, "Cannot find cff table in arguments.");
    7177                return false;
    7278            }
     
    309315                // copy the best fit params to the model
    310316                psEllipseAxes axes = pmPSF_ModelToAxes(outSrc->modelEXT->params->data.F32, outSrc->modelEXT->type);
    311                 axes.major *= options->rMajor->data.F32[min_j];
    312                 axes.minor *= options->rMinor->data.F32[min_j];
     317                if (outSrc->seq >= options->cffTable->n) {
     318                    psError(PS_ERR_PROGRAMMING, true, "object sequence number %d is larger than cff table length %ld",
     319                        outSrc->seq, options->cffTable->n);
     320                    return NULL;
     321                }
     322                psMetadata *row = options->cffTable->data[outSrc->seq];
     323                if (!row) {
     324                    psError (PS_ERR_PROGRAMMING, true, "NO cff data for object %d", outSrc->seq);
     325                    psFree(outSrc);
     326                    return NULL;
     327                }
     328                bool mdok;
     329                psF32 rMajor = psMetadataLookupF32(&mdok, row, "R_MAJOR");
     330                if (!mdok) {
     331                    psError (PS_ERR_PROGRAMMING, true, "can't find R_MAJOR for object %d", outSrc->seq);
     332                    psFree(outSrc);
     333                    return NULL;
     334                }
     335                psF32 rMinor = psMetadataLookupF32(&mdok, row, "R_MINOR");
     336                if (!mdok) {
     337                    psError (PS_ERR_PROGRAMMING, true, "can't find R_MINOR for object %d", outSrc->seq);
     338                    psFree(outSrc);
     339                    return NULL;
     340                }
     341                axes.major = rMajor * options->rMajor->data.F32[min_j];
     342                axes.minor = rMinor * options->rMinor->data.F32[min_j];
    313343                pmPSF_AxesToModel (outSrc->modelEXT->params->data.F32, axes, outSrc->modelEXT->type);
    314344                outSrc->modelEXT->chisq = minChisq;
Note: See TracChangeset for help on using the changeset viewer.