Changeset 16407 for branches/pap_branch_080207/ppStack/src/ppStackLoop.c
- Timestamp:
- Feb 11, 2008, 6:47:44 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
branches/pap_branch_080207/ppStack/src/ppStackLoop.c
r16404 r16407 10 10 11 11 #include "ppStack.h" 12 13 #define ARRAY_BUFFER 16 // Number to add to array at a time 12 14 13 15 // Here follows lists of files for activation/deactivation at various stages. Each must be NULL-terminated. … … 39 41 "PSPHOT.INPUT.CMF", 0 }; 40 42 41 #define CONVOLVED_ALREADY // Already have the convolution products --- testing43 //#define CONVOLVED_ALREADY // Already have the convolution products --- testing 42 44 43 45 … … 308 310 // Generate convolutions and write them to disk 309 311 psArray *cells = psArrayAlloc(num); // Cells for convolved images --- a handle for reading again 310 psArray *kernels = psArrayAlloc(num); // Subtraction kernels --- required in the stacking 312 psArray *subKernels = psArrayAlloc(num); // Subtraction kernels --- required in the stacking 313 psArray *subRegions = psArrayAlloc(num); // Subtraction regions --- required in the stacking 311 314 for (int i = 0; i < num; i++) { 312 315 pmFPAfileActivate(config->files, false, NULL); … … 339 342 #endif 340 343 344 // Extract the regions and solutions used in the image matching 345 // This stops them from being freed when we iterate back up the FPA 346 psArray *regions = psArrayAllocEmpty(ARRAY_BUFFER); // Array of regions 347 { 348 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 349 PM_SUBTRACTION_ANALYSIS_REGION); // Iterator 350 psMetadataItem *item = NULL;// Item from iteration 351 while ((item = psMetadataGetAndIncrement(iter))) { 352 assert(item->type == PS_DATA_REGION); 353 regions = psArrayAdd(regions, ARRAY_BUFFER, item->data.V); 354 } 355 psFree(iter); 356 } 357 psArray *kernels = psArrayAllocEmpty(ARRAY_BUFFER); // Array of kernels 358 { 359 psMetadataIterator *iter = psMetadataIteratorAlloc(readout->analysis, PS_LIST_HEAD, 360 PM_SUBTRACTION_ANALYSIS_KERNEL); // Iterator 361 psMetadataItem *item = NULL;// Item from iteration 362 while ((item = psMetadataGetAndIncrement(iter))) { 363 assert(item->type == PS_DATA_VECTOR); 364 kernels = psArrayAdd(kernels, ARRAY_BUFFER, item->data.V); 365 } 366 psFree(iter); 367 } 368 assert(regions->n == kernels->n); 369 370 subRegions->data[i] = regions; 371 subKernels->data[i] = kernels; 341 372 cells->data[i] = psMemIncrRefCounter(readout->parent); 342 kernels->data[i] = psMemIncrRefCounter(psMetadataLookupPtr(NULL, readout->analysis, 343 PM_SUBTRACTION_ANALYSIS_KERNEL)); 373 344 374 filesIterateUp(config); 345 375 } … … 357 387 if (!view) { 358 388 psFree(cells); 359 psFree(kernels); 389 psFree(subKernels); 390 psFree(subRegions); 360 391 return false; 361 392 } … … 391 422 psError(PS_ERR_IO, false, "Unable to read chunk %d for file %d", numChunk, i); 392 423 psFree(readouts); 393 psFree(kernels); 424 psFree(subKernels); 425 psFree(subRegions); 394 426 psFree(outRO); 395 427 psFree(view); … … 406 438 #endif 407 439 408 if (!ppStackReadout(config, outRO, readouts )) {440 if (!ppStackReadout(config, outRO, readouts, subRegions, subKernels)) { 409 441 psError(PS_ERR_UNKNOWN, false, "Unable to stack images.\n"); 410 442 psFree(readouts); 411 psFree(kernels); 443 psFree(subKernels); 444 psFree(subRegions); 412 445 psFree(outRO); 413 446 psFree(view); … … 425 458 426 459 psFree(readouts); 427 psFree(kernels); 460 psFree(subKernels); 461 psFree(subRegions); 428 462 for (int i = 0; i < num; i++) { 429 463 psFitsClose(imageFits->data[i]);
Note:
See TracChangeset
for help on using the changeset viewer.
