IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Feb 3, 2008, 12:04:47 PM (18 years ago)
Author:
eugene
Message:

adding extended source output table

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psModules/src/objects/pmSourceIO_PS1_DEV_1.c

    r15980 r16294  
    33 *  @author EAM, IfA
    44 *
    5  *  @version $Revision: 1.7 $ $Name: not supported by cvs2svn $
    6  *  @date $Date: 2008-01-02 20:39:04 $
     5 *  @version $Revision: 1.8 $ $Name: not supported by cvs2svn $
     6 *  @date $Date: 2008-02-03 22:04:47 $
    77 *
    88 *  Copyright 2004 Maui High Performance Computing Center, University of Hawaii
     
    284284    // we write out all sources, regardless of quality.  the source flags tell us the state
    285285    for (i = 0; i < sources->n; i++) {
    286         pmSource *source = (pmSource *) sources->data[i];
    287         source->seq = i;
     286        // source->seq is set during the PSF output step, which must be called
     287        // XXX test here if seq is set?
    288288
    289289        // skip source if it is not a ext sourc
    290 
    291         // no difference between PSF and non-PSF model
    292         // XXX the PSF output should report the value for the psf, not the ext, model
    293         pmModel *model = source->modelEXT;
     290        // XXX we have two places that extended source parameters are measured:
     291        // psphotExtendedSources, which measures the aperture-like parameters and (potentially) the psf-convolved extended source models,
     292        // psphotFitEXT, which does the simple extended source model fit (not psf-convolved)
     293        // should we require both?
     294
     295        pmSource *source = sources->data[i];
     296
     297        // choose the convolved EXT model, if available, otherwise the simple one
     298        pmModel *model = source->modelConv;
     299        if (model == NULL) {
     300            model = source->modelEXT;
     301        }
    294302        if (model == NULL) continue;
     303
     304        // XXX do we need to do this?
     305        if (source->extpars == NULL) continue;
    295306
    296307        PAR = model->params->data.F32;
     
    306317        // XXX we are not writing out the mode (flags) or the type (psf, ext, etc)
    307318        psMetadataAdd (row, PS_LIST_TAIL, "IPP_IDET",         PS_DATA_U32, "IPP detection identifier index",             source->seq);
    308         psMetadataAdd (row, PS_LIST_TAIL, "X_EXT",            PS_DATA_F32, "PSF x coordinate",                           xPos);
    309         psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT",            PS_DATA_F32, "PSF y coordinate",                           yPos);
    310         psMetadataAdd (row, PS_LIST_TAIL, "X_EXT_SIG",        PS_DATA_F32, "Sigma in PSF x coordinate",                  xErr);
    311         psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT_SIG",        PS_DATA_F32, "Sigma in PSF y coordinate",                  yErr);
    312         psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG",     PS_DATA_F32, "PSF fit instrumental magnitude",             PS_MIN (99.0, source->extMag));
    313         // XXX need to calculate psfMag, psfMagErr, extMag, extMagErr...
    314         psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        PS_MIN (99.0, source->errMag));
     319        psMetadataAdd (row, PS_LIST_TAIL, "X_EXT",            PS_DATA_F32, "EXT model x coordinate",                     xPos);
     320        psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT",            PS_DATA_F32, "EXT model y coordinate",                     yPos);
     321        psMetadataAdd (row, PS_LIST_TAIL, "X_EXT_SIG",        PS_DATA_F32, "Sigma in EXT x coordinate",                  xErr);
     322        psMetadataAdd (row, PS_LIST_TAIL, "Y_EXT_SIG",        PS_DATA_F32, "Sigma in EXT y coordinate",                  yErr);
     323        psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG",     PS_DATA_F32, "EXT fit instrumental magnitude",             source->extMag);
     324        psMetadataAdd (row, PS_LIST_TAIL, "EXT_INST_MAG_SIG", PS_DATA_F32, "Sigma of PSF instrumental magnitude",        source->errMag);
    315325
    316326        // XXX these should be major and minor, not 'x' and 'y'
    317         psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_X",      PS_DATA_F32, "PSF width in x coordinate",                  axes.major);
    318         psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_Y",      PS_DATA_F32, "PSF width in y coordinate",                  axes.minor);
    319         psMetadataAdd (row, PS_LIST_TAIL, "EXT_THETA",        PS_DATA_F32, "PSF orientation angle",                      axes.theta);
     327        psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_MAJ",    PS_DATA_F32, "EXT width in x coordinate",                  axes.major);
     328        psMetadataAdd (row, PS_LIST_TAIL, "EXT_WIDTH_MIN",    PS_DATA_F32, "EXT width in y coordinate",                  axes.minor);
     329        psMetadataAdd (row, PS_LIST_TAIL, "EXT_THETA",        PS_DATA_F32, "EXT orientation angle",                      axes.theta);
     330
     331        // XXX at the moment, this will be a fixed size table, but perhaps have multiple output formats depending on what is measured?
    320332
    321333        // other values that I need to report:
    322334        // R, Mag Petrosian, .....
     335        if (source->extpars) {
     336
     337            // Petrosian measurements
     338            pmSourcePetrosianValues *petrosian = source->extpars->petrosian;
     339            if (petrosian) {
     340                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG",        PS_DATA_F32, "Petrosian Magnitude",       petrosian->mag);
     341                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_MAG_ERR",    PS_DATA_F32, "Petrosian Magnitude Error", petrosian->magErr);
     342                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_RADIUS",     PS_DATA_F32, "Petrosian Radius",          petrosian->rad);
     343                psMetadataAdd (row, PS_LIST_TAIL, "PETRO_RADIUS_ERR", PS_DATA_F32, "Petrosian Radius Error",    petrosian->radErr);
     344            }
     345
     346            // Kron measurements
     347            pmSourceKronValues *kron = source->extpars->kron;
     348            if (kron) {
     349                psMetadataAdd (row, PS_LIST_TAIL, "KRON_MAG",        PS_DATA_F32, "Kron Magnitude",       kron->mag);
     350                psMetadataAdd (row, PS_LIST_TAIL, "KRON_MAG_ERR",    PS_DATA_F32, "Kron Magnitude Error", kron->magErr);
     351                psMetadataAdd (row, PS_LIST_TAIL, "KRON_RADIUS",     PS_DATA_F32, "Kron Radius",          kron->rad);
     352                psMetadataAdd (row, PS_LIST_TAIL, "KRON_RADIUS_ERR", PS_DATA_F32, "Kron Radius Error",    kron->radErr);
     353            }
     354
     355            // Isophot measurements
     356            // XXX insert header data: isophotal level
     357            pmSourceIsophotalValues *isophot = source->extpars->isophot;
     358            if (isophot) {
     359                psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_MAG",        PS_DATA_F32, "Isophot Magnitude",       isophot->mag);
     360                psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_MAG_ERR",    PS_DATA_F32, "Isophot Magnitude Error", isophot->magErr);
     361                psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_RADIUS",     PS_DATA_F32, "Isophot Radius",          isophot->rad);
     362                psMetadataAdd (row, PS_LIST_TAIL, "ISOPHOT_RADIUS_ERR", PS_DATA_F32, "Isophot Radius Error",    isophot->radErr);
     363            }
     364
     365            pmSourceAnnuli *annuli = source->extpars->annuli;
     366            if (annuli) {
     367                psVector *fluxVal = annuli->flux;
     368                psVector *fluxErr = annuli->fluxErr;
     369                psVector *fluxVar = annuli->fluxVar;
     370
     371                for (int j = 0; j < fluxVal->n; j++) {
     372                    char name[32];
     373                    sprintf (name, "FLUX_VAL_R_%02d", j);
     374                    psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux value in annulus", fluxVal->data.F32[j]);
     375                    sprintf (name, "FLUX_ERR_R_%02d", j);
     376                    psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux error in annulus", fluxErr->data.F32[j]);
     377                    sprintf (name, "FLUX_VAR_R_%02d", j);
     378                    psMetadataAdd (row, PS_LIST_TAIL, name, PS_DATA_F32, "flux stdev in annulus", fluxVar->data.F32[j]);
     379                }
     380            }
     381        }
    323382
    324383        psArrayAdd (table, 100, row);
Note: See TracChangeset for help on using the changeset viewer.