Index: /trunk/ippconfig/recipes/filerules-mef.mdc
===================================================================
--- /trunk/ippconfig/recipes/filerules-mef.mdc	(revision 41416)
+++ /trunk/ippconfig/recipes/filerules-mef.mdc	(revision 41417)
@@ -136,4 +136,15 @@
 PPSUB.REF.SOURCES       INPUT    @FILES        FPA        CMF
 PPSUB.INPUT.KERNEL      INPUT    @FILES        FPA        SUBKERNEL
+
+## files used by gdiff
+GDIFF.INPUT             INPUT    @FILES        FPA        IMAGE
+GDIFF.INPUT.MASK        INPUT    @FILES        FPA        MASK
+GDIFF.INPUT.VARIANCE    INPUT    @FILES        FPA        VARIANCE
+GDIFF.INPUT.SOURCES     INPUT    @FILES        FPA        CMF
+GDIFF.REF               INPUT    @FILES        FPA        IMAGE
+GDIFF.REF.MASK          INPUT    @FILES        FPA        MASK
+GDIFF.REF.VARIANCE      INPUT    @FILES        FPA        VARIANCE
+GDIFF.REF.SOURCES       INPUT    @FILES        FPA        CMF
+GDIFF.INPUT.KERNEL      INPUT    @FILES        FPA        SUBKERNEL
 
 ## files used by ppstack
Index: /trunk/ippconfig/recipes/filerules-simple.mdc
===================================================================
--- /trunk/ippconfig/recipes/filerules-simple.mdc	(revision 41416)
+++ /trunk/ippconfig/recipes/filerules-simple.mdc	(revision 41417)
@@ -106,4 +106,15 @@
 PPSUB.REF.VARIANCE        INPUT    @FILES        FPA        VARIANCE
 PPSUB.REF.SOURCES         INPUT    @FILES        FPA        CMF
+
+## files used by gdiff
+GDIFF.INPUT               INPUT    @FILES        FPA        IMAGE
+GDIFF.INPUT.MASK          INPUT    @FILES        FPA        MASK
+GDIFF.INPUT.VARIANCE      INPUT    @FILES        FPA        VARIANCE
+GDIFF.INPUT.SOURCES       INPUT    @FILES        FPA        CMF
+GDIFF.INPUT.KERNEL        INPUT    @FILES        FPA        SUBKERNEL
+GDIFF.REF                 INPUT    @FILES        FPA        IMAGE
+GDIFF.REF.MASK            INPUT    @FILES        FPA        MASK
+GDIFF.REF.VARIANCE        INPUT    @FILES        FPA        VARIANCE
+GDIFF.REF.SOURCES         INPUT    @FILES        FPA        CMF
 
 ## files used by ppstack
@@ -290,4 +301,30 @@
 PPSUB.POS1.SOURCES           OUTPUT {OUTPUT}.pos1.cmf             CMF             NONE       FPA        TRUE      NONE
 PPSUB.POS2.SOURCES           OUTPUT {OUTPUT}.pos2.cmf             CMF             NONE       FPA        TRUE      NONE
