Index: trunk/ippconfig/gpc1/camera.config
===================================================================
--- trunk/ippconfig/gpc1/camera.config	(revision 26831)
+++ trunk/ippconfig/gpc1/camera.config	(revision 26902)
@@ -149,3 +149,3 @@
 PHOTCODE.RULE           STR     {DETECTOR}.{FILTER.ID}.{CHIP.NAME}	# Rule for generating photcode
 
-BURNTOOL.STATE.GOOD     S16     13  # Value for burntool_state with the most recent bt version.
+BURNTOOL.STATE.GOOD     S16     14  # Value for burntool_state with the most recent bt version.
Index: trunk/ippconfig/gpc1/ppImage.config
===================================================================
--- trunk/ippconfig/gpc1/ppImage.config	(revision 26831)
+++ trunk/ippconfig/gpc1/ppImage.config	(revision 26902)
@@ -24,6 +24,6 @@
 NOISEMAP                BOOL    FALSE          # Apply read noise map
 
-PATTERN		BOOL 	FALSE	# Do any pattern subtraction at all?
-PATTERN.SUBSET	METADATA	# List of chips and whether to do pattern subtraction
+PATTERN.ROW		BOOL 	FALSE	# Do any row pattern correction at all?
+PATTERN.ROW.SUBSET	METADATA	# List of chips and whether to do row pattern correction
 	XY01	BOOL	FALSE
 	XY02	BOOL	FALSE
@@ -37,66 +37,5 @@
 	XY13	BOOL	FALSE
 	XY14	BOOL	FALSE
-	XY15	METADATA
-		xy01	BOOL	TRUE
-		xy02	BOOL	TRUE
-		xy03	BOOL	TRUE
-		xy04	BOOL	TRUE
-		xy05	BOOL	TRUE
-		xy06	BOOL	TRUE
-		xy10	BOOL	FALSE
-		xy11	BOOL	FALSE
-		xy12	BOOL	FALSE
-		xy13	BOOL	FALSE
-		xy14	BOOL	FALSE
-		xy15	BOOL	FALSE
-		xy16	BOOL	FALSE
-		xy17	BOOL	FALSE
-		xy20	BOOL	FALSE
-		xy21	BOOL	FALSE
-		xy22	BOOL	FALSE
-		xy23	BOOL	FALSE
-		xy24	BOOL	FALSE
-		xy25	BOOL	FALSE
-		xy26	BOOL	FALSE
-		xy27	BOOL	FALSE
-		xy30	BOOL	FALSE
-		xy31	BOOL	FALSE
-		xy32	BOOL	FALSE
-		xy33	BOOL	FALSE
-		xy34	BOOL	FALSE
-		xy35	BOOL	FALSE
-		xy36	BOOL	FALSE
-		xy37	BOOL	FALSE
-		xy40	BOOL	FALSE
-		xy41	BOOL	FALSE
-		xy42	BOOL	FALSE
-		xy43	BOOL	FALSE
-		xy44	BOOL	FALSE
-		xy45	BOOL	FALSE
-		xy46	BOOL	FALSE
-		xy47	BOOL	FALSE
-		xy50	BOOL	FALSE
-		xy51	BOOL	FALSE
-		xy52	BOOL	FALSE
-		xy53	BOOL	FALSE
-		xy54	BOOL	FALSE
-		xy55	BOOL	FALSE
-		xy56	BOOL	FALSE
-		xy57	BOOL	FALSE
-		xy60	BOOL	FALSE
-		xy61	BOOL	FALSE
-		xy62	BOOL	FALSE
-		xy63	BOOL	FALSE
-		xy64	BOOL	FALSE
-		xy65	BOOL	FALSE
-		xy66	BOOL	FALSE
-		xy67	BOOL	FALSE
-		xy71	BOOL	FALSE
-		xy72	BOOL	FALSE
-		xy73	BOOL	FALSE
-		xy74	BOOL	FALSE
-		xy75	BOOL	FALSE
-		xy76	BOOL	FALSE
-	END
+	XY15	STR     1111111100000000000000000000000000000000000000000000000000000000 # cols: 0
 	XY16	BOOL	FALSE
 	XY17	BOOL	FALSE
@@ -108,69 +47,8 @@
 	XY25	BOOL	FALSE
 	XY26	BOOL	FALSE
-	XY27	BOOL	FALSE
+	XY27	STR     1111111111111111111111111111111100000000000000000000000011111111 # cols: 0,1,2,3,7
 	XY30	BOOL	FALSE
 	XY31	BOOL	FALSE
-	XY32	METADATA
-		xy01	BOOL	FALSE
-		xy02	BOOL	FALSE
-		xy03	BOOL	FALSE
-		xy04	BOOL	FALSE
-		xy05	BOOL	FALSE
-		xy06	BOOL	FALSE
-		xy10	BOOL	FALSE
-		xy11	BOOL	FALSE
-		xy12	BOOL	FALSE
-		xy13	BOOL	FALSE
-		xy14	BOOL	FALSE
-		xy15	BOOL	FALSE
-		xy16	BOOL	FALSE
-		xy17	BOOL	FALSE
-		xy20	BOOL	FALSE
-		xy21	BOOL	FALSE
-		xy22	BOOL	FALSE
-		xy23	BOOL	FALSE
-		xy24	BOOL	FALSE
-		xy25	BOOL	FALSE
-		xy26	BOOL	FALSE
-		xy27	BOOL	FALSE
-		xy30	BOOL	TRUE
-		xy31	BOOL	TRUE
-		xy32	BOOL	TRUE
-		xy33	BOOL	TRUE
-		xy34	BOOL	TRUE
-		xy35	BOOL	TRUE
-		xy36	BOOL	TRUE
-		xy37	BOOL	TRUE
-		xy40	BOOL	FALSE
-		xy41	BOOL	FALSE
-		xy42	BOOL	FALSE
-		xy43	BOOL	FALSE
-		xy44	BOOL	FALSE
-		xy45	BOOL	FALSE
-		xy46	BOOL	FALSE
-		xy47	BOOL	FALSE
-		xy50	BOOL	FALSE
-		xy51	BOOL	FALSE
-		xy52	BOOL	FALSE
-		xy53	BOOL	FALSE
-		xy54	BOOL	FALSE
-		xy55	BOOL	FALSE
-		xy56	BOOL	FALSE
-		xy57	BOOL	FALSE
-		xy60	BOOL	FALSE
-		xy61	BOOL	FALSE
-		xy62	BOOL	FALSE
-		xy63	BOOL	FALSE
-		xy64	BOOL	FALSE
-		xy65	BOOL	FALSE
-		xy66	BOOL	FALSE
-		xy67	BOOL	FALSE
-		xy71	BOOL	TRUE
-		xy72	BOOL	TRUE
-		xy73	BOOL	TRUE
-		xy74	BOOL	TRUE
-		xy75	BOOL	TRUE
-		xy76	BOOL	TRUE
-	END
+	XY32	STR     0000000000000000000000001111111100000000000000000000000011111111 # cols: 3,7
 	XY33	BOOL	FALSE
 	XY34	BOOL	FALSE
