Changeset 15756 for trunk/psModules/src/imcombine/pmSubtractionKernels.h
- Timestamp:
- Dec 6, 2007, 3:57:15 PM (18 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/psModules/src/imcombine/pmSubtractionKernels.h
r15443 r15756 31 31 long num; ///< Number of kernel components (not including the spatial ones) 32 32 psVector *u, *v; ///< Offset (for POIS) or polynomial order (for ISIS) 33 psVector *widths; ///< Gaussian FWHMs (ISIS) or ring radius (RINGS)33 psVector *widths; ///< Gaussian FWHMs (ISIS) 34 34 psVector *uStop, *vStop; ///< Width of kernel element (SPAM,FRIES only) 35 int subIndex; ///< Index of kernel to be subtracted (to maintain flux conservation)36 35 psArray *preCalc; ///< Array of images containing pre-calculated kernel (for ISIS) 37 36 int size; ///< The half-size of the kernel … … 39 38 int spatialOrder; ///< The spatial order of the kernels 40 39 int bgOrder; ///< The order for the background fitting 40 pmSubtractionMode mode; ///< Mode for subtraction 41 psVector *solution1, *solution2; ///< Solution for the PSF matching 41 42 } pmSubtractionKernels; 43 44 // Assertion to check pmSubtractionKernels 45 #define PM_ASSERT_SUBTRACTION_KERNELS_NON_NULL(KERNELS, RETURNVALUE) { \ 46 PS_ASSERT_PTR_NON_NULL(KERNELS, RETURNVALUE); \ 47 PS_ASSERT_STRING_NON_EMPTY((KERNELS)->description, RETURNVALUE); \ 48 PS_ASSERT_INT_POSITIVE((KERNELS)->num, RETURNVALUE); \ 49 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->u, RETURNVALUE); \ 50 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->v, RETURNVALUE); \ 51 PS_ASSERT_VECTOR_TYPE((KERNELS)->u, PS_TYPE_S32, RETURNVALUE); \ 52 PS_ASSERT_VECTOR_TYPE((KERNELS)->v, PS_TYPE_S32, RETURNVALUE); \ 53 PS_ASSERT_VECTOR_SIZE((KERNELS)->u, (KERNELS)->num, RETURNVALUE); \ 54 PS_ASSERT_VECTOR_SIZE((KERNELS)->v, (KERNELS)->num, RETURNVALUE); \ 55 if ((KERNELS)->type == PM_SUBTRACTION_KERNEL_ISIS) { \ 56 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->widths, RETURNVALUE); \ 57 PS_ASSERT_VECTOR_TYPE((KERNELS)->widths, PS_TYPE_F32, RETURNVALUE); \ 58 PS_ASSERT_VECTOR_SIZE((KERNELS)->widths, (KERNELS)->num, RETURNVALUE); \ 59 } \ 60 if ((KERNELS)->uStop || (KERNELS)->vStop) { \ 61 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->uStop, RETURNVALUE); \ 62 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->vStop, RETURNVALUE); \ 63 PS_ASSERT_VECTOR_TYPE((KERNELS)->uStop, PS_TYPE_S32, RETURNVALUE); \ 64 PS_ASSERT_VECTOR_TYPE((KERNELS)->vStop, PS_TYPE_S32, RETURNVALUE); \ 65 PS_ASSERT_VECTOR_SIZE((KERNELS)->uStop, (KERNELS)->num, RETURNVALUE); \ 66 PS_ASSERT_VECTOR_SIZE((KERNELS)->vStop, (KERNELS)->num, RETURNVALUE); \ 67 } \ 68 if ((KERNELS)->preCalc) { \ 69 PS_ASSERT_ARRAY_NON_NULL((KERNELS)->preCalc, RETURNVALUE); \ 70 PS_ASSERT_ARRAY_SIZE((KERNELS)->preCalc, (KERNELS)->num, RETURNVALUE); \ 71 } \ 72 PS_ASSERT_INT_NONNEGATIVE((KERNELS)->size, RETURNVALUE); \ 73 PS_ASSERT_INT_NONNEGATIVE((KERNELS)->inner, RETURNVALUE); \ 74 PS_ASSERT_INT_NONNEGATIVE((KERNELS)->spatialOrder, RETURNVALUE); \ 75 PS_ASSERT_INT_NONNEGATIVE((KERNELS)->bgOrder, RETURNVALUE); \ 76 } 77 78 // Assertion to check that the solution is attached 79 #define PM_ASSERT_SUBTRACTION_KERNELS_SOLUTION(KERNELS, RETURNVALUE) { \ 80 PS_ASSERT_VECTOR_NON_NULL((KERNELS)->solution1, RETURNVALUE); \ 81 PS_ASSERT_VECTOR_TYPE((KERNELS)->solution1, PS_TYPE_F64, RETURNVALUE); \ 82 PS_ASSERT_VECTOR_SIZE((KERNELS)->solution1, \ 83 (KERNELS)->num * PM_SUBTRACTION_POLYTERMS((KERNELS)->spatialOrder) + 1 + \ 84 PM_SUBTRACTION_POLYTERMS((KERNELS)->bgOrder), \ 85 RETURNVALUE); \ 86 if (kernels->mode == PM_SUBTRACTION_MODE_DUAL) { \ 87 PS_ASSERT_VECTOR_NON_NULL(kernels->solution2, RETURNVALUE); \ 88 PS_ASSERT_VECTOR_TYPE((KERNELS)->solution2, PS_TYPE_F64, RETURNVALUE); \ 89 PS_ASSERT_VECTOR_SIZE((KERNELS)->solution2, \ 90 (KERNELS)->num * PM_SUBTRACTION_POLYTERMS((KERNELS)->spatialOrder), \ 91 RETURNVALUE); \ 92 } \ 93 } 42 94 43 95 /// Generate a delta-function grid for subtraction kernels (like the POIS kernel) … … 54 106 pmSubtractionKernelsType type, ///< Kernel type 55 107 int size, ///< Half-size of kernel 56 int spatialOrder ///< Order of spatial variations 108 int spatialOrder, ///< Order of spatial variations 109 pmSubtractionMode mode ///< Mode for subtraction 57 110 ); 58 111 59 112 /// Generate POIS kernels 60 113 pmSubtractionKernels *pmSubtractionKernelsPOIS(int size, ///< Half-size of the kernel (in both dims) 61 int spatialOrder ///< Order of spatial variations 114 int spatialOrder, ///< Order of spatial variations 115 pmSubtractionMode mode ///< Mode for subtraction 62 116 ); 63 117 … … 66 120 int spatialOrder, ///< Order of spatial variations 67 121 const psVector *fwhms, ///< Gaussian FWHMs 68 const psVector *orders ///< Polynomial order of gaussians 122 const psVector *orders, ///< Polynomial order of gaussians 123 pmSubtractionMode mode ///< Mode for subtraction 69 124 ); 70 125 … … 73 128 int spatialOrder, ///< Order of spatial variations 74 129 const psVector *fwhms, ///< Gaussian FWHMs 75 const psVector *orders ///< Polynomial order of gaussians 130 const psVector *orders, ///< Polynomial order of gaussians 131 pmSubtractionMode mode ///< Mode for subtraction 76 132 ); 77 133 … … 80 136 int spatialOrder, ///< Order of spatial variations 81 137 int inner, ///< Inner radius to preserve unbinned 82 int binning ///< Kernel binning factor 138 int binning, ///< Kernel binning factor 139 pmSubtractionMode mode ///< Mode for subtraction 83 140 ); 84 141 … … 86 143 pmSubtractionKernels *pmSubtractionKernelsFRIES(int size, ///< Half-size of the kernel 87 144 int spatialOrder, ///< Order of spatial variations 88 int inner ///< Inner radius to preserve unbinned 145 int inner, ///< Inner radius to preserve unbinned 146 pmSubtractionMode mode ///< Mode for subtraction 89 147 ); 90 148 … … 94 152 const psVector *fwhms, ///< Gaussian FWHMs 95 153 const psVector *orders, ///< Polynomial order of gaussians 96 int inner ///< Inner radius containing grid of delta functions 154 int inner, ///< Inner radius containing grid of delta functions 155 pmSubtractionMode mode ///< Mode for subtraction 97 156 ); 98 157 … … 101 160 int spatialOrder, ///< Order of spatial variations 102 161 int inner, ///< Inner radius to preserve unbinned 103 int ringsOrder ///< Polynomial order 162 int ringsOrder, ///< Polynomial order 163 pmSubtractionMode mode ///< Mode for subtraction 104 164 ); 105 165 … … 113 173 int inner, ///< Inner radius to preserve unbinned 114 174 int binning, ///< Kernel binning factor 115 int ringsOrder ///< Polynomial order for RINGS 175 int ringsOrder, ///< Polynomial order for RINGS 176 pmSubtractionMode mode ///< Mode for subtraction 116 177 ); 117 178
Note:
See TracChangeset
for help on using the changeset viewer.