+
+# output files for gdiff
+GDIFF.OUTPUT                 OUTPUT {OUTPUT}.fits                 IMAGE           NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.MASK            OUTPUT {OUTPUT}.mask.fits            MASK            NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.VARIANCE        OUTPUT {OUTPUT}.wt.fits              VARIANCE        NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.SOURCES         OUTPUT {OUTPUT}.cmf                  CMF             NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.KERNELS         OUTPUT {OUTPUT}.subkernel            SUBKERNEL       NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.JPEG1           OUTPUT {OUTPUT}.b1.jpg               JPEG            NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.JPEG2           OUTPUT {OUTPUT}.b2.jpg               JPEG            NONE       FPA        TRUE      NONE
+GDIFF.OUTPUT.RESID.JPEG      OUTPUT {OUTPUT}.res.jpg              JPEG            NONE       FPA        TRUE      NONE
+GDIFF.INVERSE                OUTPUT {OUTPUT}.inv.fits             IMAGE           NONE       FPA        TRUE      NONE
+GDIFF.INVERSE.MASK           OUTPUT {OUTPUT}.inv.mask.fits        MASK            NONE       FPA        TRUE      NONE
+GDIFF.INVERSE.VARIANCE       OUTPUT {OUTPUT}.inv.wt.fits          VARIANCE        NONE       FPA        TRUE      NONE
+GDIFF.INVERSE.SOURCES        OUTPUT {OUTPUT}.inv.cmf              CMF             NONE       FPA        TRUE      NONE
+GDIFF.CONFIG                 OUTPUT {OUTPUT}.gDiff.mdc            TEXT            NONE       FPA        TRUE      NONE
+GDIFF.INPUT.CONV             OUTPUT {OUTPUT}.inConv.fits          IMAGE           NONE       FPA        TRUE      NONE
+GDIFF.INPUT.CONV.MASK        OUTPUT {OUTPUT}.inConv.mk.fits       MASK            NONE       FPA        TRUE      NONE
+GDIFF.INPUT.CONV.VARIANCE    OUTPUT {OUTPUT}.inConv.wt.fits       VARIANCE        NONE       FPA        TRUE      NONE
+GDIFF.REF.CONV               OUTPUT {OUTPUT}.refConv.fits         IMAGE           NONE       FPA        TRUE      NONE
+GDIFF.REF.CONV.MASK          OUTPUT {OUTPUT}.refConv.mk.fits      MASK            NONE       FPA        TRUE      NONE
+GDIFF.REF.CONV.VARIANCE      OUTPUT {OUTPUT}.refConv.wt.fits      VARIANCE        NONE       FPA        TRUE      NONE
+                                             
+GDIFF.FORCED1.SOURCES        OUTPUT {OUTPUT}.frc1.cmf             CMF             NONE       FPA        TRUE      NONE
+GDIFF.FORCED2.SOURCES        OUTPUT {OUTPUT}.frc2.cmf             CMF             NONE       FPA        TRUE      NONE
+GDIFF.POS1.SOURCES           OUTPUT {OUTPUT}.pos1.cmf             CMF             NONE       FPA        TRUE      NONE
+GDIFF.POS2.SOURCES           OUTPUT {OUTPUT}.pos2.cmf             CMF             NONE       FPA        TRUE      NONE
 
 PPSTACK.OUTPUT.COMP          OUTPUT {OUTPUT}.fits                 IMAGE           COMP_IMG   FPA        TRUE      NONE
