- Timestamp:
- Jun 7, 2014, 5:40:37 AM (12 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/eam_branches/ipp-20140423/psModules/src/objects/pmSourceIO_CMF.c.in
r36623 r36829 482 482 } 483 483 484 #ifdef SORT_EXTENSIONS_BY_FLUX 484 485 // let's write these out in S/N order 485 486 sources = psArraySort (sources, pmSourceSortByFlux); 487 #endif 486 488 487 489 table = psArrayAllocEmpty (sources->n); … … 821 823 psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "xsrc table extension", extname); 822 824 825 #ifdef SORT_EXTENSIONS_BY_FLUX 823 826 // let's write these out in S/N order 824 827 sources = psArraySort (sources, pmSourceSortByFlux); 828 #endif 825 829 826 830 float magOffset; … … 942 946 943 947 // 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); 945 949 946 950 @>PS1_DV2@ psMetadataAddF32 (row, PS_LIST_TAIL, "POSANGLE", 0, "position angle at source (degrees)", posAngle); … … 1109 1113 model->chisq = psMetadataLookupF32(&status, row, "EXT_CHISQ"); 1110 1114 model->nDOF = psMetadataLookupF32(&status, row, "EXT_NDOF"); 1115 model->flags = psMetadataLookupS16(&status, row, "EXT_FLAGS"); 1111 1116 1112 1117 // EXT_MODEL_TYPE gives the model chosen by psphot as the best. … … 1225 1230 psVector *fwhmValues = psMetadataLookupVector(&status, readout->analysis, "STACK.PSF.FWHM.VALUES"); 1226 1231 1232 #ifdef SORT_EXTENSIONS_BY_FLUX 1227 1233 // let's write these out in S/N order 1228 1234 sources = psArraySort (sources, pmSourceSortByFlux); 1235 #endif 1229 1236 1230 1237 table = psArrayAllocEmpty (sources->n); … … 1439 1446 psMetadataAddStr (outhead, PS_LIST_TAIL, "EXTNAME", PS_META_REPLACE, "galaxy table extension", extname); 1440 1447 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); 1445 1459 1446 1460 psArray *table = psArrayAllocEmpty (sources->n); … … 1459 1473 if (source->galaxyFits == NULL) continue; 1460 1474 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 } 1485 1519 } 1486 1520 … … 1520 1554 return false; 1521 1555 } 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 } 1522 1572 1523 1573 for (long i = 0; i < numSources; i++) { … … 1541 1591 } 1542 1592 1593 int modelType = psMetadataLookupS32 (&status, row, "MODEL_TYPE"); 1543 1594 psVector *Flux = psMetadataLookupVector(&status, row, "GAL_FLUX"); 1544 1595 psVector *dFlux = psMetadataLookupVector(&status, row, "GAL_FLUX_ERR"); … … 1546 1597 1547 1598 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); 1558 1624 } 1559 1625
Note:
See TracChangeset
for help on using the changeset viewer.