@@ -183,66 +61,69 @@
 	XY43	BOOL	FALSE
 	XY44	BOOL	FALSE
-	XY45	METADATA
-		xy01	BOOL	FALSE
-		xy02	BOOL	FALSE
-		xy03	BOOL	FALSE
-		xy04	BOOL	FALSE
-		xy05	BOOL	FALSE
-		xy06	BOOL	FALSE
-		xy10	BOOL	FALSE
-		xy11	BOOL	FALSE
-		xy12	BOOL	FALSE
-		xy13	BOOL	FALSE
-		xy14	BOOL	FALSE
-		xy15	BOOL	FALSE
-		xy16	BOOL	FALSE
-		xy17	BOOL	FALSE
-		xy20	BOOL	FALSE
-		xy21	BOOL	FALSE
-		xy22	BOOL	FALSE
-		xy23	BOOL	FALSE
-		xy24	BOOL	FALSE
-		xy25	BOOL	FALSE
-		xy26	BOOL	FALSE
-		xy27	BOOL	FALSE
-		xy30	BOOL	TRUE
-		xy31	BOOL	TRUE
-		xy32	BOOL	TRUE
-		xy33	BOOL	TRUE
-		xy34	BOOL	TRUE
-		xy35	BOOL	TRUE
-		xy36	BOOL	TRUE
-		xy37	BOOL	TRUE
-		xy40	BOOL	FALSE
-		xy41	BOOL	FALSE
-		xy42	BOOL	FALSE
-		xy43	BOOL	FALSE
-		xy44	BOOL	FALSE
-		xy45	BOOL	FALSE
-		xy46	BOOL	FALSE
-		xy47	BOOL	FALSE
-		xy50	BOOL	FALSE
-		xy51	BOOL	FALSE
-		xy52	BOOL	FALSE
-		xy53	BOOL	FALSE
-		xy54	BOOL	FALSE
-		xy55	BOOL	FALSE
-		xy56	BOOL	FALSE
-		xy57	BOOL	FALSE
-		xy60	BOOL	FALSE
-		xy61	BOOL	FALSE
-		xy62	BOOL	FALSE
-		xy63	BOOL	FALSE
-		xy64	BOOL	FALSE
-		xy65	BOOL	FALSE
-		xy66	BOOL	FALSE
-		xy67	BOOL	FALSE
-		xy71	BOOL	TRUE
-		xy72	BOOL	TRUE
-		xy73	BOOL	TRUE
-		xy74	BOOL	TRUE
-		xy75	BOOL	TRUE
-		xy76	BOOL	TRUE
-	END
+	XY45	STR     0000000000000000000000001111111100000000000000000000000011111111 # cols: 3,7
+	XY46	BOOL	FALSE
+	XY47	STR     1111111100000000000000001111111100000000111111110000000011111111 # cols: 0,3,5,7
+	XY50	BOOL	FALSE
+	XY51	BOOL	FALSE
+	XY52	BOOL	FALSE
+	XY53	BOOL	FALSE
+	XY54	BOOL	FALSE
+	XY55	BOOL	FALSE
+	XY56	BOOL	FALSE
+	XY57	STR     1111111111111111111111110000000000000000000000001111111111111111 # cols: 0,1,2,6,7
+	XY60	STR	0000000000000000000000000000000000000000000001000000000000000000 # cell xy55
+	XY61	BOOL	FALSE
+	XY62	BOOL	FALSE
+	XY63	BOOL	FALSE
+	XY64	BOOL	FALSE
+	XY65	BOOL	FALSE
+	XY66	BOOL	FALSE
+	XY67	BOOL	FALSE
+	XY71	BOOL	FALSE
+	XY72	BOOL	FALSE
+	XY73	BOOL	FALSE
+	XY74	STR     0000000000000000111111110000000000000000000000000000000011111111 # cols: 2,7
+	XY75	BOOL	FALSE
+	XY76	BOOL	FALSE
+END
+
+PATTERN.CELL	BOOL 	FALSE		# by default, do not do any cell pattern correction
+PATTERN.CELL.SUBSET	METADATA	# List of chips and whether to do cell pattern correction
+	XY01	BOOL	FALSE
+	XY02	BOOL	FALSE
+	XY03	BOOL	FALSE
+	XY04	BOOL	FALSE
+	XY05	BOOL	FALSE
+	XY06    STR     11010000000100000001101001000000000000000000000000000000000000000
+	XY10	BOOL	FALSE
+	XY11	BOOL	FALSE
+	XY12	BOOL	FALSE
+	XY13	BOOL	FALSE
+	XY14	STR     0000000000000000000000000000000000000000000000010000000000101101
+	XY15	STR     0011111100011000000001000000010000001001000111110001010000011111
+	XY16	STR     0000000100000000000000000000000000000001000000000000000000000000
+	XY17	BOOL	FALSE
+	XY20	BOOL	FALSE
+	XY21	BOOL	FALSE
+	XY22	BOOL	FALSE
+	XY23	BOOL	FALSE
+	XY24	STR     0000000000100000000000000110100000100000001000000011100000000000
+	XY25	STR     0100010000001001001011000000001000000111000110000000100000000010
+	XY26	STR     0000000000000100000000000000000000001000001000000000000000000000
+	XY27	BOOL	FALSE
+	XY30	BOOL	FALSE
+	XY31	BOOL	FALSE
+	XY32	BOOL	FALSE
+	XY33	BOOL	FALSE
+	XY34	STR     0000000000000000000000000000000000000001000011000000101000111111
+	XY35	BOOL	FALSE
+	XY36	STR     0000000000000000000000000000000000010000000000000000000000000000
+	XY37	STR     0000000000000000000000000000000100010001000000001011000010110110
+	XY40	STR     0000000000000000000000000010110000000000000001110000001000011111
+	XY41	BOOL	FALSE
+	XY42	BOOL	FALSE
+	XY43	STR     0000000000000000000000010000000100000000000010000100000100000100
+	XY44	BOOL	FALSE
+	XY45	BOOL	FALSE
 	XY46	BOOL	FALSE
 	XY47	BOOL	FALSE