Index: /trunk/ippconfig/recipes/gDiff.config
===================================================================
--- /trunk/ippconfig/recipes/gDiff.config	(revision 41417)
+++ /trunk/ippconfig/recipes/gDiff.config	(revision 41417)
@@ -0,0 +1,383 @@
+### Recipe file for gDiff
+
+KERNEL.TYPE	STR	ISIS     	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+KERNEL.SIZE     S32	20		# Kernel half-size (pixels)
+SPATIAL.ORDER   S32	1		# Spatial polynomial order
+REGION.SIZE	F32	0		# Iso-kernel region size (pixels)
+SOURCE.RADIUS	F32	3.0		# Source matching radius (pixels)
+STAMP.SPACING   F32	200		# Typical spacing between stamps (pixels)
+STAMP.FOOTPRINT S32	20		# Size of stamps (pixels)
+STAMP.THRESHOLD F32	5		# Flux threshold for stamps (stdev above background)
+STRIDE		S32	128		# Size of convolution patches (pixels)
+ITER            S32	2		# Number of rejection iterations
+REJ             F32	2.5		# Rejection level (std dev)
+KERNEL.ERR	F32	0.05		# Relative systematic error in kernel
+SYS.ERR		F32	0.1		# Relative systematic error in images
+SKY.ERR		F32	0.0		# Relative systematic error in images
+NORM.FRAC	F32	0.02		# Fraction of window for normalisation window
+COVAR.FRAC	F32	0.01		# Fraction of kernel to truncate before calculating covariance
+APPLY.PIXELNAN	BOOL	TRUE		# Apply NAN'ing of pixels underneath masks
+
+MASK.VAL	STR	MASK.VALUE,CONV.BAD	# Mask value for input
+MASK.BAD        STR	CONV.BAD	# Mask value to give bad pixels
+MASK.POOR       STR	CONV.POOR	# Mask value to give poor pixels
+MASK.BLANK      STR	BLANK           # Mask value to give empty pixels
+
+MASK.STATS         BOOL    TRUE            # calculate mask statistics.
+MASKSTAT.STATIC     U32 0x01f
+MASKSTAT.DYNAMIC    U32 0x060
+MASKSTAT.MAGIC      U32 0x800
+MASKSTAT.ADVISORY   U32 0x080
+
+INPUT.MATCH.RADIUS F32  50.0
+INPUT.MATCH.MIN.SN F32  10.0
+
+ADD.NOT.SUBTRACT BOOL   FALSE           # add the images instead of subtracting (ie, image + ref, not image - ref)
+
+LOW.THRESHOLD	F32	20.0	        # Mask pixels below this threshold (std dev)
+POOR.FRACTION	F32	0.20		# Maximum fraction of bad weight for poor pixels
+BADFRAC		F32	0.95		# Maximum fraction of bad pixels
+
+# photpipe kernels
+@ISIS.WIDTHS	F32	1.5  3.0  6.0   # Gaussian kernel FWHM values
+@ISIS.ORDERS	S32	6    4    2     # Polynomial orders for ISIS kernels
+
+#@ISIS.WIDTHS	F32	2.4  5.0  10.0  # Gaussian kernel FWHM values
+#@ISIS.ORDERS	S32	6    4    2     # Polynomial orders for ISIS kernels
+
+# for autoscaling, the above kernel widths are multiplied by the factor max(FWHM_1,FWHM_2) / SCALE.REF
+SCALE		BOOL	TRUE		# Scale kernel parameters by the seeing?
+SCALE.REF	F32     5.0		# FWHM reference for kernel parameter scaling
+SCALE.MIN	F32	0.5		# Minimum scale value
+SCALE.MAX	F32	2.0		# Maximum scale value
+
+SPAM.BINNING	S32	2		# Binning in outer region for SPAM kernels
+INNER		S32	5		# Inner half-size for SPAM and FRIES kernels
+RINGS.ORDER	S32	2		# Polynomial order for RINGS kernels
+PENALTY		F32	1.0		# 4.0e-6 for the updated code from 2010.09.19
+BIN1		S32	16		# Binning factor for first level
+BIN2		S32	16		# Binning factor for second level
+
+OPTIMUM		BOOL	FALSE		# Derive optimum parameters for ISIS and GUNK kernels
+OPTIMUM.MIN	F32	1.0		# Minimum width for optimum FWHM search
+OPTIMUM.MAX	F32	11.0		# Maximum width for optimum FWHM search
+OPTIMUM.STEP	F32	1.0		# Step in width for optimum FWHM search
+OPTIMUM.TOL	F32	3.0e-3		# Maximum difference in chi^2 between iterations to settle for
+OPTIMUM.ORDER	S32	2		# Maximum polynomial order for optimum search
+
+RENORM		BOOL	TRUE		# Renormalise weight maps?
+RENORM.NUM	S32	100000		# Number of samples for renormalisation
+RENORM.MIN	F32	0.2		# Minimum value for renormalization
+RENORM.MAX	F32	5.0		# Maximum value for renormalization
+
+INTERPOLATION	STR	LANCZOS3	# Interpolation mode for bad pixels
+
+DUAL		BOOL	FALSE		# Dual convolution?
+CONVOLVE.TARGET STR     SINGLE1		# convolution direction
+INVERSE		BOOL	FALSE		# Generate inverse subtraction?
+PHOTOMETRY	BOOL	FALSE		# Perform photometry?
+NOCONVOLVE      BOOL    FALSE           # Skip convolution?
+CHIP.MAP.FROM.POSITIVE BOOL FALSE       # use the warp for the chipmap, not subtrahend
+
+FORCED.PHOTOMETRY.BOTH BOOL FALSE       # forced photometry on input sources?
+FORCED.PHOTOMETRY.INPUT1 BOOL FALSE       # forced photometry on input sources?
+FORCED.PHOTOMETRY.INPUT2 BOOL FALSE       # forced photometry on input sources?
+
+# Recipe overrides for STACK
+STACK	METADATA
+	SYS.ERR         F32     0.0      # current use of SYS.ERR not appropriate for stacks
+END
+
+STACK_1DG METADATA
+	SYS.ERR		F32	0.0	 # current use of SYS.ERR not appropriate for stacks
+	KERNEL.TYPE	STR	SIMPLE	 # Use 1D Gaussian convolution.
+END	
+
+# Recipe overrides for DIFF
+DIFF	METADATA
+	DUAL		BOOL	TRUE	# Dual convolution?
+	INVERSE		BOOL	TRUE	# Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+
+	# penalty of 1.0
+	# DUAL convolution is more sensitive to the number of kernels
+	# do not provide as many orders as for SINGLE
+        # @ISIS.WIDTHS	F32	2.4  5.0  10.0  # Gaussian kernel FWHM values
+	@ISIS.WIDTHS	F32	1.5  3.0  6.0   # Gaussian kernel FWHM values
+	# @ISIS.WIDTHS	F32	2.0  3.0  5.0   # Gaussian kernel FWHM values
+        # @ISIS.WIDTHS	F32	2.1  4.2  8.4   # Gaussian kernel FWHM values
+	@ISIS.ORDERS	S32	2    2    2     # Polynomial orders for ISIS kernels
+
+	SCALE.REF	F32     5.0		# FWHM reference for kernel parameter scaling
+	KERNEL.SIZE     S32	15		# Kernel half-size (pixels)
+	STAMP.FOOTPRINT S32	15		# Size of stamps (pixels)
+
+        PENALTY         F32     0.01             # adjust to limit excessive conv for ut20181219
+END
+
+DIFF_1DG  METADATA
+	  KERNEL.TYPE	STR	SIMPLE	# Use 1D Gaussian Convolution
+	  DUAL		BOOL	TRUE    # Dual convolution?
+	  INVERSE	BOOL	TRUE	# Generate inverse subtraction?
+	  PHOTOMETRY	BOOL	TRUE	# Perform photometry
+
+	  # This is not really used with the SIMPLE kernel
+	  SCALE.REF	F32	5.0 	# FWHM reference for kernel parameter scalinng
+	  KERNEL.SIZE	S32	15	# Kernel half-size (pixels);
+	  STAMP.FOOTPRINT S32	15	# Size of stamps (pixels);
+END
+
+# test setup for nodual case
+DIFF_NODUAL    METADATA   
+        DUAL             BOOL    FALSE    # Dual convolution?
+        INVERSE          BOOL    TRUE    # Generate inverse subtraction?
+        PHOTOMETRY       BOOL    TRUE    # Perform photometry?
+        CONVOLVE.TARGET  STR     SINGLE_AUTO
+
+        @ISIS.WIDTHS    F32     1.5  3.0  6.0   # Gaussian kernel FWHM values
+        @ISIS.ORDERS    S32     6    4    2     # Polynomial orders for ISIS kernels
+
+        SCALE.REF       F32     5.0             # FWHM reference for kernel parameter scaling
+        KERNEL.SIZE     S32     20              # Kernel half-size (pixels)
+        STAMP.FOOTPRINT S32     20              # Size of stamps (pixels)
+END
+
+# Difference of two warps
+WARPWARP	METADATA
+	DUAL		BOOL	TRUE	# Dual convolution?
+	INVERSE		BOOL	TRUE	# Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+
+	# penalty of 1.0
+	# DUAL convolution is more sensitive to the number of kernels
+	# do not provide as many orders as for SINGLE
+        # @ISIS.WIDTHS	F32	2.4  5.0  10.0  # Gaussian kernel FWHM values
+	@ISIS.WIDTHS	F32	1.5  3.0  6.0   # Gaussian kernel FWHM values
+	# @ISIS.WIDTHS	F32	2.0  3.0  5.0   # Gaussian kernel FWHM values
+        # @ISIS.WIDTHS	F32	2.1  4.2  8.4   # Gaussian kernel FWHM values
+	@ISIS.ORDERS	S32	2    2    2     # Polynomial orders for ISIS kernels
+
+	SCALE.REF	F32     5.0		# FWHM reference for kernel parameter scaling
+	KERNEL.SIZE     S32	15		# Kernel half-size (pixels)
+	STAMP.FOOTPRINT S32	15		# Size of stamps (pixels)
+END
+
+WARPWARP_1DG	METADATA
+	  KERNEL.TYPE	STR	SIMPLE	# Use 1D Gaussian Convolution
+	  DUAL		BOOL	TRUE    # Dual convolution?
+	  INVERSE	BOOL	TRUE	# Generate inverse subtraction?
+	  PHOTOMETRY	BOOL	TRUE	# Perform photometry
+
+	  # This is not really used with the SIMPLE kernel
+	  SCALE.REF	F32	5.0 	# FWHM reference for kernel parameter scalinng
+	  KERNEL.SIZE	S32	15	# Kernel half-size (pixels);
+	  STAMP.FOOTPRINT S32	15	# Size of stamps (pixels);
+END
+
+
+
+# Difference of warp - stack
+WARPSTACK	METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+# WSdiff for PV3 to do inverse phot
+WARPSTACK_PV3       METADATA
+        DUAL                   BOOL    FALSE   # Dual convolution?
+        INVERSE                BOOL    TRUE    # Generate inverse subtraction?
+        PHOTOMETRY             BOOL    TRUE    # Perform photometry?
+        CONVOLVE.TARGET        STR     SINGLE2 # convolution direction
+	CHIP.MAP.FROM.POSITIVE BOOL    FALSE   # always use the warp for the chipmap, not subtrahend
+END
+
+WARPSTACK_1DG	METADATA
+	KERNEL.TYPE	STR	SIMPLE
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+# Difference of two stacks : uses SINGLE not DUAL convolution
+STACKSTACK	METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+STACKSTACK_1DG  METADATA
+	KERNEL.TYPE	STR	SIMPLE
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+STACKSTACK_CONV1      METADATA
+        DUAL            BOOL    FALSE   # Dual convolution?
+        INVERSE         BOOL    FALSE   # Generate inverse subtraction?
+        PHOTOMETRY      BOOL    TRUE    # Perform photometry?
+        CONVOLVE.TARGET STR     SINGLE1 # convolution direction
+END
+
+# Difference of two stacks : uses SINGLE not DUAL convolution
+STACKPHOT	METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+STACKPHOT_1DG	METADATA
+	KERNEL.TYPE	STR	SIMPLE
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+# Difference of warp - stack
+WARPSTACK_FORCED     METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+ FORCED.PHOTOMETRY.BOTH BOOL    TRUE    # forced photometry on input sources
+END
+
+# Difference of warp - quickstack
+WARPQSTACK	METADATA
+	DUAL		BOOL	TRUE	# Dual convolution?
+	INVERSE		BOOL	FALSE	# Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+
+	# penalty of 1.0
+	# DUAL convolution is more sensitive to the number of kernels
+	# do not provide as many orders as for SINGLE
+        # @ISIS.WIDTHS	F32	2.4  5.0  10.0  # Gaussian kernel FWHM values
+	@ISIS.WIDTHS	F32	1.5  3.0  6.0   # Gaussian kernel FWHM values
+	# @ISIS.WIDTHS	F32	2.0  3.0  5.0   # Gaussian kernel FWHM values
+        # @ISIS.WIDTHS	F32	2.1  4.2  8.4   # Gaussian kernel FWHM values
+	@ISIS.ORDERS	S32	2    2    2     # Polynomial orders for ISIS kernels
+
+	SCALE.REF	F32     5.0		# FWHM reference for kernel parameter scaling
+	KERNEL.SIZE     S32	15		# Kernel half-size (pixels)
+	STAMP.FOOTPRINT S32	15		# Size of stamps (pixels)
+END
+
+# Do no convolution
+UNCONVOLVED	METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	NOCONVOLVE      BOOL    TRUE
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+# Difference of warp - junkstack
+WARPJSTACK      METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	CONVOLVE.TARGET STR     SINGLE1	# convolution direction
+END
+
+
+#PR image class
+PR		METADATA
+	PHOTOMETRY	BOOL	FALSE
+END
+
+# Recipe overrides for DIFF
+DIFF.SINGLE1	METADATA
+  DUAL  	  BOOL    FALSE		# Dual convolution?
+  CONVOLVE.TARGET STR     SINGLE1		# convolution direction
+END
+
+# Recipe overrides for DIFF
+DIFF.SINGLE2	METADATA
+  DUAL  	  BOOL    FALSE		# Dual convolution?
+  CONVOLVE.TARGET STR     SINGLE2		# convolution direction
+END
+
+# Recipe overrides for DIFF
+DIFF_MAGICTEST_V0	METADATA
+	SPATIAL.ORDER   S32	0		# Spatial polynomial order
+END
+
+TEST.ISIS METADATA
+  KERNEL.TYPE	STR	ISIS_RADIAL	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  @ISIS.WIDTHS	F32	2.9 4.8 8.2     # Gaussian FWHMs for ISIS kernels
+  @ISIS.ORDERS	S32	4   2   2       # Polynomial orders for ISIS kernels
+END
+
+TEST.RADIAL METADATA
+END
+
+TEST.HERM METADATA
+END
+
+TEST.DECON METADATA
+END
+
+SSTF_DIFF METADATA
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	NOCONVOLVE      BOOL    TRUE
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+
+SSTF_DIFF_1DG METADATA 
+	KERNEL.TYPE     STR	SIMPLE
+	DUAL		BOOL	FALSE	# Dual convolution?
+	INVERSE		BOOL	FALSE   # Generate inverse subtraction?
+	PHOTOMETRY	BOOL	TRUE	# Perform photometry?
+	NOCONVOLVE      BOOL    TRUE
+	CONVOLVE.TARGET STR     SINGLE2	# convolution direction
+END
+	      
+
+# Gene's choice: multiplying by 1.75
+#@ISIS.WIDTHS	F32	1.8 3.3 5.8 10.2 17.9	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	2 2 2 2 2		# Polynomial orders for ISIS kernels
+# (pi/2)^i
+#@ISIS.WIDTHS	F32	1.6 2.5 3.9 6.1 9.6 15.0	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	2 2 2 2 2 2		# Polynomial orders for ISIS kernels
+# (e/2)^i for even i
+#@ISIS.WIDTHS	F32	1.4 3.4 6.3 11.6	# Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	6 4 4 2		# Polynomial orders for ISIS kernels
+# 1.69^i
+#@ISIS.WIDTHS	F32	2.9 4.8 8.2 13.8 23.3 # Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	4 2 2 2 2	# Polynomial orders for ISIS kernels
+
+# Paul's values
+# @ISIS.WIDTHS	F32	2.9 4.8 8.2 13.8 # Gaussian FWHMs for ISIS kernels
+# @ISIS.ORDERS	S32	4 2 2 2		# Polynomial orders for ISIS kernels
+
+# Armin's values
+#@ISIS.WIDTHS	F32	1.5 3.0 6.0 12.0   # Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	6   4   2   2      # Polynomial orders for ISIS kernels
+
+# test
+#@ISIS.WIDTHS	F32	4.0  6.0 9.0     # Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	6    4   2       # Polynomial orders for ISIS kernels
+
+#@ISIS.WIDTHS	F32	1.8  3.2  5.7   # Gaussian FWHMs for ISIS kernels
+#@ISIS.ORDERS	S32	2    4    2     # Polynomial orders for ISIS kernels
+
+# @ISIS.WIDTHS	F32	2.33 5.00  9.90   # hotpants values for test 01 - 00: 
+# @ISIS.WIDTHS	F32	2.47 5.29 10.86   # hotpants values for test 02 - 00: 
+# @ISIS.WIDTHS	F32	2.47 5.29 11.75   # hotpants values for test 03 - 00: 
+# @ISIS.WIDTHS	F32	2.47 5.29 13.54   # hotpants values for test 04 - 00: 
+# @ISIS.WIDTHS	F32	2.12 4.51 9.05    # hotpants values for test 07 - 00: 
+# @ISIS.ORDERS	S32	6    4    2       # Polynomial orders for ISIS kernels
+
+# @ISIS.WIDTHS	F32	1.90 4.07 8.11 16.22 # hotpants values for test 05 - 00: 
+# @ISIS.WIDTHS	F32	2.11 4.51 9.02 18.05 # hotpants values for test 06 - 00: 
+# @ISIS.ORDERS	S32	6    4    2    2    # Polynomial orders for ISIS kernels
+
Index: /trunk/ippconfig/simtest/camera.config
===================================================================
--- /trunk/ippconfig/simtest/camera.config	(revision 41416)
+++ /trunk/ippconfig/simtest/camera.config	(revision 41417)
@@ -46,4 +46,5 @@
 	PPSIM		STR	simtest/ppSim.config	# ppSim details
 	PPSUB		STR	simtest/ppSub.config	# ppSub details
