Changeset 42785 for trunk/ppMerge/src/ppMergeLoop.c
- Timestamp:
- Jan 21, 2025, 11:05:48 AM (18 months ago)
- File:
-
- 1 edited
-
trunk/ppMerge/src/ppMergeLoop.c (modified) (13 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppMerge/src/ppMergeLoop.c
r42764 r42785 39 39 bool haveVariances = psMetadataLookupBool(&mdok, arguments, "INPUTS.VARIANCES"); // Do we have variances? 40 40 41 psArray *inputs = ppMergeFileDataLevel(config, "PPMERGE.INPUT", PM_FPA_LEVEL_READOUT); // Input images 42 psArray *masks = NULL, *variances = NULL; // Input masks and variances 43 if (haveMasks) { 44 masks = ppMergeFileDataLevel(config, "PPMERGE.INPUT.MASK", PM_FPA_LEVEL_READOUT); 45 } 46 if (haveVariances) { 47 variances = ppMergeFileDataLevel(config, "PPMERGE.INPUT.VARIANCE", PM_FPA_LEVEL_READOUT); 48 } 41 psArray *inputs = ppMergeFileDataLevel(config, "PPMERGE.INPUT"); // Input images 42 psArray *masks = haveMasks ? ppMergeFileDataLevel(config, "PPMERGE.INPUT.MASK") : NULL; // Input masks 43 psArray *variances = haveVariances ? ppMergeFileDataLevel(config, "PPMERGE.INPUT.VARIANCE") : NULL; // Input variances 49 44 50 45 int nThreads = psMetadataLookupS32 (&mdok, arguments, "NTHREADS"); … … 135 130 psString darkNorm = psMetadataLookupStr(&mdok, arguments, "DARK.NORM"); ///< Dark normalisation 136 131 137 138 132 if (!ppMergeFileActivate(config, PPMERGE_FILES_ALL, true)) { 139 133 psError(PS_ERR_UNKNOWN, false, "Unable to activate files."); … … 152 146 } 153 147 154 155 148 // Average concepts across inputs 156 149 { … … 180 173 { 181 174 psList *inChips = psListAlloc(NULL); 182 for (int i =0; i < numFiles; i++) {175 for (int i = 0; i < numFiles; i++) { 183 176 pmChip *chip = pmFPAviewThisChip(view, ((pmFPAfile *)inputs->data[i])->fpa); 184 177 psListAdd(inChips, PS_LIST_TAIL, chip); … … 193 186 194 187 pmCell *outCell; ///< Cell of interest 195 196 // XXX TEST : force a single loop197 // outCell = pmFPAviewNextCell(view, outFPA, 1); {198 188 199 189 while ((outCell = pmFPAviewNextCell(view, outFPA, 1))) { … … 291 281 psAssert (fileGroups->n > 0, "no valid file groups defined"); 292 282 fileGroup = fileGroups->data[0]; 283 293 284 if (!pmDarkCombinePrepare(outCell, fileGroup->readouts, darkOrdinates, darkNorm)) { 294 285 goto ERROR; … … 305 296 psAbort("Should never get here."); 306 297 } 298 fprintf (stderr, "after pmDarkCombinePrepare / pmReadoutCombinePrepare:\n"); 299 psMemStats(true, NULL, NULL); 307 300 308 301 // Read input data by chunks … … 357 350 // call: pmDarkCombine(outCell, fileGroup->readouts, iter, rej, maskVal); 358 351 if (!psThreadJobAddPending(job)) { 359 // goto ERROR; 360 // continue; // I don't care. 352 // CZW commented this out with a note that this was needed to allow ppMerge to work even if some inputs are invalid. 353 // EAM thinks pmDarkCombine will only return FALSE if there is a programming or setup error (see pmDark.c:pmDarkCombine) 354 // if so, we should raise an error here. 355 // goto ERROR; 361 356 } 362 357 break; … … 400 395 401 396 psFree(fileGroups); 402 // psFree(zeros);403 397 404 398 // XXX eventually need to keep both the shutter and the pattern, as we do with dark … … 541 535 } 542 536 537 // free the data used by the input files (we need to do the work ourselves) 538 for (int i = 0; i < numFiles; i++) { 539 if (!ppMergeFileFreeInput(config, view, i)) { 540 psError(PS_ERR_UNKNOWN, false, "Unable to open file %d", i); 541 goto ERROR; 542 } 543 } 544 543 545 psFree(outRO); 544 546 cellNum++; … … 547 549 goto ERROR; 548 550 } 551 552 // pmFPAfileIOList (config); 549 553 } 550 554 … … 564 568 psFree(variances); 565 569 psFree(stats); 570 psFree(zeros); 566 571 return true; 567 572 … … 573 578 psFree(variances); 574 579 psFree(stats); 580 psFree(zeros); 575 581 return false; 576 582 }
Note:
See TracChangeset
for help on using the changeset viewer.