@@ -257,5 +138,5 @@
 	XY60	BOOL	FALSE
 	XY61	BOOL	FALSE
-	XY62	BOOL	FALSE
+	XY62	STR     0000000000000000000000000000000000001000000000000000000100001010
 	XY63	BOOL	FALSE
 	XY64	BOOL	FALSE
@@ -264,11 +145,10 @@
 	XY67	BOOL	FALSE
 	XY71	BOOL	FALSE
-	XY72	BOOL	FALSE
-	XY73	BOOL	FALSE
+	XY72	STR     0000000000000000000000000000000000000000000000000000000000000001
+	XY73	STR     0001100000000000000000000000001000000000000000000000000000000000
 	XY74	BOOL	FALSE
 	XY75	BOOL	FALSE
 	XY76	BOOL	FALSE
 END
-
 
 TILTYSTREAK.BY.CLASS METADATA              # apply the 'tiltystreak' tool
@@ -403,7 +283,8 @@
   FLAT             BOOL    TRUE            # Flat-field normalisation
   MASK             BOOL    TRUE            # Mask bad pixels
-  MASK.BURNTOOL      BOOL    TRUE            # Mask potential burntool trails
-  PATTERN          BOOL    TRUE            # Subtract pattern noise
-  FRINGE           BOOL    FALSE           # Fringe subtraction
+  MASK.BURNTOOL    BOOL    TRUE            # Mask potential burntool trails
+  PATTERN.ROW      BOOL    TRUE            # Row pattern correction
+  PATTERN.CELL	   BOOL	   TRUE		   # Cell pattern correction
+  FRINGE           BOOL    TRUE            # Fringe subtraction
   BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
   BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
@@ -1179,5 +1060,6 @@
   MASK             BOOL    TRUE            # Mask bad pixels
   FRINGE           BOOL    FALSE           # Fringe subtraction
-  PATTERN          BOOL    TRUE            # Subtract pattern noise
+  PATTERN.ROW      BOOL    TRUE            # Row pattern correction
+  PATTERN.CELL	   BOOL	   TRUE		   # Cell pattern correction
   BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
   BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
@@ -1188,5 +1070,4 @@
   CROSSTALK.MEASURE  BOOL  TRUE            # Subtract model background?
 END
-
 
 
@@ -1216,5 +1097,6 @@
   CROSSTALK.MEASURE  BOOL    TRUE            # Subtract model background?
   TILTYSTREAK.APPLY  BOOL    FALSE           # apply the 'tiltystreak' tool
-  PATTERN            BOOL    TRUE            # Subtract pattern noise
+  PATTERN.ROW        BOOL    TRUE            # Row pattern correction
+  PATTERN.CELL	     BOOL    TRUE	     # Cell pattern correction
   NOISEMAP           BOOL    TRUE            # Apply read noise map
 END
Index: trunk/ippconfig/gpc1/ppMerge.config
===================================================================
--- trunk/ippconfig/gpc1/ppMerge.config	(revision 26831)
+++ trunk/ippconfig/gpc1/ppMerge.config	(revision 26902)
@@ -43,6 +43,23 @@
 # END
 
+# 2010.02.02 -- this was the dark rule for the dark master from 20100124
 # Ordinates for fitting dark current as function of darktime and fpa temp:
 # Counts = C0 + (CT0 + CT1*Temp + CT2*Temp^2)*exptime
+# the 0th order term is implied, right?
+# Note: GPC1 has bad values for DARKTIME in unpredictable cells; use EXPOSURE for now
+# DARK.ORDINATES	METADATA
+# 	CELL.EXPOSURE	S32	1
+#  	TEMP	METADATA
+#  		ORDER	S32	1
+# 		RULE	STR	CHIP.TEMP * CELL.EXPOSURE
+#  	END
+#  	TEMP2	METADATA
+#  		ORDER	S32	1
+# 		RULE	STR	CHIP.TEMP * CHIP.TEMP * CELL.EXPOSURE
+#  	END
+# END
+
+# Ordinates for fitting dark current as function of darktime and fpa temp:
+# Counts = C0 + (CT0 + CT1*Temp)*exptime
 # the 0th order term is implied, right?
 # Note: GPC1 has bad values for DARKTIME in unpredictable cells; use EXPOSURE for now
@@ -53,7 +70,3 @@
 		RULE	STR	CHIP.TEMP * CELL.EXPOSURE
  	END
- 	TEMP2	METADATA
- 		ORDER	S32	1
-		RULE	STR	CHIP.TEMP * CHIP.TEMP * CELL.EXPOSURE
- 	END
 END
Index: trunk/ippconfig/gpc1/psastro.config
===================================================================
--- trunk/ippconfig/gpc1/psastro.config	(revision 26831)
+++ trunk/ippconfig/gpc1/psastro.config	(revision 26902)
@@ -69,4 +69,5 @@
 PSASTRO.MOSAIC.MODE         BOOL   TRUE
 
+# for iterations >= N, require a single match per reference
 PSASTRO.MOSAIC.CHIP.NITER     S32      5  # fit clipping iterations (NOTE: last iteration is NITER, not NITER - 1)
 PSASTRO.MOSAIC.CHIP.NSIGMA    F32      3  # fit clipping sigmas
@@ -151,4 +152,10 @@
   GHOST_MAX_MAG                   F32 -25.0
 END
+PHOTCODE.DATA METADATA
+  FILTER   STR w
+  ZEROPT   F32 25.1
+  PHOTCODE STR r_SYNTH
+  GHOST_MAX_MAG                   F32 -20.0
+END
 
 REFSTAR_MASK                    BOOL TRUE
@@ -156,10 +163,11 @@
 REFSTAR_MASK_SATSTAR_MAG_MAX    F32 -17.40
 REFSTAR_MASK_SATSTAR_MAG_SLOPE  F32  13.45
-REFSTAR_MASK_SATSTAR_POS_ZERO   F32  -0.779
-
-# Length = SLOPE*(MAG_MAX - InstMag)
-
-REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32  52.00
-REFSTAR_MASK_SATSPIKE_MAG_MAX   F32 -16.20
+REFSTAR_MASK_SATSTAR_POS_ZERO   F32  -0.798
+
+# Length = 10**(SLOPE*(MAG_MAX - InstMag)) - OFFSET
+
+REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32  0.096
+REFSTAR_MASK_SATSPIKE_MAG_MAX   F32  7.35
+REFSTAR_MASK_SATSPIKE_OFFSET    F32 200.0
 
 # pair 1 (longer)