+	GDIFF		STR	simtest/gDiff.config	# ppSub details
 	PPSTACK		STR	simtest/ppStack.config	# ppStack recipe overrides
 	PSASTRO		STR	simtest/psastro.config	# psastro details
Index: /trunk/ippconfig/simtest/gDiff.config
===================================================================
--- /trunk/ippconfig/simtest/gDiff.config	(revision 41417)
+++ /trunk/ippconfig/simtest/gDiff.config	(revision 41417)
@@ -0,0 +1,47 @@
+### Recipe file for ppSub
+
+STAMP.SPACING   F32	25		# Typical spacing between stamps (pixels)
+
+TEST.RADIAL METADATA
+  KERNEL.TYPE	STR	ISIS_RADIAL    	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  #@ISIS.WIDTHS	F32     2.2  3.3  5.0   # Gaussian FWHMs for ISIS kernels -- good
+  #@ISIS.WIDTHS	F32     2.0  3.3  5.4   # Gaussian FWHMs for ISIS kernels -- good
+  @ISIS.WIDTHS	F32     1.8  3.3  5.8   # Gaussian FWHMs for ISIS kernels -- good
+  #@ISIS.WIDTHS	F32	1.6  3.3  6.6   # Gaussian FWHMs for ISIS kernels -- poor (+/- 3.0%, some pix ringing)
+
+  #@ISIS.WIDTHS	F32     1.7  3.0  5.3   # Gaussian FWHMs for ISIS kernels -- good
+  #@ISIS.WIDTHS	F32     2.3  4.0  7.0   # Gaussian FWHMs for ISIS kernels -- bad (ringing and large swings)
+  #@ISIS.WIDTHS	F32     2.1  3.6  6.3   # Gaussian FWHMs for ISIS kernels -- ok (no ringing, but larger kernel and 1.5% swings)
+
+  #@ISIS.WIDTHS	F32     1.5  2.5  4.1   # Gaussian FWHMs for ISIS kernels -- good (+/- 1.2%)
+  #@ISIS.WIDTHS	F32     1.5  2.5  9.0   # Gaussian FWHMs for ISIS kernels -- some ringing
+  #@ISIS.WIDTHS	F32	1.5  2.5  6.8   # Gaussian FWHMs for ISIS kernels -- good (+/- 1.1%?)
+  #@ISIS.WIDTHS	F32	2.4  4.0  10.9  # Gaussian FWHMs for ISIS kernels -- bad (lots of pixel-to-pixel ringing...)
+  #@ISIS.WIDTHS	F32	1.8  3.0  8.2   # Gaussian FWHMs for ISIS kernels -- not bad (+/- 1.5%)
+  #@ISIS.WIDTHS	F32	2.0  3.3  9.0   # Gaussian FWHMs for ISIS kernels -- good (+/- 1.0%)
+  # @ISIS.ORDERS	S32	2    2    2     # Polynomial orders for ISIS kernels
+  # @ISIS.ORDERS	S32	4 4 4		# Polynomial orders for ISIS kernels
+  @ISIS.ORDERS	S32	2 2 2		# Polynomial orders for ISIS kernels
+END
+
+TEST.ISIS METADATA
+  KERNEL.TYPE	STR	ISIS    	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  @ISIS.WIDTHS	F32	1.8 3.3 5.8   	# Gaussian FWHMs for ISIS kernels
+  # @ISIS.WIDTHS	F32	1 2 4 8   	# Gaussian FWHMs for ISIS kernels
+  @ISIS.ORDERS	S32	2 2 2		# Polynomial orders for ISIS kernels
+  # @ISIS.ORDERS	S32	2 2 2 2		# Polynomial orders for ISIS kernels
+  # @ISIS.ORDERS	S32	4 4 4		# Polynomial orders for ISIS kernels
+END
+
+TEST.HERM METADATA
+  KERNEL.TYPE	STR	HERM            # Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  @ISIS.WIDTHS	F32	2.0		# Gaussian FWHMs for ISIS or HERM kernels
+  @ISIS.ORDERS	S32	8   		# Polynomial orders for ISIS kernels
+END
+
+TEST.DECON METADATA
+  KERNEL.TYPE	STR	DECONV_HERM	# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
+  @ISIS.WIDTHS	F32	3.7		# Gaussian FWHMs for ISIS or HERM kernels
+  @ISIS.ORDERS	S32	8   		# Polynomial orders for ISIS kernels
+END
+
Index: /trunk/ippconfig/system.config
===================================================================
--- /trunk/ippconfig/system.config	(revision 41416)
+++ /trunk/ippconfig/system.config	(revision 41417)
@@ -53,4 +53,5 @@
 	PPSIM		STR		recipes/ppSim.config	# Simulations
 	PPSUB		STR		recipes/ppSub.config	# Subtraction
+	GDIFF		STR		recipes/gDiff.config	# Subtraction
 	ADDSTAR         STR             recipes/addstar.config  # addstar to dvodb
 	JPEG		STR		recipes/jpeg.mdc	# JPEG creation
