Index: /branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionKernels.h
===================================================================
--- /branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionKernels.h	(revision 26574)
+++ /branches/eam_branches/20091201/psModules/src/imcombine/pmSubtractionKernels.h	(revision 26575)
@@ -10,4 +10,5 @@
     PM_SUBTRACTION_KERNEL_POIS,         ///< Pan-STARRS Optimal Image Subtraction --- delta functions
     PM_SUBTRACTION_KERNEL_ISIS,         ///< Traditional kernel --- gaussians modified by polynomials
+    PM_SUBTRACTION_KERNEL_ISIS_RADIAL,  ///< ISIS + higher-order radial Hermitians
     PM_SUBTRACTION_KERNEL_HERM,         ///< Hermitian polynomial kernels
     PM_SUBTRACTION_KERNEL_DECONV_HERM,	///< Deconvolved Hermitian polynomial kernels
@@ -48,4 +49,10 @@
     float mean, rms;                    ///< Mean and RMS of chi^2 from stamps
     int numStamps;                      ///< Number of good stamps
+    float fSigResMean;			///< mean fractional stdev of residuals
+    float fSigResStdev;			///< stdev of fractional stdev of residuals
+    float fMaxResMean;			///< mean fractional positive swing in residuals
+    float fMaxResStdev;			///< stdev of fractional positive swing in residuals
+    float fMinResMean;			///< mean fractional negative swing in residuals
+    float fMinResStdev;			///< stdev of fractional negative swing in residuals
 } pmSubtractionKernels;
 
@@ -73,4 +80,9 @@
     PS_ASSERT_VECTOR_SIZE((KERNELS)->v, (KERNELS)->num, RETURNVALUE); \
     if ((KERNELS)->type == PM_SUBTRACTION_KERNEL_ISIS) { \
+        PS_ASSERT_VECTOR_NON_NULL((KERNELS)->widths, RETURNVALUE); \
+        PS_ASSERT_VECTOR_TYPE((KERNELS)->widths, PS_TYPE_F32, RETURNVALUE); \
+        PS_ASSERT_VECTOR_SIZE((KERNELS)->widths, (KERNELS)->num, RETURNVALUE); \
+    } \
+    if ((KERNELS)->type == PM_SUBTRACTION_KERNEL_ISIS_RADIAL) { \
         PS_ASSERT_VECTOR_NON_NULL((KERNELS)->widths, RETURNVALUE); \
         PS_ASSERT_VECTOR_TYPE((KERNELS)->widths, PS_TYPE_F32, RETURNVALUE); \
@@ -122,4 +134,5 @@
 }
 
+// Generate 1D convolution kernel for ISIS
 psVector *pmSubtractionKernelISIS(float sigma, // Gaussian width
                                        int order, // Polynomial order
@@ -127,4 +140,5 @@
     );
 
+// Generate 1D convolution kernel for HERM (normalized for 2D)
 psVector *pmSubtractionKernelHERM(float sigma, // Gaussian width
                                        int order, // Polynomial order
@@ -183,4 +197,13 @@
                                                float penalty, ///< Penalty for wideness
                                                pmSubtractionMode mode ///< Mode for subtraction
+                                               );
+
+/// Generate ISIS + RADIAL_HERM kernels
+pmSubtractionKernels *pmSubtractionKernelsISIS_RADIAL(int size, ///< Half-size of the kernel
+						      int spatialOrder, ///< Order of spatial variations
+						      const psVector *fwhms, ///< Gaussian FWHMs
+						      const psVector *orders, ///< Polynomial order of gaussians
+						      float penalty, ///< Penalty for wideness
+						      pmSubtractionMode mode ///< Mode for subtraction
                                                );
 