Index: trunk/ippconfig/isp/format.config
===================================================================
--- trunk/ippconfig/isp/format.config	(revision 26831)
+++ trunk/ippconfig/isp/format.config	(revision 26902)
@@ -73,4 +73,7 @@
 	CELL.XSIZE	S32	2048
 	CELL.YSIZE	S32	2048
+        FPA.LONGITUDE   STR     10:25:01.417 # West Longitude in Hours 10.4170608521
+        FPA.LATITUDE    STR     20:42:25.558 # North Latitude in Degrees 20.7070999146
+        FPA.ELEVATION   F32     3048.0 # altitude in meters
 	FPA.TIMESYS	STR	UTC
 	CELL.SATURATION	F32	60000
Index: trunk/ippconfig/megacam/psastro.config
===================================================================
--- trunk/ippconfig/megacam/psastro.config	(revision 26831)
+++ trunk/ippconfig/megacam/psastro.config	(revision 26902)
@@ -1,2 +1,5 @@
+
+# save matched stars?
+PSASTRO.SAVE.REFMATCH      BOOL TRUE  # save refstar matches as table in output smf file
 
 # astrometry matching parameters
@@ -40,5 +43,5 @@
 
 PSASTRO.MIN.INST.MAG.RAW       F32      -17.0  # min instrumental magnitude for stars accepted for fitting
-PSASTRO.MAX.INST.MAG.RAW       F32       -8.0  # max instrumental magnitude for stars accepted for fitting
+PSASTRO.MAX.INST.MAG.RAW       F32      -11.0  # max instrumental magnitude for stars accepted for fitting
 
 PSASTRO.MAX.ERROR      F32      10.0 # max error in pixels
@@ -47,11 +50,16 @@
 PSASTRO.MOSAIC.MODE           BOOL     TRUE
 
-PSASTRO.MOSAIC.MAX.ERROR.N0 F32    1.50 # max allow error for valid solution (arcsec)
-PSASTRO.MOSAIC.MAX.ERROR.N1 F32    1.50 # max allow error for valid solution (arcsec)
-PSASTRO.MOSAIC.MAX.ERROR.N2 F32    0.90 # max allow error for valid solution (arcsec)
-PSASTRO.MOSAIC.MAX.ERROR.N3 F32    0.90 # max allow error for valid solution (arcsec)
-PSASTRO.MOSAIC.MAX.ERROR.N4 F32    0.90 # max allow error for valid solution (arcsec)
+# for iterations >= N, require a single match per reference
+PSASTRO.MOSAIC.CHIP.NITER     S32      4  # fit clipping iterations
+PSASTRO.MOSAIC.CHIP.NSIGMA    F32      3  # fit clipping sigmas
+PSASTRO.MOSAIC.UNIQ.ITER      S32      2
 
-PSASTRO.MOSAIC.RADIUS.N0    F32    10.0
+PSASTRO.MOSAIC.MAX.ERROR.N0 F32    0.00 # max allow error for valid solution (arcsec)
+PSASTRO.MOSAIC.MAX.ERROR.N1 F32    0.00 # max allow error for valid solution (arcsec)
+PSASTRO.MOSAIC.MAX.ERROR.N2 F32    0.00 # max allow error for valid solution (arcsec)
+PSASTRO.MOSAIC.MAX.ERROR.N3 F32    0.00 # max allow error for valid solution (arcsec)
+PSASTRO.MOSAIC.MAX.ERROR.N4 F32    2.00 # max allow error for valid solution (arcsec)
+
+PSASTRO.MOSAIC.RADIUS.N0    F32    15.0
 PSASTRO.MOSAIC.RADIUS.N1    F32     8.0 # do not refine the match
 PSASTRO.MOSAIC.RADIUS.N2    F32     8.0 # do not refine the match
@@ -61,5 +69,5 @@
 PSASTRO.MOSAIC.CHIP.ORDER.N0  S32      0 # fit order (-1 means use default)
 PSASTRO.MOSAIC.CHIP.ORDER.N1  S32      0 # fit order (-1 means use default)
-PSASTRO.MOSAIC.CHIP.ORDER.N2  S32      0 # fit order (-1 means use default)
+PSASTRO.MOSAIC.CHIP.ORDER.N2  S32      1 # fit order (-1 means use default)
 PSASTRO.MOSAIC.CHIP.ORDER.N3  S32      1 # fit order (-1 means use default)
 PSASTRO.MOSAIC.CHIP.ORDER.N4  S32      3 # fit order (-1 means use default)
Index: trunk/ippconfig/recipes/filerules-mef.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-mef.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-mef.mdc	(revision 26902)
@@ -247,4 +247,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg                  JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits                 IMAGE     COMP_SUB   FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits            MASK      COMP_MASK  FPA        TRUE      NONE
@@ -252,8 +253,8 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf                  CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc                TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits           MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits         VARIANCE  COMP_WT    FPA        TRUE      NONE
-PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits          MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.REF.CONV.VARIANCE	OUTPUT {OUTPUT}.refConv.wt.fits          VARIANCE  COMP_WT    FPA        TRUE      NONE
@@ -301,4 +302,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.{CHIP.NAME}.fits        IMAGE     NONE       CHIP       TRUE      MEF
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.{CHIP.NAME}.mk.fits     MASK      NONE       CHIP       TRUE      MEF
Index: trunk/ippconfig/recipes/filerules-simple.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-simple.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-simple.mdc	(revision 26902)
@@ -197,4 +197,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg       JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg       JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg      JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits     IMAGE     NONE       FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits MASK     NONE       FPA        TRUE      NONE
@@ -202,10 +203,10 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf      CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc    TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits     IMAGE  COMP_SUB   FPA        TRUE      NONE
-PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits  MASK   COMP_MASK  FPA        TRUE      NONE
-PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits VARIANCE COMP_WT FPA        TRUE      NONE
-PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits    IMAGE  COMP_SUB   FPA        TRUE      NONE
-PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits MASK   COMP_MASK  FPA        TRUE      NONE
-PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits VARIANCE COMP_WT  FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits     IMAGE  NONE       FPA        TRUE      NONE
+PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits  MASK   NONE       FPA        TRUE      NONE
+PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits VARIANCE NONE    FPA        TRUE      NONE
+PPSUB.REF.CONV        	OUTPUT {OUTPUT}.refConv.fits    IMAGE  NONE       FPA        TRUE      NONE
+PPSUB.REF.CONV.MASK   	OUTPUT {OUTPUT}.refConv.mk.fits MASK   NONE       FPA        TRUE      NONE
+PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits VARIANCE NONE     FPA        TRUE      NONE
 					     
 PPSTACK.OUTPUT          OUTPUT {OUTPUT}.fits         IMAGE     NONE       FPA        TRUE      NONE
