IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 14619


Ignore:
Timestamp:
Aug 22, 2007, 3:09:08 PM (19 years ago)
Author:
eugene
Message:

update to pmModel apis: no longer need void * types in embedded functions

Location:
branches/eam_branch_20070817/psphot/src/models
Files:
2 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branch_20070817/psphot/src/models/pmModel_STRAIL.c

    r14545 r14619  
    475475 
    476476//fixed I think...no good way of guessing as far as I can tell
    477 bool PM_MODEL_GUESS (void *inModel, void *inSource)
     477bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
    478478{
    479     pmModel *model = inModel;
    480     pmSource *source = inSource;
    481 
    482479    pmMoments *Smoments = source->moments;
    483480    psF32     *params  = model->params->data.F32;
     
    520517 
    521518//fixed
    522 bool PM_MODEL_FROM_PSF (void *inModelPSF, void *inModelFLT, void *inPSF)
     519bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf)
    523520{
    524     pmModel *modelPSF = inModelPSF;
    525     pmModel *modelFLT = inModelFLT;
    526     pmPSF *psf = inPSF;
    527  
    528521    psF32 *out = modelPSF->params->data.F32;
    529522    psF32 *in  = modelFLT->params->data.F32;
     
    537530 
    538531    for (int i = 4; i < 7; i++) {
    539       psPolynomial2D *poly = psf->params_NEW->data[i-4];
     532      psPolynomial2D *poly = psf->params->data[i-4];
    540533        out[i] = psPolynomial2DEval (poly, out[2], out[3]);
    541534    }
     
    545538// construct the PSF model from the FLT model and the psf
    546539// XXX is this sufficiently general do be a global function, not a pmModelClass function?
    547 bool PM_MODEL_PARAMS_FROM_PSF (void *inModel, void *inPSF, float Xo, float Yo, float Io)
     540bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io)
    548541{
    549     pmModel *model = inModel;
    550     pmPSF *psf = inPSF;
    551 
    552542    psF32 *PAR = model->params->data.F32;
    553543
    554544    // we require these two parameters to exist
    555     assert (psf->params_NEW->n > PM_PAR_YPOS);
    556     assert (psf->params_NEW->n > PM_PAR_XPOS);
     545    assert (psf->params->n > PM_PAR_YPOS);
     546    assert (psf->params->n > PM_PAR_XPOS);
    557547
    558548    PAR[PM_PAR_SKY]  = 0.0;
     
    562552   
    563553    // supply the model-fitted parameters, or copy from the input
    564     for (int i = 0; i < psf->params_NEW->n; i++) {
     554    for (int i = 0; i < psf->params->n; i++) {
    565555        if (i == PM_PAR_SKY) continue;
    566         psPolynomial2D *poly = psf->params_NEW->data[i];
     556        psPolynomial2D *poly = psf->params->data[i];
    567557        assert (poly);
    568558        PAR[i] = psPolynomial2DEval(poly, Xo, Yo);
     
    579569    // apply the model limits here: this truncates excessive extrapolation
    580570    // XXX do we need to do this still?  should we put in asserts to test?
    581     for (int i = 0; i < psf->params_NEW->n; i++) {
     571    for (int i = 0; i < psf->params->n; i++) {
    582572        // apply the limits to all components or just the psf-model parameters?
    583         if (psf->params_NEW->data[i] == NULL)
     573        if (psf->params->data[i] == NULL)
    584574            continue;
    585575
     
    596586
    597587//done I think
    598 bool PM_MODEL_FIT_STATUS (void *inModel)
     588bool PM_MODEL_FIT_STATUS (pmModel *model)
    599589{
    600     pmModel *model = inModel;
    601  
    602590    psF32 dP;
    603591    bool  status;
  • branches/eam_branch_20070817/psphot/src/models/pmModel_TEST1.c

    r14545 r14619  
    123123
    124124// make an initial guess for parameters
    125 bool PM_MODEL_GUESS (void *inModel, void *inSource)
    126 {
    127     pmModel *model = inModel;
    128     pmSource *source = inSource;
    129 
     125bool PM_MODEL_GUESS (pmModel *model, pmSource *source)
     126{
    130127    pmMoments *moments = source->moments;
    131128    psF32     *PAR  = model->params->data.F32;
     
    207204}
    208205
    209 bool PM_MODEL_FROM_PSF (void *inModelPSF, void *inModelFLT, void *inPSF)
    210 {
    211     pmModel *modelPSF = inModelPSF;
    212     pmModel *modelFLT = inModelFLT;
    213     pmPSF *psf = inPSF;
    214 
     206bool PM_MODEL_FROM_PSF (pmModel *modelPSF, pmModel *modelFLT, pmPSF *psf)
     207{
    215208    psF32 *out = modelPSF->params->data.F32;
    216209    psF32 *in  = modelFLT->params->data.F32;
    217210
    218211    // we require these two parameters to exist
    219     assert (psf->params_NEW->n > PM_PAR_YPOS);
    220     assert (psf->params_NEW->n > PM_PAR_XPOS);
    221 
    222     for (int i = 0; i < psf->params_NEW->n; i++) {
    223         if (psf->params_NEW->data[i] == NULL) {
     212    assert (psf->params->n > PM_PAR_YPOS);
     213    assert (psf->params->n > PM_PAR_XPOS);
     214
     215    for (int i = 0; i < psf->params->n; i++) {
     216        if (psf->params->data[i] == NULL) {
    224217            out[i] = in[i];
    225218        } else {           
    226             psPolynomial2D *poly = psf->params_NEW->data[i];
     219            psPolynomial2D *poly = psf->params->data[i];
    227220            out[i] = psPolynomial2DEval(poly, in[PM_PAR_XPOS], in[PM_PAR_YPOS]);
    228221        }
     
    237230// construct the PSF model from the FLT model and the psf
    238231// XXX is this sufficiently general do be a global function, not a pmModelClass function?
    239 bool PM_MODEL_PARAMS_FROM_PSF (void *inModel, void *inPSF, float Xo, float Yo, float Io)
    240 {
    241     pmModel *model = inModel;
    242     pmPSF *psf = inPSF;
    243 
     232bool PM_MODEL_PARAMS_FROM_PSF (pmModel *model, pmPSF *psf, float Xo, float Yo, float Io)
     233{
    244234    psF32 *PAR = model->params->data.F32;
    245235
    246236    // we require these two parameters to exist
    247     assert (psf->params_NEW->n > PM_PAR_YPOS);
    248     assert (psf->params_NEW->n > PM_PAR_XPOS);
     237    assert (psf->params->n > PM_PAR_YPOS);
     238    assert (psf->params->n > PM_PAR_XPOS);
    249239
    250240    PAR[PM_PAR_SKY]  = 0.0;
     
    254244   
    255245    // supply the model-fitted parameters, or copy from the input
    256     for (int i = 0; i < psf->params_NEW->n; i++) {
     246    for (int i = 0; i < psf->params->n; i++) {
    257247        if (i == PM_PAR_SKY) continue;
    258         psPolynomial2D *poly = psf->params_NEW->data[i];
     248        psPolynomial2D *poly = psf->params->data[i];
    259249        assert (poly);
    260250        PAR[i] = psPolynomial2DEval(poly, Xo, Yo);
     
    271261    // apply the model limits here: this truncates excessive extrapolation
    272262    // XXX do we need to do this still?  should we put in asserts to test?
    273     for (int i = 0; i < psf->params_NEW->n; i++) {
     263    for (int i = 0; i < psf->params->n; i++) {
    274264        // apply the limits to all components or just the psf-model parameters?
    275         if (psf->params_NEW->data[i] == NULL)
     265        if (psf->params->data[i] == NULL)
    276266            continue;
    277267
     
    290280// this test is invalid if the parameters are derived
    291281// from the PSF model
    292 bool PM_MODEL_FIT_STATUS (void *inModel)
    293 {
    294     pmModel *model = inModel;
    295 
     282bool PM_MODEL_FIT_STATUS (pmModel *model)
     283{
    296284    psF32 dP;
    297285    bool  status;
Note: See TracChangeset for help on using the changeset viewer.