IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jan 15, 2006, 8:22:34 AM (20 years ago)
Author:
magnier
Message:

added pmPSFtoMD,pmPSFfromMD

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_rel9_p0/psModules/src/objects/pmPSF.c

    r5987 r5991  
    66 *  @author EAM, IfA
    77 *
    8  *  @version $Revision: 1.3.4.2 $ $Name: not supported by cvs2svn $
    9  *  @date $Date: 2006-01-14 07:03:52 $
     8 *  @version $Revision: 1.3.4.3 $ $Name: not supported by cvs2svn $
     9 *  @date $Date: 2006-01-15 18:22:34 $
    1010 *
    1111 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    179179
    180180/*****************************************************************************
    181 pmModelFromPSF (*modelFLT, *psf):  use the model position parameters to
     181pmModelFromPSF (*modelEXT, *psf):  use the model position parameters to
    182182construct a realization of the PSF model at the object coordinates
    183183 *****************************************************************************/
    184 pmModel *pmModelFromPSF (pmModel *modelFLT, pmPSF *psf)
    185 {
    186 
    187     // need to define the relationship between the modelFLT and modelPSF ?
     184pmModel *pmModelFromPSF (pmModel *modelEXT, pmPSF *psf)
     185{
     186
     187    // need to define the relationship between the modelEXT and modelPSF ?
    188188
    189189    // find function used to set the model parameters
     
    194194
    195195    // set model parameters for this source based on PSF information
    196     modelFromPSFFunc (modelPSF, modelFLT, psf);
     196    modelFromPSFFunc (modelPSF, modelEXT, psf);
    197197
    198198    return (modelPSF);
     
    296296    return false;
    297297}
     298
     299psMetadata *pmPSFtoMD (psMetadata *metadata, pmPSF *psf)
     300{
     301
     302    if (metadata == NULL) {
     303        metadata = psMetadataAlloc ();
     304    }
     305
     306    char *modelName = pmModelGetType (psf->type);
     307    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_MODEL_NAME", PS_DATA_STRING, "PSF model name", modelName);
     308
     309    int nPar = pmModelParameterCount (psf->type)    ;
     310    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_MODEL_NPAR", PS_DATA_S32, "PSF model parameter count", nPar);
     311
     312    for (int i = 0; i < nPar - 4; i++) {
     313        psPolynomial2D *poly = psf->params->data[i];
     314        psPolynomial2DtoMD (metadata, poly, "PSF_PAR%02d", i);
     315    }
     316    psPolynomial4DtoMD (metadata, psf->ApTrend, "APTREND");
     317
     318    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_AP_RESID", PS_DATA_F32, "aperture residual", psf->ApResid);
     319    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_dAP_RESID", PS_DATA_F32, "aperture residual scatter", psf->dApResid);
     320    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_SKY_BIAS", PS_DATA_F32, "sky bias level", psf->skyBias);
     321
     322    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_CHISQ", PS_DATA_F32, "chi-square for fit", psf->chisq);
     323    psMetadataAdd (metadata, PS_LIST_TAIL, "PSF_NSTARS", PS_DATA_S32, "number of stars used to measure PSF", psf->nPSFstars);
     324
     325    return metadata;
     326}
     327
     328pmPSF *pmPSFfromMD (psMetadata *metadata)
     329{
     330
     331    bool status;
     332    char keyword[80];
     333
     334    char *modelName = psMetadataLookupPtr (&status, metadata, "PSF_MODEL_NAME");
     335    pmModelType type = pmModelSetType (modelName);
     336
     337    pmPSF *psf = pmPSFAlloc (type);
     338
     339    int nPar = psMetadataLookupS32 (&status, metadata, "PSF_MODEL_NPAR");
     340    if (nPar != pmModelParameterCount (psf->type))
     341        psAbort ("read PSF" , "mismatch model par count");
     342
     343    for (int i = 0; i < nPar - 4; i++) {
     344        sprintf (keyword, "PSF_PAR%02d", i);
     345        psMetadata *folder = psMetadataLookupPtr (&status, metadata, keyword);
     346        psPolynomial2D *poly = psPolynomial2DfromMD (folder);
     347        psFree (psf->params->data[i]);
     348        psf->params->data[i] = poly;
     349    }
     350    sprintf (keyword, "APTREND");
     351    psMetadata *folder = psMetadataLookupPtr (&status, metadata, keyword);
     352    psPolynomial4D *poly = psPolynomial4DfromMD (folder);
     353    psFree (psf->ApTrend);
     354    psf->ApTrend = poly;
     355
     356    psf->ApResid = psMetadataLookupF32 (&status, metadata, "PSF_AP_RESID");
     357    psf->dApResid = psMetadataLookupF32 (&status, metadata, "PSF_dAP_RESID");
     358    psf->skyBias = psMetadataLookupF32 (&status, metadata, "PSF_SKY_BIAS");
     359
     360    psf->chisq = psMetadataLookupF32 (&status, metadata, "PSF_CHISQ");
     361    psf->nPSFstars = psMetadataLookupS32 (&status, metadata, "PSF_NSTARS");
     362
     363    psFree (metadata);
     364    return (psf);
     365}
Note: See TracChangeset for help on using the changeset viewer.