Changeset 14690 for trunk/psModules/src/imcombine/pmSubtractionKernels.c
- Timestamp:
- Aug 29, 2007, 11:58:27 AM (19 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionKernels.c
r14671 r14690 150 150 kernels->subIndex = -1; 151 151 152 if (psTraceGetLevel("psModules.imcombine.kernel") >= 10) {153 for (int i = 0; i < num; i++) {154 psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest155 psString kernelName = NULL;156 psStringAppend(&kernelName, "kernel%03d.fits", i);157 psFits *kernelFile = psFitsOpen(kernelName, "w");158 psFree(kernelName);159 psFitsWriteImage(kernelFile, NULL, kernel->image, 0, NULL);160 psFitsClose(kernelFile);161 }162 }163 164 152 return kernels; 165 153 } … … 228 216 229 217 // Subtract a reference kernel from all the others to maintain flux scaling 230 psKernel *subtract = kernels->preCalc->data[0]; // Kernel to subtract from all others 231 for (int i = 1; i < kernels->num; i++) { 232 psKernel *kernel = kernels->preCalc->data[i]; // Kernel to subtract 233 psBinaryOp(kernel->image, kernel->image, "-", subtract->image); 218 int subIndex = 0; // Index of kernel to subtract from others 219 psKernel *subtract = kernels->preCalc->data[subIndex]; // Kernel to subtract from others 220 int numGaussians = fwhms->n; // Number of Gaussians 221 for (int i = 0, index = 0; i < numGaussians; i++) { 222 for (int uOrder = 0; uOrder <= orders->data.S32[i]; uOrder++) { 223 for (int vOrder = 0; vOrder <= orders->data.S32[i] - uOrder; vOrder++, index++) { 224 if (uOrder % 2 == 0 && vOrder % 2 == 0 && index != subIndex) { 225 psKernel *kernel = kernels->preCalc->data[index]; // Kernel to subtract 226 psBinaryOp(kernel->image, kernel->image, "-", subtract->image); 227 } 228 } 229 } 230 } 231 232 if (psTraceGetLevel("psModules.imcombine.kernel") >= 10) { 233 for (int i = 0; i < kernels->num; i++) { 234 psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest 235 psString kernelName = NULL; 236 psStringAppend(&kernelName, "kernel%03d.fits", i); 237 psFits *kernelFile = psFitsOpen(kernelName, "w"); 238 psFree(kernelName); 239 psFitsWriteImage(kernelFile, NULL, kernel->image, 0, NULL); 240 psFitsClose(kernelFile); 241 } 234 242 } 235 243 … … 443 451 444 452 // Subtract unity from the kernels to maintain photometric flux scaling 445 for (int i = 0; i < kernels->num; i++) { 446 psKernel *kernel = kernels->preCalc->data[i]; // Kernel of interest 447 kernel->kernel[0][0] -= 1.0; 448 } 449 450 int numGaussians = kernels->num; // Number of ISIS kernels 453 int numGaussians = fwhms->n; // Number of Gaussians 454 for (int i = 0, index = 0; i < numGaussians; i++) { 455 for (int uOrder = 0; uOrder <= orders->data.S32[i]; uOrder++) { 456 for (int vOrder = 0; vOrder <= orders->data.S32[i] - uOrder; vOrder++, index++) { 457 if (uOrder % 2 == 0 && vOrder % 2 == 0) { 458 psKernel *kernel = kernels->preCalc->data[index]; // Kernel to subtract 459 kernel->kernel[0][0] -= 1.0; 460 } 461 } 462 } 463 } 464 465 int numISIS = kernels->num; // Number of ISIS kernels 451 466 int numInner = PS_SQR(2 * inner + 1); // Number of inner kernel elements 452 467 … … 455 470 } 456 471 457 kernels->subIndex = numInner/2 + num Gaussians;472 kernels->subIndex = numInner/2 + numISIS; 458 473 assert(kernels->u->data.S32[kernels->subIndex] == 0 && 459 474 kernels->v->data.S32[kernels->subIndex] == 0);
Note:
See TracChangeset
for help on using the changeset viewer.