@@ -249,4 +250,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf          CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.fits        IMAGE     NONE       FPA        TRUE      SIMPLE
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.mk.fits     MASK      NONE       FPA        TRUE      SIMPLE
Index: trunk/ippconfig/recipes/filerules-split.mdc
===================================================================
--- trunk/ippconfig/recipes/filerules-split.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/filerules-split.mdc	(revision 26902)
@@ -122,4 +122,6 @@
 PPBGRESTORE.INPUT       INPUT    @FILES        CHIP       IMAGE
 PPBGRESTORE.BACKMDL     INPUT    @FILES        CHIP       IMAGE
+
+PPVIZPATTERN.INPUT	INPUT	 @FILES	       CHIP	  PATTERN
 
 ### output file definitions
@@ -147,5 +149,5 @@
 PPIMAGE.JPEG1           OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPIMAGE.JPEG2           OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
-
+PPIMAGE.PATTERN		OUTPUT {OUTPUT}.{CHIP.NAME}.ptn		 PATTERN   NONE	      CHIP	 TRUE	   NONE
 PPIMAGE.STATS           OUTPUT {OUTPUT}.{CHIP.NAME}.stats        STATS     NONE       CHIP       TRUE      NONE
 
@@ -214,4 +216,5 @@
 PPSUB.OUTPUT.JPEG1      OUTPUT {OUTPUT}.b1.jpg                   JPEG      NONE       FPA        TRUE      NONE
 PPSUB.OUTPUT.JPEG2      OUTPUT {OUTPUT}.b2.jpg                   JPEG      NONE       FPA        TRUE      NONE
+PPSUB.OUTPUT.RESID.JPEG OUTPUT {OUTPUT}.res.jpg                  JPEG      NONE       FPA        TRUE      NONE
 PPSUB.INVERSE           OUTPUT {OUTPUT}.inv.fits                 IMAGE     COMP_SUB   FPA        TRUE      NONE
 PPSUB.INVERSE.MASK      OUTPUT {OUTPUT}.inv.mask.fits            MASK      COMP_MASK  FPA        TRUE      NONE
@@ -219,8 +222,8 @@
 PPSUB.INVERSE.SOURCES   OUTPUT {OUTPUT}.inv.cmf                  CMF       NONE       FPA        TRUE      NONE
 PPSUB.CONFIG            OUTPUT {OUTPUT}.ppSub.mdc                TEXT      NONE       FPA        TRUE      NONE
-PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.INPUT.CONV        OUTPUT {OUTPUT}.inConv.fits              IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.INPUT.CONV.MASK   OUTPUT {OUTPUT}.inConv.mk.fits           MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.INPUT.CONV.VARIANCE OUTPUT {OUTPUT}.inConv.wt.fits         VARIANCE  COMP_WT    FPA        TRUE      NONE
-PPSUB.REF.CONV          OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_SUB   FPA        TRUE      NONE
+PPSUB.REF.CONV          OUTPUT {OUTPUT}.refConv.fits             IMAGE     COMP_IMG   FPA        TRUE      NONE
 PPSUB.REF.CONV.MASK     OUTPUT {OUTPUT}.refConv.mk.fits          MASK      COMP_MASK  FPA        TRUE      NONE
 PPSUB.REF.CONV.VARIANCE OUTPUT {OUTPUT}.refConv.wt.fits          VARIANCE  COMP_WT    FPA        TRUE      NONE
@@ -268,4 +271,9 @@
 CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
 
+MAGIC.ORIGINAL.PNG      OUTPUT {OUTPUT}_original.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.RESIDUAL.PNG      OUTPUT {OUTPUT}_residual.png             JPEG      NONE       FPA        TRUE      NONE
+MAGIC.MASK.PNG          OUTPUT {OUTPUT}_mask.png                 JPEG      NONE       FPA        TRUE      NONE
+MAGIC.DUPLICATE.PNG     OUTPUT {OUTPUT}_duplicate.png            JPEG      NONE       FPA        TRUE      NONE
+
 PPSMOOTH.OUTPUT          OUTPUT {OUTPUT}.{CHIP.NAME}.fits        IMAGE     NONE       CHIP       TRUE      MEF
 PPSMOOTH.OUTPUT.MASK     OUTPUT {OUTPUT}.{CHIP.NAME}.mk.fits     MASK      NONE       CHIP       TRUE      MEF
@@ -276,5 +284,6 @@
 
 PPVIZPSF.OUTPUT		OUTPUT {OUTPUT}.{CHIP.NAME}.fits         IMAGE     NONE       CHIP       TRUE      NONE
-
+PPVIZPATTERN.OUTPUT	OUTPUT {OUTPUT}.{CHIP.NAME}.fits	 IMAGE	   NONE	      CHIP	 TRUE	   NONE
+PPVIZPATTERN.CHIP	OUTPUT {OUTPUT}.{CHIP.NAME}.ch.fits	 IMAGE	   NONE	      CHIP	 TRUE	   NONE
 
 # {FPA.OBS}
Index: trunk/ippconfig/recipes/jpeg.mdc
===================================================================
--- trunk/ippconfig/recipes/jpeg.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/jpeg.mdc	(revision 26902)
@@ -41,4 +41,11 @@
 END
 
+PPSUB.OUTPUT.RESID.JPEG	METADATA
+	COLORMAP	STR	-greyscale
+	SCALE.MODE	STR	RANGE
+	SCALE.MIN	F32	 -5.0
+	SCALE.MAX	F32	 +5.0
+END
+
 PPSTACK.OUTPUT.JPEG1	METADATA
 	COLORMAP	STR	-greyscale
Index: trunk/ippconfig/recipes/ppImage.config
===================================================================
--- trunk/ippconfig/recipes/ppImage.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppImage.config	(revision 26902)
@@ -18,5 +18,10 @@
 MASK.BURNTOOL      BOOL    FALSE           # Mask potential burntool trails
 VARIANCE.BUILD     BOOL    FALSE           # Build internal variance image
-PATTERN            BOOL    FALSE           # Fit and remove pattern noise?
+PATTERN.ROW        BOOL    FALSE           # Row pattern correction
+PATTERN.ROW.SUBSET METADATA		   # Menu of chips and/or cells for row pattern correction
+END
+PATTERN.CELL       BOOL    FALSE           # Cell pattern correction
+PATTERN.CELL.SUBSET METADATA		   # Menu of chips and/or cells for cell pattern correction
+END
 PATTERN.SUBSET	   METADATA
 END
@@ -31,4 +36,5 @@
 TILTYSTREAK.APPLY  BOOL    FALSE           # apply the 'tiltystreak' tool
 
