IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Changeset 5128


Ignore:
Timestamp:
Sep 25, 2005, 9:24:29 PM (21 years ago)
Author:
eugene
Message:

cleaned up output functions

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/psphot/src/psphotOutput.c

    r5085 r5128  
    2121    }
    2222    if (!strcasecmp (outputMode, "TEXT")) {
    23         pmSourcesWriteText (imdata, outputFile, sources, psf, sky);
     23        pmSourcesWriteText (imdata, config, outputFile, sources, psf, sky);
    2424        return;
    2525    }
     
    4747}
    4848
    49 bool pmSourcesWriteText (eamReadout *imdata, char *filename, psArray *sources, pmPSF *psf, psStats *sky) {
     49bool pmSourcesWriteText (eamReadout *imdata, psMetadata *config, char *filename, psArray *sources, pmPSF *psf, psStats *sky) {
    5050
    5151    char *name = (char *) psAlloc (strlen(filename) + 10);
    5252
    5353    sprintf (name, "%s.psf.dat", filename);
    54     pmModelWritePSFs (sources, name);
     54    pmModelWritePSFs (sources, config, name, psf);
    5555
    5656    sprintf (name, "%s.flt.dat", filename);
     
    135135    }
    136136
    137     float RADIUS = psMetadataLookupF32 (&result, config, "PSF_FIT_RADIUS");
     137    float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
    138138
    139139    // write sources with models
     
    173173bool pmSourcesWriteCMP (eamReadout *imdata, psMetadata *config, char *filename, psArray *sources, pmPSF *psf, psStats *skyStats) {
    174174
    175     int i, type, status;
     175    int i, type;
    176176    pmModel *model;
    177177    psMetadataItem *mdi;
    178178    psF32 *PAR, *dPAR;
    179     float sky, dmag, apMag, fitMag, lsky;
    180     float x, y, rflux;
    181     bool result;
     179    float dmag, apResid, lsky;
     180    bool status;
    182181
    183182    // find config information for output header
    184     float RADIUS = psMetadataLookupF32 (&result, config, "PSF_FIT_RADIUS");
    185     float ZERO_POINT = psMetadataLookupF32 (&result, config, "ZERO_POINT");
    186     char *PHOTCODE = psMetadataLookupF32 (&result, config, "PHOTCODE");
     183    float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     184    float ZERO_POINT = psMetadataLookupF32 (&status, config, "ZERO_POINT");
     185    char *PHOTCODE = psMetadataLookupPtr (&status, config, "PHOTCODE");
    187186
    188187    // write necessary information to output header
     
    240239        psLineAdd (line, "%6.1f ", PAR[2]);
    241240        psLineAdd (line, "%6.1f ", PAR[3]);
    242         psLineAdd (line, "%6.3f ", source->fitMag + ZERO_POINT);
     241        psLineAdd (line, "%6.3f ", PS_MIN (32.0, source->fitMag + ZERO_POINT));
    243242        psLineAdd (line, "%03d ", (int)(1000*dmag));
    244243        psLineAdd (line, "%2d ",   type);
    245244        psLineAdd (line, "%3.1f ", lsky);
    246245        psLineAdd (line, "%6.3f ", 32.0);    // should be 'Mgal
    247         psLineAdd (line, "%6.3f ", apMag + ZERO_POINT);
     246        psLineAdd (line, "%6.3f ", PS_MIN (32.0, source->apMag + ZERO_POINT));
    248247        psLineAdd (line, "%6.2f ", PAR[4]);  // should be 'FHWM x'
    249248        psLineAdd (line, "%6.2f ", PAR[5]);  // should be 'FHWM y'
     
    264263    psMetadata *row;
    265264    psMetadata *theader;
    266     int i, type, status;
     265    int i, type;
    267266    pmModel *model;
    268267    psF32 *PAR, *dPAR;
    269     float sky, dmag, apMag, fitMag;
    270     float x, y, rflux, lsky;
    271     bool result;
     268    float dmag, lsky;
     269    bool status;
    272270
    273271    // find config information for output header
    274     float RADIUS = psMetadataLookupF32 (&result, config, "PSF_FIT_RADIUS");
    275     float ZERO_POINT = psMetadataLookupF32 (&result, config, "ZERO_POINT");
    276     char *PHOTCODE = psMetadataLookupF32 (&result, config, "PHOTCODE");
     272    float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     273    float ZERO_POINT = psMetadataLookupF32 (&status, config, "ZERO_POINT");
     274    char *PHOTCODE = psMetadataLookupPtr (&status, config, "PHOTCODE");
    277275
    278276    // write necessary information to output header
     
    319317        psMetadataAdd (row, PS_LIST_HEAD, "MAG_AP",  PS_META_F32, "", lsky);
    320318        psMetadataAdd (row, PS_LIST_HEAD, "LOG_SKY", PS_META_F32, "", 32.0);    // should be 'Mgal'
    321         psMetadataAdd (row, PS_LIST_HEAD, "FWHM_X",  PS_META_F32, "", apMag + ZERO_POINT);
     319        psMetadataAdd (row, PS_LIST_HEAD, "FWHM_X",  PS_META_F32, "", source->apMag + ZERO_POINT);
    322320        psMetadataAdd (row, PS_LIST_HEAD, "FWHM_Y",  PS_META_F32, "", PAR[4]);  // should be 'FHWM x'
    323321        psMetadataAdd (row, PS_LIST_HEAD, "THETA",   PS_META_F32, "", PAR[5]);  // should be 'FHWM y'
     
    331329    // psAbort ("psphotOutput", "FITS table output not finished");
    332330
    333     psImage *image = psImageAlloc (1, 1, PS_TYPE_F32);
     331    // psImage *image = psImageAlloc (1, 1, PS_TYPE_F32);
    334332    // XXX missing: theader = psFitsHeaderFromTable (NULL, table, "SMPFILE");
     333    // psFitsWriteImage (fits, imdata->header, image, 0);
    335334
    336335    theader = psMetadataAlloc ();
     
    339338    unlink (filename);
    340339    psFits *fits = psFitsAlloc (filename);
    341     psFitsWriteImage (fits, imdata->header, image, 0);
     340    psFitsWriteHeader (imdata->header, fits);
    342341    psFitsWriteTable (fits, theader, table);
    343342    psFree (fits);
     
    400399
    401400// dump the sources to an output file
    402 bool pmModelWritePSFs (psArray *sources, char *filename) {
    403 
    404     double dP, flux;
     401bool pmModelWritePSFs (psArray *sources, psMetadata *config, char *filename, pmPSF *psf) {
     402
     403    double dP, dmag;
    405404    int i, j;
    406405    FILE *f;
    407     psVector *params;
    408     psVector *dparams;
     406    psF32 *PAR, *dPAR;
    409407    pmModel  *model;
     408    bool status;
    410409
    411410    f = fopen (filename, "w");
     
    415414    }
    416415
    417     // write sources with models first
     416    float RADIUS = psMetadataLookupF32 (&status, config, "PSF_FIT_RADIUS");
     417
     418   // write sources with models first
    418419    for (i = 0; i < sources->n; i++) {
    419420        pmSource *source = (pmSource *) sources->data[i];
    420         model = (pmModel  *) source->modelPSF;
    421         if (model == NULL) continue;
    422421
    423422        // valid source types for this function
     
    428427
    429428    valid:
    430         params = model->params;
    431         dparams = model->dparams;
     429        model = pmSourceMagnitudes (source, psf, RADIUS);
     430        if (model == NULL) continue;
     431
     432        PAR  = model->params->data.F32;
     433        dPAR = model->dparams->data.F32;
    432434       
    433435        dP = 0;
    434         dP += PS_SQR(dparams[0].data.F32[2]);
    435         dP += PS_SQR(dparams[0].data.F32[3]);
     436        dP += PS_SQR(dPAR[2]);
     437        dP += PS_SQR(dPAR[3]);
    436438        dP = sqrt (dP);
    437439       
    438         pmModelFlux modelFluxFunc = pmModelFlux_GetFunction (model->type);
    439         flux = modelFluxFunc (params);
    440 
    441         fprintf (f, "%7.1f %7.1f  %5.1f %7.3f  %7.4f %7.4f  ",
    442                  params[0].data.F32[2],
    443                  params[0].data.F32[3],
    444                  params[0].data.F32[0],
    445                  -2.5*log10(flux),
    446                  (dparams[0].data.F32[1]/params[0].data.F32[1]),
    447                  dP);
     440        dmag = dPAR[1] / PAR[1];
     441
     442        fprintf (f, "%7.1f %7.1f  %5.1f %7.4f  %7.4f %7.4f  ",
     443                 PAR[2], PAR[3], PAR[0], source->fitMag, dmag, dP);
     444
    448445        for (j = 0; j < model->params->n - 4; j++) {
    449             fprintf (f, "%9.6f ", params[0].data.F32[j+4]);
     446            fprintf (f, "%9.6f ", PAR[j+4]);
    450447        }
    451448        fprintf (f, " : ");
    452449        for (j = 0; j < model->params->n - 4; j++) {
    453             fprintf (f, "%9.6f ", dparams[0].data.F32[j+4]);
     450            fprintf (f, "%9.6f ", dPAR[j+4]);
    454451        }
    455452        fprintf (f, ": %2d %7.3f %7.3f %7.2f %4d %2d\n",
Note: See TracChangeset for help on using the changeset viewer.