IPP Software Navigation Tools IPP Links Communication Pan-STARRS Links

Ignore:
Timestamp:
Jun 7, 2014, 5:40:37 AM (12 years ago)
Author:
eugene
Message:

merge changes from trunk

File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/eam_branches/ipp-20140423/psModules/src/objects/pmSourceIO_CMF.c.in

    r36623 r36829  
    482482    }
    483483
     484#ifdef SORT_EXTENSIONS_BY_FLUX
    484485    // let's write these out in S/N order
    485486    sources = psArraySort (sources, pmSourceSortByFlux);
     487#endif
    486488
    487489    table = psArrayAllocEmpty (sources->n);
     
    821823    psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "xsrc table extension", extname);
    822824
     825#ifdef SORT_EXTENSIONS_BY_FLUX
    823826    // let's write these out in S/N order
    824827    sources = psArraySort (sources, pmSourceSortByFlux);
     828#endif
    825829
    826830    float magOffset;
     
    942946
    943947            // EAM : adding for PV2 outputs:
    944             @>PS1_SV1@ psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLAGS", PS_DATA_S16, "model fit flags (pmModelStatus)", source->modelEXT ? source->modelEXT->flags : 0);
     948            @>PS1_SV1@ psMetadataAdd (row, PS_LIST_TAIL, "EXT_FLAGS", PS_DATA_S16, "model fit flags (pmModelStatus)", model->flags);
    945949
    946950            @>PS1_DV2@ psMetadataAddF32 (row, PS_LIST_TAIL, "POSANGLE",   0, "position angle at source (degrees)",         posAngle);
     
    11091113        model->chisq = psMetadataLookupF32(&status, row, "EXT_CHISQ");
    11101114        model->nDOF = psMetadataLookupF32(&status, row, "EXT_NDOF");
     1115        model->flags = psMetadataLookupS16(&status, row, "EXT_FLAGS");
    11111116
    11121117        // EXT_MODEL_TYPE gives the model chosen by psphot as the best.
     
    12251230    psVector *fwhmValues = psMetadataLookupVector(&status, readout->analysis, "STACK.PSF.FWHM.VALUES");
    12261231
     1232#ifdef SORT_EXTENSIONS_BY_FLUX
    12271233    // let's write these out in S/N order
    12281234    sources = psArraySort (sources, pmSourceSortByFlux);
     1235#endif
    12291236
    12301237    table = psArrayAllocEmpty (sources->n);
     
    14391446    psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "galaxy table extension", extname);
    14401447
    1441     psMetadataAddStr (outhead, PS_LIST_TAIL, "HI", PS_META_REPLACE, "does this get through?", "THERE");
    1442 
    1443     // let's write these out in S/N order
    1444     sources = psArraySort (sources, pmSourceSortByFlux);
     1448    psF32 Q = psMetadataLookupF32(&status, recipe, "GALAXY_SHAPES_Q");
     1449    psMetadataAddF32 (outhead, PS_LIST_TAIL, "GALAXY_SHAPES_Q", PS_META_REPLACE, "", Q);
     1450
     1451    psF32 NSigma = psMetadataLookupF32(&status, recipe, "GALAXY_SHAPES_NSIGMA");
     1452    psMetadataAddF32 (outhead, PS_LIST_TAIL, "GALAXY_SHAPES_NSIGMA", PS_META_REPLACE, "", NSigma);
     1453
     1454    psF32 clampSN = psMetadataLookupF32(&status, recipe, "GALAXY_SHAPES_CLAMP_SN");
     1455    psMetadataAddF32 (outhead, PS_LIST_TAIL, "GALAXY_SHAPES_CLAMP_SN", PS_META_REPLACE, "", clampSN);
     1456
     1457    // They are probably already in this order but ...
     1458    sources = psArraySort (sources, pmSourceSortBySeq);
    14451459
    14461460    psArray *table = psArrayAllocEmpty (sources->n);
     
    14591473        if (source->galaxyFits == NULL) continue;
    14601474
    1461         pmModel *model = source->modelFits->data[0];
    1462         if (!model) return false;
    1463 
    1464         // X,Y coordinates are stored with the model parameters
    1465         psF32 *PAR = model->params->data.F32;
    1466 
    1467         psMetadata *row = psMetadataAlloc ();
    1468 
    1469         // we write out the x,y positions so people can link to the psf either way (position or ID)
    1470         psMetadataAddU32 (row, PS_LIST_TAIL, "IPP_IDET",         0, "IPP detection identifier index", source->seq);
    1471         psMetadataAddF32 (row, PS_LIST_TAIL, "X_FIT",            0, "model x coordinate",             PAR[PM_PAR_XPOS]);
    1472         psMetadataAddF32 (row, PS_LIST_TAIL, "Y_FIT",            0, "model y coordinate",             PAR[PM_PAR_YPOS]);
    1473         psMetadataAddF32 (row, PS_LIST_TAIL, "NPIX",             0, "number of pixels for fits",      source->galaxyFits->nPix);
    1474 
    1475         psVector *Flux = source->galaxyFits->Flux;
    1476         psVector *dFlux = source->galaxyFits->dFlux;
    1477         psVector *chisq = source->galaxyFits->chisq;
    1478 
    1479         psMetadataAddVector (row, PS_LIST_TAIL, "GAL_FLUX",     PS_META_REPLACE, "normalization for galaxy flux", Flux);
    1480         psMetadataAddVector (row, PS_LIST_TAIL, "GAL_FLUX_ERR", PS_META_REPLACE, "error on normalization", dFlux);
    1481         psMetadataAddVector (row, PS_LIST_TAIL, "GAL_CHISQ",    PS_META_REPLACE, "galaxy fit chisq", chisq);
    1482 
    1483         psArrayAdd (table, 100, row);
    1484         psFree (row);
     1475        for (int iModel = 0; iModel < source->modelFits->n; iModel++) {
     1476            pmModel *model = source->modelFits->data[iModel];
     1477            if (!model) continue;
     1478
     1479            pmSourceGalaxyFits *galaxyFits = NULL;
     1480            for (int iFit = 0; iFit < source->galaxyFits->n; iFit++) {
     1481                galaxyFits = source->galaxyFits->data[iFit];
     1482                if (model->type == galaxyFits->modelType) break;
     1483                galaxyFits = NULL;
     1484            }
     1485
     1486            if (!galaxyFits) continue;
     1487
     1488            // X,Y coordinates are stored with the model parameters
     1489            psF32 *PAR = model->params->data.F32;
     1490
     1491            psMetadata *row = psMetadataAlloc ();
     1492
     1493            // we write out the x,y positions so people can link to the psf either way (position or ID)
     1494            psMetadataAddU32 (row, PS_LIST_TAIL, "IPP_IDET",         0, "IPP detection identifier index", source->seq);
     1495            psMetadataAddS32 (row, PS_LIST_TAIL, "MODEL_TYPE",       0, "model type",                     galaxyFits->modelType);
     1496            psMetadataAddF32 (row, PS_LIST_TAIL, "X_FIT",            0, "model x coordinate",             PAR[PM_PAR_XPOS]);
     1497            psMetadataAddF32 (row, PS_LIST_TAIL, "Y_FIT",            0, "model y coordinate",             PAR[PM_PAR_YPOS]);
     1498            psMetadataAddF32 (row, PS_LIST_TAIL, "NPIX",             0, "number of pixels for fits",      galaxyFits->nPix);
     1499            // psMetadataAddS32 (row, PS_LIST_TAIL, "REDUCED_TRIALS",   0, "source has reduced number of trials",      galaxyFits->reducedTrials);
     1500
     1501            psVector *Flux = galaxyFits->Flux;
     1502            psVector *dFlux = galaxyFits->dFlux;
     1503            psVector *chisq = galaxyFits->chisq;
     1504
     1505            psMetadataAddVector (row, PS_LIST_TAIL, "GAL_FLUX",     PS_META_REPLACE, "normalization for galaxy flux", Flux);
     1506            psMetadataAddVector (row, PS_LIST_TAIL, "GAL_FLUX_ERR", PS_META_REPLACE, "error on normalization", dFlux);
     1507            psMetadataAddVector (row, PS_LIST_TAIL, "GAL_CHISQ",    PS_META_REPLACE, "galaxy fit chisq", chisq);
     1508
     1509            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MAJOR_MIN",    0, "fractional major axis min",      galaxyFits->fRmajorMin);
     1510            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MAJOR_MAX",    0, "fractional major axis max",      galaxyFits->fRmajorMax);
     1511            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MAJOR_DEL",    0, "fractional major axis max",      galaxyFits->fRmajorDel);
     1512            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MINOR_MIN",    0, "fractional minor axis min",      galaxyFits->fRminorMin);
     1513            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MINOR_MAX",    0, "fractional minor axis max",      galaxyFits->fRminorMax);
     1514            psMetadataAddF32 (row, PS_LIST_TAIL, "FR_MINOR_DEL",    0, "fractional minor axis max",      galaxyFits->fRminorDel);
     1515
     1516            psArrayAdd (table, 100, row);
     1517            psFree (row);
     1518        }
    14851519    }
    14861520
     
    15201554        return false;
    15211555    }
     1556    if (!readout->analysis) {
     1557        readout->analysis = psMetadataAlloc();
     1558    }
     1559    psF32 Q = psMetadataLookupF32(&status, tableHeader, "GALAXY_SHAPES_Q");
     1560    // XXX: turn this into an assert once we're done
     1561    if (status) {
     1562        psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "GALAXY_SHAPES_Q", PS_META_REPLACE, "", Q);
     1563
     1564        psF32 NSigma = psMetadataLookupF32(&status, tableHeader, "GALAXY_SHAPES_NSIGMA");
     1565        psAssert(status, "missing GALAXY_SHAPES_NSIGMA");
     1566        psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "GALAXY_SHAPES_NSIGMA", PS_META_REPLACE, "", NSigma);
     1567
     1568        psF32 clampSN = psMetadataLookupF32(&status, tableHeader, "GALAXY_SHAPES_CLAMP_SN");
     1569        psAssert(status, "missing GALAXY_SHAPES_CLAMP_SN");
     1570        psMetadataAddF32 (readout->analysis, PS_LIST_TAIL, "GALAXY_SHAPES_CLAMP_SN", PS_META_REPLACE, "", clampSN);
     1571    }
    15221572
    15231573    for (long i = 0; i < numSources; i++) {
     
    15411591        }
    15421592
     1593        int modelType = psMetadataLookupS32 (&status,    row, "MODEL_TYPE");
    15431594        psVector *Flux  = psMetadataLookupVector(&status, row, "GAL_FLUX");
    15441595        psVector *dFlux = psMetadataLookupVector(&status, row, "GAL_FLUX_ERR");
     
    15461597
    15471598        if (Flux && Flux->n > 0) {
    1548             psFree(source->galaxyFits);
    1549             source->galaxyFits = pmSourceGalaxyFitsAlloc();
    1550             source->galaxyFits->nPix = psMetadataLookupF32(&status, row, "NPIX");
    1551 
    1552             psFree(source->galaxyFits->Flux);
    1553             source->galaxyFits->Flux  = psMemIncrRefCounter(Flux);
    1554             psFree(source->galaxyFits->dFlux);
    1555             source->galaxyFits->dFlux = psMemIncrRefCounter(dFlux);
    1556             psFree(source->galaxyFits->chisq);
    1557             source->galaxyFits->chisq = psMemIncrRefCounter(chisq);
     1599            if (!source->galaxyFits) {
     1600                source->galaxyFits = psArrayAllocEmpty(1);
     1601            }
     1602
     1603            pmSourceGalaxyFits *galaxyFits = pmSourceGalaxyFitsAlloc();
     1604
     1605            psArrayAdd(source->galaxyFits, 1, galaxyFits);
     1606
     1607            psFree(galaxyFits);
     1608            galaxyFits->modelType = modelType;
     1609            galaxyFits->nPix = psMetadataLookupF32(&status, row, "NPIX");
     1610
     1611            galaxyFits->fRmajorMin = psMetadataLookupF32(&status, row, "FR_MAJOR_MIN");
     1612            galaxyFits->fRmajorMax = psMetadataLookupF32(&status, row, "FR_MAJOR_MAX");
     1613            galaxyFits->fRmajorDel = psMetadataLookupF32(&status, row, "FR_MAJOR_DEL");
     1614            galaxyFits->fRminorMin = psMetadataLookupF32(&status, row, "FR_MINOR_MIN");
     1615            galaxyFits->fRminorMax = psMetadataLookupF32(&status, row, "FR_MINOR_MAX");
     1616            galaxyFits->fRminorDel = psMetadataLookupF32(&status, row, "FR_MINOR_DEL");
     1617
     1618            psFree(galaxyFits->Flux);
     1619            galaxyFits->Flux  = psMemIncrRefCounter(Flux);
     1620            psFree(galaxyFits->dFlux);
     1621            galaxyFits->dFlux = psMemIncrRefCounter(dFlux);
     1622            psFree(galaxyFits->chisq);
     1623            galaxyFits->chisq = psMemIncrRefCounter(chisq);
    15581624        }
    15591625
Note: See TracChangeset for help on using the changeset viewer.