+GAIN.OVERRIDE		BOOL	TRUE		# Override a non-finite gain?
 
 TILTYSTREAK.BY.CLASS METADATA              # apply the 'tiltystreak' tool
@@ -89,10 +95,12 @@
 
 # Pattern subtraction options
-PATTERN.ORDER      S32     2               # Polynomial order
-PATTERN.ITER       S32     4               # Rejection iterations
-PATTERN.REJ        F32     2.5             # Rejection threshold
-PATTERN.THRESH     F32	   20.0		   # Ignore threshold
-PATTERN.MEAN       STR     SAMPLE_MEAN     # Statistic for mean
-PATTERN.STDEV      STR     SAMPLE_STDEV    # Statistic for standard deviation
+PATTERN.ROW.ORDER      S32     2               # Polynomial order for row pattern
+PATTERN.ROW.ITER       S32     4               # Rejection iterations for row pattern
+PATTERN.ROW.REJ        F32     2.5             # Rejection threshold for row pattern
+PATTERN.ROW.THRESH     F32     20.0            # Ignore threshold for row pattern
+PATTERN.ROW.MEAN       STR     SAMPLE_MEAN     # Statistic for mean for row pattern
+PATTERN.ROW.STDEV      STR     SAMPLE_STDEV    # Statistic for standard deviation for row pattern
+PATTERN.CELL.BG	       STR     ROBUST_MEDIAN   # Statistic for background for cell pattern
+PATTERN.CELL.MEAN      STR     SAMPLE_MEDIAN   # Statistic for mean for cell pattern
 
 # Fringe subtraction options
@@ -584,26 +592,26 @@
 # Overscan, bias, dark, shutter
 PPIMAGE_OBDS       METADATA
-  BASE.FITS        BOOL    TRUE            # Save base detrended image?
-  BASE.MASK.FITS   BOOL    TRUE            # Save base detrended image?
+  BASE.FITS          BOOL    TRUE            # Save base detrended image?
+  BASE.MASK.FITS     BOOL    TRUE            # Save base detrended image?
   BASE.VARIANCE.FITS BOOL    TRUE            # Save base detrended image?
-  CHIP.FITS        BOOL    FALSE           # Save chip-mosaic-ed image? 
-  CHIP.MASK.FITS   BOOL    FALSE           # Save chip-mosaic-ed image? 
-  CHIP.VARIANCE.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
-  OVERSCAN         BOOL    TRUE            # Overscan subtraction
-  BIAS             BOOL    TRUE            # Bias subtraction
-  DARK             BOOL    TRUE            # Dark subtraction
-  SHUTTER          BOOL    FALSE           # Shutter correction
-  FLAT             BOOL    FALSE           # Flat-field normalisation
-  MASK             BOOL    FALSE           # Mask bad pixels
-  FRINGE           BOOL    FALSE           # Fringe subtraction
-  PHOTOM           BOOL    FALSE           # Source identification and photometry
-  ASTROM.CHIP      BOOL    FALSE           # Astrometry per chip?
-  ASTROM.MOSAIC    BOOL    FALSE           # Astrometry for mosaic?
-  BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
-  BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
+  CHIP.FITS          BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    FALSE           # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    FALSE           # Save chip-mosaic-ed image? 
+  OVERSCAN           BOOL    TRUE            # Overscan subtraction
+  BIAS               BOOL    TRUE            # Bias subtraction
+  DARK               BOOL    TRUE            # Dark subtraction
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE           # Flat-field normalisation
+  MASK               BOOL    FALSE           # Mask bad pixels
+  FRINGE             BOOL    FALSE           # Fringe subtraction
+  PHOTOM             BOOL    FALSE           # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
 END
 
 # used for the pre-mask version of flat-field processing
-PPIMAGE_FLATPROC_PREMASK       METADATA
+PPIMAGE_FLATPROC_PREMASK     METADATA
   BASE.FITS          BOOL    TRUE            # Save base detrended image?
   BASE.MASK.FITS     BOOL    TRUE            # Save base detrended image?
@@ -1726,5 +1734,6 @@
   MASK             BOOL    TRUE            # Mask bad pixels
   FRINGE           BOOL    FALSE           # Fringe subtraction
-  PATTERN          BOOL    FALSE            # Subtract pattern noise
+  PATTERN.ROW      BOOL    FALSE           # Subtract pattern noise
+  PATTERN.CELL     BOOL    FALSE           # Subtract pattern noise
   BIN1.FITS        BOOL    TRUE            # Save 1st binned chip image?
   BIN2.FITS        BOOL    TRUE            # Save 2nd binned chip image?
@@ -1750,5 +1759,6 @@
   FLAT               BOOL    TRUE            # Flat-field normalisation
   MASK               BOOL    TRUE            # Mask bad pixels
-  PATTERN            BOOL    FALSE            # Subtract pattern noise?
+  PATTERN.ROW        BOOL    FALSE           # Subtract pattern noise
+  PATTERN.CELL       BOOL    FALSE           # Subtract pattern noise
   FRINGE             BOOL    TRUE            # Fringe subtraction
   BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
Index: trunk/ippconfig/recipes/ppSim.config
===================================================================
--- trunk/ippconfig/recipes/ppSim.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppSim.config	(revision 26902)
@@ -53,9 +53,16 @@
 STARS.MAG	F32	15.5		# Brightest magnitude for fake stars (choose based on real catalog limit)
 STARS.DENSITY	F32      1.0		# Stellar density (per square degree) at the brightest magnitude
-STARS.SIGMA.LIM F32      5.0            # significance of faintest sources
+STARS.SIGMA.LIM F32      0.1            # significance of faintest sources
 
 STARS.FLAT.LUM  BOOL    FALSE           # use a (non-physical) constant number of stars per mag bin?
 STARS.FLAT.NUM  S32     5000            # number of stars to generate for flat magnitude distribution
 PSF.MODEL       STR     PS_MODEL_QGAUSS
+PSF.ARATIO      F32     1.0		# minor / major (0.0 - 1.0)
+PSF.THETA	F32	0.0
+
+STARS.GRID      BOOL    FALSE		# Add grid of fake stars with constant flux
+STARS.GRID.MAG	F32	14.0		# magnitude of fake grid stars
+STARS.GRID.DX	S32	100		# X spacing of fake grid stars
+STARS.GRID.DY	S32	100		# Y spacing of fake grid stars
 
 GALAXY.FAKE     BOOL    FALSE		# Generate fake galaxies?
@@ -94,5 +101,5 @@
 
 ### The following options are used if not defined by the concepts (e.g., usually read from headers)
