Changeset 25788 for branches/pap/ppStack/src/ppStackThread.c
- Timestamp:
- Oct 6, 2009, 1:19:44 PM (17 years ago)
- File:
-
- 1 edited
-
branches/pap/ppStack/src/ppStackThread.c (modified) (7 diffs)
Legend:
- Unmodified
- Added
- Removed
-
branches/pap/ppStack/src/ppStackThread.c
r24796 r25788 56 56 } 57 57 58 ppStackThreadData *ppStackThreadDataSetup(const ppStackOptions *options, const pmConfig *config )58 ppStackThreadData *ppStackThreadDataSetup(const ppStackOptions *options, const pmConfig *config, bool conv) 59 59 { 60 60 psAssert(options, "Require options"); … … 62 62 63 63 const psArray *cells = options->cells; // Array of input cells 64 const psArray *imageNames = options->imageNames; // Names of images to read65 const psArray *maskNames = options->maskNames; // Names of masks to read66 const psArray *varianceNames = options->varianceNames; // Names of variance maps to read67 const psArray *covariances = options->covariances; // Covariance matrices (already read)64 const psArray *imageNames = conv ? options->convImages : options->origImages; // Names of images to read 65 const psArray *maskNames = conv ? options->convMasks : NULL; // Names of masks to read 66 const psArray *varianceNames = conv ? options->convVariances : NULL; // Names of variance maps to read 67 const psArray *covariances = conv ? options->covariances : NULL; // Covariance matrices (already read) 68 68 69 69 PS_ASSERT_ARRAY_NON_NULL(cells, NULL); 70 70 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, imageNames, NULL); 71 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, maskNames, NULL); 72 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, varianceNames, NULL); 73 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, covariances, NULL); 71 if (conv) { 72 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, maskNames, NULL); 73 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, varianceNames, NULL); 74 PS_ASSERT_ARRAYS_SIZE_EQUAL(cells, covariances, NULL); 75 } 74 76 75 77 ppStackThreadData *stack = psAlloc(sizeof(ppStackThreadData)); // Thread data, to return … … 87 89 continue; 88 90 } 89 // Resolved names 90 psString imageResolved = pmConfigConvertFilename(imageNames->data[i], config, false, false); 91 psString maskResolved = pmConfigConvertFilename(maskNames->data[i], config, false, false); 92 psString varianceResolved = pmConfigConvertFilename(varianceNames->data[i], config, false, false); 93 stack->imageFits->data[i] = psFitsOpen(imageResolved, "r"); 94 stack->maskFits->data[i] = psFitsOpen(maskResolved, "r"); 95 stack->varianceFits->data[i] = psFitsOpen(varianceResolved, "r"); 96 psFree(imageResolved); 97 psFree(maskResolved); 98 psFree(varianceResolved); 99 if (!stack->imageFits->data[i] || !stack->maskFits->data[i] || !stack->varianceFits->data[i]) { 100 psError(PS_ERR_UNKNOWN, false, "Unable to open convolved files %s, %s, %s", 101 (char*)imageNames->data[i], (char*)maskNames->data[i], (char*)varianceNames->data[i]); 102 return NULL; 103 } 91 92 // Open an image 93 #define IMAGE_OPEN(NAME, FITS) \ 94 if (NAME) { \ 95 psString resolved = pmConfigConvertFilename(NAME, config, false, false); \ 96 FITS = psFitsOpen(resolved, "r"); \ 97 if (!(FITS)) { \ 98 psError(PS_ERR_IO, false, "Unable to open file %s", (char*)(NAME)); \ 99 psFree(resolved); \ 100 return NULL; \ 101 } \ 102 psFree(resolved); \ 103 } 104 105 IMAGE_OPEN(imageNames->data[i], stack->imageFits->data[i]); 106 IMAGE_OPEN(maskNames->data[i], stack->maskFits->data[i]); 107 IMAGE_OPEN(varianceNames->data[i], stack->varianceFits->data[i]); 104 108 } 105 109 … … 116 120 } 117 121 pmReadout *ro = pmReadoutAlloc(cell); // Readout for thread 118 ro->covariance = psMemIncrRefCounter(covariances->data[j]); 122 if (conv) { 123 ro->covariance = psMemIncrRefCounter(covariances->data[j]); 124 } 119 125 readouts->data[j] = ro; 120 126 } … … 187 193 188 194 189 int zMax = 0;195 int zMax = 0; 190 196 bool keepReading = false; 191 if (pmReadoutMore(ro, imageFits, 0, &zMax, rows, config)) { 197 198 if (imageFits && pmReadoutMore(ro, imageFits, 0, &zMax, rows, config)) { 192 199 keepReading = true; 193 200 if (!pmReadoutReadChunk(ro, imageFits, 0, NULL, rows, overlap, config)) { … … 199 206 } 200 207 201 if ( pmReadoutMoreMask(ro, maskFits, 0, &zMax, rows, config)) {208 if (maskFits && pmReadoutMoreMask(ro, maskFits, 0, &zMax, rows, config)) { 202 209 keepReading = true; 203 210 if (!pmReadoutReadChunkMask(ro, maskFits, 0, NULL, rows, overlap, config)) { … … 209 216 } 210 217 211 if ( pmReadoutMoreVariance(ro, varianceFits, 0, &zMax, rows, config)) {218 if (varianceFits && pmReadoutMoreVariance(ro, varianceFits, 0, &zMax, rows, config)) { 212 219 keepReading = true; 213 220 if (!pmReadoutReadChunkVariance(ro, varianceFits, 0, NULL, rows, overlap, config)) {
Note:
See TracChangeset
for help on using the changeset viewer.
