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/psphot/src/psphotEnsemblePSF.c

    r9270 r9527  
    3737    // psRegion AnalysisRegion = psRegionForImage (readout->image, psRegionFromString (region));
    3838    if (psRegionIsNaN (AnalysisRegion)) psAbort ("psphot", "analysis region mis-defined");
     39
     40    const bool CONSTANT_PHOTOMETRIC_WEIGHTS =
     41        psMetadataLookupBool(&status, recipe, "CONSTANT_PHOTOMETRIC_WEIGHTS");
     42    if (!status) {
     43        psAbort(PS_FILE_LINE, "You must provide a value for the BOOL recipe CONSTANT_PHOTOMETRIC_WEIGHTS");
     44    }
    3945
    4046    for (int i = 0; i < sources->n; i++) {
     
    6874        pmModel *modelEXT = pmSourceModelGuess (inSource, psf->type);
    6975        if (inSource->mode &  PM_SOURCE_MODE_SATSTAR) {
    70             modelEXT->params->data.F32[2] = inSource->moments->x;
    71             modelEXT->params->data.F32[3] = inSource->moments->y;
     76            modelEXT->params->data.F32[PM_PAR_XPOS] = inSource->moments->x;
     77            modelEXT->params->data.F32[PM_PAR_YPOS] = inSource->moments->y;
    7278        } else {
    7379            // peak-up on peak (for non-sat objects)
     
    8187
    8288            psTrace ("psphotEnsemblePSF", 5, "peak coord: %f %f -> %f %f\n",
    83                      modelEXT->params->data.F32[2], modelEXT->params->data.F32[3], min.x + ix, min.y + iy);
     89                     modelEXT->params->data.F32[PM_PAR_XPOS], modelEXT->params->data.F32[PM_PAR_YPOS], min.x + ix, min.y + iy);
    8490           
    8591            // if min point is too deviant, keep the old value
    8692            if ((fabs(min.x) < 1.5) && (fabs(min.y) < 1.5)) {
    87                 modelEXT->params->data.F32[2] = min.x + ix;
    88                 modelEXT->params->data.F32[3] = min.y + iy;
     93                modelEXT->params->data.F32[PM_PAR_XPOS] = min.x + ix;
     94                modelEXT->params->data.F32[PM_PAR_YPOS] = min.y + iy;
    8995            }
    9096            psFree (bicube);
     
    96102
    97103        // save the original coords
    98         x = model->params->data.F32[2];
    99         y = model->params->data.F32[3];
     104        x = model->params->data.F32[PM_PAR_XPOS];
     105        y = model->params->data.F32[PM_PAR_YPOS];
    100106
    101107        // set the fit radius based on the object flux limit and the model
     
    112118
    113119        // set model to unit peak, zero sky (we assume sky is subtracted)
    114         model->params->data.F32[0] = 0.0;
    115         model->params->data.F32[1] = 1.0;
     120        model->params->data.F32[PM_PAR_SKY] = 0.0;
     121        model->params->data.F32[PM_PAR_FLUX] = 1.0;
    116122
    117123        // fill in the model pixel values
     
    143149
    144150        // scale by diagonal element (auto-cross-product)
    145         r = pmSourceCrossProduct (Mi, Mi);
     151        r = pmSourceCrossProduct (Mi, Mi, CONSTANT_PHOTOMETRIC_WEIGHTS);
    146152        weight->data.F32[i] = r;
    147153
     
    149155
    150156        // find the image x model value
    151         f = pmSourceCrossProduct (Fi, Mi);
     157        f = pmSourceCrossProduct (Fi, Mi, CONSTANT_PHOTOMETRIC_WEIGHTS);
    152158        psSparseVectorElement (sparse, i, f / r);
    153159
     
    163169           
    164170            // got an overlap; calculate cross-product and add to output array
    165             f = pmSourceCrossProduct (Mi, Mj);
     171            f = pmSourceCrossProduct (Mi, Mj, CONSTANT_PHOTOMETRIC_WEIGHTS);
    166172            psSparseMatrixElement (sparse, j, i, f / r);
    167173        }
     
    194200            psAbort ("psphot", "ensemble source is nan");
    195201        }
    196         Fi->modelPSF->params->data.F32[1] = norm->data.F32[i];
    197         Fi->modelPSF->dparams->data.F32[1] = sqrt(sqrt(2) * norm->data.F32[i] / (sparse->Bfj->data.F32[i] * weight->data.F32[i]));
     202        Fi->modelPSF->params->data.F32[PM_PAR_FLUX] = norm->data.F32[i];
     203        Fi->modelPSF->dparams->data.F32[PM_PAR_FLUX] = sqrt(sqrt(2) * norm->data.F32[i] / (sparse->Bfj->data.F32[i] * weight->data.F32[i]));
    198204        // XXX EAM : this factor of sqrt(2) makes the errors consistent, but I don't understand it
    199205
     
    210216        pmModel *model = Fi->modelPSF;
    211217
    212         x = model->params->data.F32[2];
    213         y = model->params->data.F32[3];
     218        x = model->params->data.F32[PM_PAR_XPOS];
     219        y = model->params->data.F32[PM_PAR_YPOS];
    214220
    215221        psImageKeepCircle (Fi->mask, x, y, model->radiusTMP, "OR", PM_MASK_MARK);
Note: See TracChangeset for help on using the changeset viewer.