Changeset 35610 for trunk/psModules/src/objects/pmSourceIO_CMF.c.in
- Timestamp:
- May 30, 2013, 2:29:11 PM (13 years ago)
- File:
-
- 1 edited
-
trunk/psModules/src/objects/pmSourceIO_CMF.c.in (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/objects/pmSourceIO_CMF.c.in
r35038 r35610 457 457 bool doPetrosian = psMetadataLookupBool (&status, recipe, "EXTENDED_SOURCE_PETROSIAN"); 458 458 459 psVector *radMin = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.LOWER"); 460 psVector *radMax = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.UPPER"); 459 // First look for radial bin definition in readout->analysis ... 460 psVector *radMin = psMetadataLookupPtr (&status, readout->analysis, "RADIAL.ANNULAR.BINS.LOWER"); 461 psVector *radMax = psMetadataLookupPtr (&status, readout->analysis, "RADIAL.ANNULAR.BINS.UPPER"); 462 if (!radMin) { 463 // .. if not found use the recipe values 464 radMin = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.LOWER"); 465 radMax = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.UPPER"); 466 } 467 psAssert(radMin != NULL, "unable to find RADIAL.ANNULAR.BINS.LOWER"); 468 psAssert(radMax != NULL, "unable to find RADIAL.ANNULAR.BINS.LOWER"); 461 469 psAssert (radMin->n == radMax->n, "inconsistent annular bins"); 462 470 … … 610 618 } 611 619 612 bool pmSourcesRead_CMF_@CMFMODE@_XSRC(psFits *fits, psMetadata *hduHeader, psArray *sources, long *sourceIndex) 620 static bool setRadialBinsInAnalysis(pmReadout *readout, psMetadata *tableHeader) 621 { 622 if (!readout->analysis) { 623 readout->analysis = psMetadataAlloc(); 624 } 625 626 bool status; 627 psVector *oldRMin = psMetadataLookupVector(&status, readout->analysis, "RADIAL.ANNULAR.BINS.LOWER"); 628 psVector *oldRMax = psMetadataLookupVector(&status, readout->analysis, "RADIAL.ANNULAR.BINS.UPPER"); 629 630 psVector *rMin = psVectorAllocEmpty(20, PS_TYPE_F32); 631 psVector *rMax = psVectorAllocEmpty(20, PS_TYPE_F32); 632 633 for (int i = 0; ; i++) { 634 char key [24]; 635 sprintf(key, "RMIN_%02d", i); 636 psF32 rMinVal = psMetadataLookupF32(&status, tableHeader, key); 637 if (!status) { 638 break; 639 } 640 psVectorAppend(rMin, rMinVal); 641 642 sprintf(key, "RMAX_%02d", i); 643 psF32 rMaxVal = psMetadataLookupF32(&status, tableHeader, key); 644 if (!status) { 645 break; 646 } 647 psVectorAppend(rMax, rMaxVal); 648 } 649 650 if (rMin->n != rMax->n) { 651 psError(PS_ERR_UNKNOWN, true, "number of RMIN entries %ld does not equal number of RMAX entries %ld", 652 rMin->n, rMax->n); 653 return false; 654 } 655 656 if (oldRMin) { 657 if (oldRMin->n != rMin->n) { 658 psError(PS_ERR_UNKNOWN, true, "number of RMIN entries in header: %ld does not equal number of RMAX entries in analysis: %ld", 659 rMin->n, oldRMin->n); 660 return false; 661 } 662 } else { 663 psMetadataAddVector(readout->analysis, PS_LIST_TAIL, "RADIAL.ANNULAR.BINS.LOWER", PS_META_REPLACE, "", rMin); 664 } 665 psFree(rMin); 666 667 if (oldRMax) { 668 if (oldRMax->n != rMax->n) { 669 psError(PS_ERR_UNKNOWN, true, "number of RMIN entries in header: %ld does not equal number of RMAX entries in analysis: %ld", 670 rMax->n, oldRMax->n); 671 return false; 672 } 673 } else { 674 psMetadataAddVector(readout->analysis, PS_LIST_TAIL, "RADIAL.ANNULAR.BINS.UPPER", PS_META_REPLACE, "", rMax); 675 } 676 psFree(rMax); 677 678 return true; 679 } 680 681 bool pmSourcesRead_CMF_@CMFMODE@_XSRC(psFits *fits, pmReadout *readout, psMetadata *hduHeader, psMetadata *tableHeader, psArray *sources, long *sourceIndex) 613 682 { 614 683 PS_ASSERT_PTR_NON_NULL(fits, false); … … 626 695 float exptime = psMetadataLookupF32(&status, hduHeader, "EXPTIME"); 627 696 float magOffset = zeropt + 2.5*log10(exptime); 697 698 if (!setRadialBinsInAnalysis(readout, tableHeader)) { 699 psError(PS_ERR_UNKNOWN, false, "Failed to save radial bins in analysis"); 700 return false; 701 } 628 702 629 703 for (long i = 0; i < numSources; i++) { … … 920 994 } 921 995 922 bool pmSourcesRead_CMF_@CMFMODE@_XFIT(psFits *fits, p sMetadata *hduHeader, psArray *sources, long *sourceIndex)996 bool pmSourcesRead_CMF_@CMFMODE@_XFIT(psFits *fits, pmReadout *readout, psMetadata *hduHeader, psMetadata *tableHeader, psArray *sources, long *sourceIndex) 923 997 { 924 998 PS_ASSERT_PTR_NON_NULL(fits, false); … … 1043 1117 1044 1118 // we use this just to define the output vectors (which must be present for all objects) 1045 psVector *radMin = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.LOWER"); 1046 psVector *radMax = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.UPPER"); 1119 // First look for radial bin definition in readout->analysis ... 1120 psVector *radMin = psMetadataLookupPtr (&status, readout->analysis, "RADIAL.ANNULAR.BINS.LOWER"); 1121 psVector *radMax = psMetadataLookupPtr (&status, readout->analysis, "RADIAL.ANNULAR.BINS.UPPER"); 1122 if (!radMin) { 1123 // .. if not found use the recipe values 1124 radMin = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.LOWER"); 1125 radMax = psMetadataLookupPtr (&status, recipe, "RADIAL.ANNULAR.BINS.UPPER"); 1126 } 1127 psAssert (radMin, "this must have been defined and tested earlier!"); 1047 1128 psAssert (radMax, "this must have been defined and tested earlier!"); 1048 psAssert (radMax->n, "this must have been defined and tested earlier!");1049 1129 psAssert (radMin->n == radMax->n, "inconsistent annular bins"); 1050 1130 … … 1167 1247 } 1168 1248 1169 bool pmSourcesRead_CMF_@CMFMODE@_XRAD(psFits *fits, pmReadout *readout, psMetadata *hduHeader, ps Array *sources, long *sourceIndex)1249 bool pmSourcesRead_CMF_@CMFMODE@_XRAD(psFits *fits, pmReadout *readout, psMetadata *hduHeader, psMetadata *tableHeader, psArray *sources, long *sourceIndex) 1170 1250 { 1171 1251 PS_ASSERT_PTR_NON_NULL(fits, false); … … 1176 1256 if (numSources == 0) { 1177 1257 psError(psErrorCodeLast(), false, "XRAD Table contains no entries\n"); 1258 return false; 1259 } 1260 1261 if (!setRadialBinsInAnalysis(readout, tableHeader)) { 1262 psError(PS_ERR_UNKNOWN, false, "Failed to save radial bins in analysis"); 1178 1263 return false; 1179 1264 }
Note:
See TracChangeset
for help on using the changeset viewer.