-GAIN		F32	1.0		# Default gain (e/ADU)
+GAIN		F32	NAN		# Default gain (e/ADU)
 READNOISE	F32	10.0		# Default read noise (e)
 OVERSCAN.SIZE	S32	32		# Default overscan columns
Index: trunk/ippconfig/recipes/ppStack.config
===================================================================
--- trunk/ippconfig/recipes/ppStack.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppStack.config	(revision 26902)
@@ -8,9 +8,13 @@
 COMBINE.SYS	F32	0.1		# Relative systematic error in combination
 COMBINE.DISCARD	F32	0.2		# Discard fraction for Olympic weighted mean
+
+# XXX which of these is right?
+MASK.VAL	STR	MASK.VALUE,CONV.BAD,GHOST	# Mask value of input bad pixels
 MASK.IN		STR	MASK.VALUE,CONV.BAD,GHOST	# Mask value of input bad pixels
+
 MASK.SUSPECT	STR	SUSPECT,CONV.POOR	# Mask value of suspect pixels
 MASK.BAD	STR	BLANK		# Mask value to give bad pixels
 MASK.POOR	STR	CONV.POOR	# Mask value to give poor pixels
-POOR.FRACTION	F32	0.01		# Maximum fraction of bad variance for poor pixels
+POOR.FRACTION	F32	0.25		# Maximum fraction of bad variance for poor pixels
 THRESHOLD.MASK	F32	0.5		# Threshold for mask deconvolution (0..1)
 DECONV.LIMIT	F32	1.3		# Deconvolution fraction for rejecting entire image
@@ -36,4 +40,5 @@
 PHOT.FRAC	F32	0.9		# Minimum fraction of good pixels
 
+ZP		BOOL	TRUE		# Match zero points?
 ZP.RADIUS	F32	4.0		# Radius (pixels) for matching sources
 ZP.ITER.1	S32	5		# Iterations for zero point; pass 1
@@ -56,9 +61,9 @@
 	y	F32	0.0
 END
-	
+
 PSF.INSTANCES	S32	15		# Number of instances for PSF generation
 PSF.RADIUS	F32	20.0		# Radius for PSF generation
 PSF.ORDER	S32	1		# Order of spatial variation for PSF generation
-PSF.MODEL	STR	PS_MODEL_PS1_V1	# Model for PSF generation
+PSF.MODEL	STR	PS_MODEL_GAUSS	# Model for PSF generation
 
 TEMP.IMAGE	STR	conv.im.fits	# Suffix for temporary convolved images
Index: trunk/ippconfig/recipes/ppSub.config
===================================================================
--- trunk/ippconfig/recipes/ppSub.config	(revision 26831)
+++ trunk/ippconfig/recipes/ppSub.config	(revision 26902)
@@ -1,17 +1,20 @@
 ### Recipe file for ppSub
 
-KERNEL.TYPE	STR	ISIS		# Kernel type to use (POIS|ISIS|SPAM|FRIES|GUNK|RINGS)
-KERNEL.SIZE     S32	15		# Kernel half-size (pixels)
+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	400		# Typical spacing between stamps (pixels)
-STAMP.FOOTPRINT S32	20		# Size of stamps (pixels)
+STAMP.SPACING   F32	300		# Typical spacing between stamps (pixels)
+STAMP.FOOTPRINT S32	25		# Size of stamps (pixels)
 STAMP.THRESHOLD F32	5		# Flux threshold for stamps (stdev above background)
 STRIDE		S32	100		# Size of convolution patches (pixels)
-ITER            S32	10		# Number of rejection iterations
+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.03		# Fraction of window for normalisation window
+COVAR.FRAC	F32	0.01		# Fraction of kernel to truncate before calculating covariance
 
 MASK.VAL	STR	MASK.VALUE,CONV.BAD	# Mask value for input
@@ -20,8 +23,28 @@
 
 LOW.THRESHOLD	F32	4.0	        # Mask pixels below this threshold (std dev)
-POOR.FRACTION	F32	0.10		# Maximum fraction of bad weight for poor pixels
+POOR.FRACTION	F32	0.20		# Maximum fraction of bad weight for poor pixels
 BADFRAC		F32	0.95		# Maximum fraction of bad pixels
-@ISIS.WIDTHS	F32	3 5 7 10	# Gaussian FWHMs for ISIS kernels
-@ISIS.ORDERS	S32	2 2 2 2		# Polynomial orders for ISIS kernels
+
+# 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
+
+# Gene's values
+@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
+
 SPAM.BINNING	S32	2		# Binning in outer region for SPAM kernels
 INNER		S32	5		# Inner half-size for SPAM and FRIES kernels
@@ -40,25 +63,33 @@
 RENORM		BOOL	TRUE		# Renormalise weight maps?
 RENORM.NUM	S32	100000		# Number of samples for renormalisation
-RENORM.MIN	F32	0.5		# Minimum value for renormlisation
-RENORM.MAX	F32	2.0		# Maximum value for renormalisation
+RENORM.MIN	F32	0.2		# Minimum value for renormalization
+RENORM.MAX	F32	5.0		# Maximum value for renormalization
+
+SCALE		BOOL	TRUE		# Scale kernel parameters by the seeing?
+SCALE.REF	F32	9.0		# Reference for kernel parameter scaling
+SCALE.MIN	F32	0.7		# Minimum scale value
+SCALE.MAX	F32	1.2		# Maximum scale value
 
 INTERPOLATION	STR	LANCZOS3	# Interpolation mode for bad pixels
 
-DUAL		BOOL	FALSE		# Dual convolution?
+DUAL		BOOL	TRUE		# Dual convolution?
 INVERSE		BOOL	FALSE		# Generate inverse subtraction?
 PHOTOMETRY	BOOL	FALSE		# Perform photometry?
 SAVE.CONVOLVED	BOOL	TRUE		# Save convolved images?
 
+
 # Recipe overrides for STACK
 STACK	METADATA
-	KERNEL.SIZE     S32	15	# Kernel half-size (pixels)
-	STAMP.SPACING   F32	300	# Typical spacing between stamps (pixels)	
-	STAMP.FOOTPRINT S32	15	# Size of stamps (pixels)
-	POOR.FRACTION	F32	0.1	# Maximum fraction of bad weight for poor pixels
-	SPATIAL.ORDER   S32	0	# Spatial polynomial order
+	KERNEL.TYPE	STR	ISIS	# Kernel type
+	SCALE.REF	F32	9.0	# Reference for kernel parameter scaling
 END
 
 # Recipe overrides for DIFF
 DIFF	METADATA
