Changeset 19476
- Timestamp:
- Sep 10, 2008, 3:14:42 PM (18 years ago)
- File:
-
- 1 edited
-
trunk/ppStack/src/ppStackLoop.c (modified) (17 diffs)
Legend:
- Unmodified
- Added
- Removed
-
trunk/ppStack/src/ppStackLoop.c
r19475 r19476 466 466 #endif 467 467 468 ppStackThreadInit();469 ppStackThreadData *stack = ppStackThreadDataSetup(cells, imageNames, maskNames, weightNames,470 config); // Data for stacking471 psFree(cells);472 468 473 469 memDump("preinitial"); … … 478 474 pmFPAview *view = NULL; // View to readout 479 475 psArray *inspect = NULL; // Array of arrays of pixels to inspect 476 ppStackThreadData *stack = NULL; // Data for stacking 477 psVector *exptimes = psVectorAlloc(num, PS_TYPE_F32); // Exposure times for each input 480 478 { 481 479 int row0, col0; // Offset for readout … … 488 486 psFree(stack); 489 487 psFree(inputMask); 488 psFree(exptimes); 490 489 return false; 491 490 } … … 499 498 psFree(stack); 500 499 psFree(inputMask); 500 psFree(exptimes); 501 501 return false; 502 502 } … … 515 515 psFree(view); 516 516 psFree(outRO); 517 return false; 518 } 517 psFree(exptimes); 518 return false; 519 } 520 521 psList *fpaList = psListAlloc(NULL); // List of input FPAs, for concept averaging 522 psList *cellList = psListAlloc(NULL); // List of input cells, for concept averaging 523 for (int i = 0; i < num; i++) { 524 pmCell *inCell = cells->data[i]; // Input cell 525 exptimes->data.F32[i] = psMetadataLookupF32(NULL, inCell->concepts, "CELL.EXPOSURE"); 526 psListAdd(cellList, PS_LIST_TAIL, inCell); 527 psListAdd(fpaList, PS_LIST_TAIL, inCell->parent->parent); 528 } 529 530 // Copy concepts 531 pmChip *outChip = outCell->parent; // Output chip 532 pmFPA *outFPA = outChip->parent; // Output FPA 533 pmConceptsAverageFPAs(outFPA, fpaList); 534 pmConceptsAverageCells(outCell, cellList, NULL, NULL, true); 535 psFree(fpaList); 536 psFree(cellList); 537 538 // Start threading 539 ppStackThreadInit(); 540 ppStackThreadData *stack = ppStackThreadDataSetup(cells, imageNames, maskNames, weightNames, config); 541 psFree(cells); 519 542 520 543 bool status; // Status of read … … 531 554 psFree(view); 532 555 psFree(outRO); 556 psFree(exptimes); 533 557 return false; 534 558 } … … 553 577 psFree(view); 554 578 psFree(outRO); 579 psFree(exptimes); 555 580 return false; 556 581 } … … 566 591 psFree(view); 567 592 psFree(outRO); 593 psFree(exptimes); 568 594 return false; 569 595 } … … 622 648 psFree(inspect); 623 649 psFree(rejected); 650 psFree(exptimes); 624 651 return false; 625 652 } … … 637 664 psFree(inspect); 638 665 psFree(rejected); 666 psFree(exptimes); 639 667 return false; 640 668 } … … 714 742 psFree(view); 715 743 psFree(outRO); 744 psFree(exptimes); 716 745 return false; 717 746 } … … 735 764 psFree(view); 736 765 psFree(outRO); 766 psFree(exptimes); 737 767 return false; 738 768 } … … 755 785 psFree(view); 756 786 psFree(outRO); 787 psFree(exptimes); 757 788 return false; 758 789 } … … 767 798 psFree(view); 768 799 psFree(outRO); 800 psFree(exptimes); 769 801 return false; 770 802 } … … 788 820 // Close up 789 821 bool wcsDone = false; // Have we done the WCS? 790 psList *fpaList = psListAlloc(NULL); // List of input FPAs, for concept averaging791 psList *cellList = psListAlloc(NULL); // List of input cells, for concept averaging792 822 float totExposure = 0.0; // Total exposure time 793 823 for (int i = 0; i < num; i++) { … … 795 825 continue; 796 826 } 827 totExposure += exptimes->data.F32[i]; 828 797 829 ppStackThread *thread = stack->threads->data[0]; // Representative stack 798 830 pmReadout *inRO = thread->readouts->data[i]; // Template readout 799 if (!inRO) { 800 continue; 801 } 802 float exposure = psMetadataLookupF32(NULL, inRO->parent->concepts, "CELL.EXPOSURE"); // Exposure time 803 if (!isfinite(exposure)) { 804 psWarning("CELL.EXPOSURE not set for readout %d", i); 805 } else { 806 totExposure += exposure; 807 } 808 809 psListAdd(cellList, PS_LIST_TAIL, inRO->parent); 810 psListAdd(fpaList, PS_LIST_TAIL, inRO->parent->parent->parent); 811 812 if (!wcsDone) { 831 if (inRO && !wcsDone) { 813 832 // Copy astrometry over 814 833 wcsDone = true; … … 856 875 psFree(weightNames); 857 876 858 // Copy concepts 859 pmCell *outCell = outRO->parent; // Output cell 860 pmChip *outChip = outCell->parent; // Output chip 861 pmFPA *outFPA = outChip->parent; // Output FPA 862 psMetadataAddF32(outCell->concepts, PS_LIST_TAIL, "CELL.EXPOSURE", PS_META_REPLACE, 863 "Summed exposure time (sec)", totExposure); 864 psMetadataAddF32(outFPA->concepts, PS_LIST_TAIL, "FPA.EXPOSURE", PS_META_REPLACE, 865 "Summed exposure time (sec)", totExposure); 866 867 pmConceptsAverageFPAs(outFPA, fpaList); 868 pmConceptsAverageCells(outCell, cellList, NULL, NULL, true); 869 psFree(fpaList); 870 psFree(cellList); 871 877 psFree(exptimes); 872 878 psFree(inputMask); 873 879 psFree(stack);
Note:
See TracChangeset
for help on using the changeset viewer.