+END
+
+# Recipe overrides for DIFF
+DIFF_MAGICTEST_V0	METADATA
+	SPATIAL.ORDER   S32	0		# Spatial polynomial order
 END
 
@@ -73,2 +104,17 @@
 	PHOTOMETRY	BOOL	FALSE
 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
Index: trunk/ippconfig/recipes/psastro.config
===================================================================
--- trunk/ippconfig/recipes/psastro.config	(revision 26831)
+++ trunk/ippconfig/recipes/psastro.config	(revision 26902)
@@ -132,6 +132,8 @@
 REFSTAR_MASK_SATSTAR_MAG_SLOPE  F32  10.0
 REFSTAR_MASK_SATSTAR_POS_ZERO   F32   0.0
-REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32  80.0
-REFSTAR_MASK_SATSPIKE_MAG_MAX   F32 -17.0
+# spikeLength = 10**(SLOPE*(MAG_MAX - InstMag)) - OFFSET
+REFSTAR_MASK_SATSPIKE_MAG_SLOPE F32 -0.116
+REFSTAR_MASK_SATSPIKE_MAG_MAX   F32 -0.91
+REFSTAR_MASK_SATSPIKE_OFFSET    F32   0.0
 REFSTAR_MASK_SATSPIKE_WIDTH     F32  10.0
 
Index: trunk/ippconfig/recipes/reductionClasses.mdc
===================================================================
--- trunk/ippconfig/recipes/reductionClasses.mdc	(revision 26831)
+++ trunk/ippconfig/recipes/reductionClasses.mdc	(revision 26902)
@@ -52,5 +52,5 @@
 	DOMEFLAT_PREMASK_JPEG_RESID	STR	FLAT_RESID
 
-	SKYFLAT_PREMASK_PROCESS		STR	PPIMAGE_FLATPROC_PREMASK 
+	SKYFLAT_PREMASK_PROCESS		STR	PPIMAGE_FLATPROC_PREMASK
 	SKYFLAT_PREMASK_RESID		STR	PPIMAGE_F
 	SKYFLAT_PREMASK_VERIFY		STR	PPIMAGE_F
@@ -151,4 +151,21 @@
 	STACK_PSPHOT	STR	STACK
 	DIFF_PPSUB	STR	DIFF
+	DIFF_PSPHOT	STR	DIFF
+	JPEG_BIN1	STR	PPIMAGE_J1
+	JPEG_BIN2	STR	PPIMAGE_J2
+	FAKEPHOT	STR	FAKEPHOT
+	ADDSTAR		STR	ADDSTAR
+	PSASTRO		STR	DEFAULT_RECIPE
+END
+
+# basic science analysis
+MAGICTEST.V0		METADATA
+	CHIP_PPIMAGE	STR	CHIP_PATTERN
+	CHIP_PSPHOT	STR	CHIP
+	WARP_PSWARP	STR	WARP
+	STACK_PPSTACK	STR	STACK
+	STACK_PPSUB	STR	STACK
+	STACK_PSPHOT	STR	STACK
+	DIFF_PPSUB	STR	DIFF_MAGICTEST_V0
 	DIFF_PSPHOT	STR	DIFF
 	JPEG_BIN1	STR	PPIMAGE_J1
Index: trunk/ippconfig/simtest/ppSim.config
===================================================================
--- trunk/ippconfig/simtest/ppSim.config	(revision 26831)
+++ trunk/ippconfig/simtest/ppSim.config	(revision 26902)
@@ -15,5 +15,5 @@
  STARS.MAG	 F32	 10.0		# Brightest magnitude for fake stars
  STARS.DENSITY	 F32     100.0		# Stellar density (per square degree) at the brightest magnitude
- STARS.SIGMA.LIM F32     5.0            # significance of faintest sources
+ STARS.SIGMA.LIM F32     1.0            # significance of faintest sources
  STARS.LUM	 F32	 0.35		# Stellar luminosity function slope (magnitude slope)
 END
@@ -35,4 +35,10 @@
  STARS.FAKE      BOOL   TRUE		# Add fake stars, randomly distributed?
  MATCH.DENSITY   BOOL   TRUE            # significance of faintest sources
+
+ # parameters of fake stars
+ STARS.MAG	 F32	 10.0		# Brightest magnitude for fake stars
+ STARS.DENSITY	 F32     100.0		# Stellar density (per square degree) at the brightest magnitude
+ STARS.SIGMA.LIM F32     1.0            # significance of faintest sources
+ STARS.LUM	 F32	 0.35		# Stellar luminosity function slope (magnitude slope)
 
  EXPTIME     	 F32    10.0
@@ -63,4 +69,10 @@
  MATCH.DENSITY   BOOL   TRUE            # significance of faintest sources
 
+ # parameters of fake stars
+ STARS.MAG	 F32	 10.0		# Brightest magnitude for fake stars
+ STARS.DENSITY	 F32     1.0		# Stellar density (per square degree) at the brightest magnitude
+ STARS.SIGMA.LIM F32     0.1            # significance of faintest sources
+ STARS.LUM	 F32	 0.35		# Stellar luminosity function slope (magnitude slope)
+
  EXPTIME     	 F32    10.0
  RA          	 F32    5.0
Index: trunk/ippconfig/simtest/ppSub.config
===================================================================
--- trunk/ippconfig/simtest/ppSub.config	(revision 26831)
+++ trunk/ippconfig/simtest/ppSub.config	(revision 26902)
@@ -1,1 +1,55 @@
 ### Recipe file for ppSub
+
+STAMP.SPACING   F32	100		# Typical spacing between stamps (pixels)
+
+RENORM		BOOL	FALSE		# Renormalize weight maps?
+
+DUAL		BOOL	FALSE		# Dual convolution?
+
+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
+
+SPATIAL.ORDER   S32	0		# Spatial polynomial order
+
+#STAMP.FOOTPRINT S32	25		# Size of stamps (pixels)
+#KERNEL.SIZE     S32	25		# Kernel half-size (pixels)
Index: trunk/ippconfig/simtest/psphot.config
===================================================================
--- trunk/ippconfig/simtest/psphot.config	(revision 26831)
+++ trunk/ippconfig/simtest/psphot.config	(revision 26902)
@@ -2,3 +2,4 @@
 # same as ppSim.config (if YES, <apResid> should be 0.0)
 # ppSim currently uses PS_MODEL_GAUSS
-PSF_MODEL                           STR   PS_MODEL_PGAUSS
+PSF_MODEL                           STR   PS_MODEL_GAUSS
+PSF_CLUMP_GRID_SCALE                F32   1.0             # size of Sx,Sy image pixel
