Index: branches/czw_branch/cleanup/ippconfig/recipes/filerules-mef.mdc
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/filerules-mef.mdc	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/filerules-mef.mdc	(revision 24951)
@@ -286,4 +286,4 @@
 PPNOISEMAP.OUTPUT       OUTPUT {OUTPUT}.{CHIP.NAME}.fits         IMAGE     NONE       CHIP       TRUE      NONE
 
-CENSOR.OUTPUT           OUTPUT {OUTPUT}.des.smf                  CMF       NONE       FPA        TRUE      MEF
-
+CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
+
Index: branches/czw_branch/cleanup/ippconfig/recipes/filerules-simple.mdc
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/filerules-simple.mdc	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/filerules-simple.mdc	(revision 24951)
@@ -232,5 +232,5 @@
 TRACE.EXP               OUTPUT {OUTPUT}.exp.trace    TEXT      NONE       FPA        TRUE      NONE
 
-PPNOISEMAP.OUTPUT       OUTPUT {OUTPUT}.{CHIP.NAME}.fits         IMAGE     NONE       CHIP       TRUE      NONE
-
-CENSOR.OUTPUT           OUTPUT {OUTPUT}.des.smf                  CMF       NONE       FPA        TRUE      MEF
+PPNOISEMAP.OUTPUT       OUTPUT {OUTPUT}.{CHIP.NAME}.fits IMAGE NONE       CHIP       TRUE      NONE
+
+CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf          CMF       NONE       FPA        TRUE      MEF
Index: branches/czw_branch/cleanup/ippconfig/recipes/filerules-split.mdc
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/filerules-split.mdc	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/filerules-split.mdc	(revision 24951)
@@ -251,5 +251,5 @@
 PPNOISEMAP.OUTPUT       OUTPUT {OUTPUT}.{CHIP.NAME}.fits         IMAGE     NONE       CHIP       TRUE      NONE
 
-CENSOR.OUTPUT           OUTPUT {OUTPUT}.des.smf                  CMF       NONE       FPA        TRUE      MEF
+CENSOR.OUTPUT           OUTPUT {OUTPUT}.smf                      CMF       NONE       FPA        TRUE      MEF
 
 # {FPA.OBS}
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppImage.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppImage.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppImage.config	(revision 24951)
@@ -17,4 +17,5 @@
 MASK.LOW           BOOL    TRUE            # Mask pixels below valid range
 VARIANCE.BUILD     BOOL    FALSE           # Build internal variance image
+PATTERN            BOOL    FALSE           # Fit and remove pattern noise?
 FRINGE             BOOL    FALSE           # Fringe subtraction
 PHOTOM             BOOL    FALSE           # Source identification and photometry
@@ -25,4 +26,5 @@
 USE.DEBURNED.IMAGE BOOL    FALSE           # use burntool-repaired image?
 TILTYSTREAK.APPLY  BOOL    FALSE           # apply the 'tiltystreak' tool
+
 
 TILTYSTREAK.BY.CLASS METADATA              # apply the 'tiltystreak' tool
@@ -78,4 +80,12 @@
 OVERSCAN.CONSTANT	BOOL	FALSE		# Apply a known, fixed value?
 OVERSCAN.VALUE	        F32	0.0		# value to apply, if requested
+
+# 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
 
 # Fringe subtraction options
@@ -263,23 +273,23 @@
 
 # Overscan subtraction only
-PPIMAGE_O          METADATA
-  BASE.FITS        BOOL    TRUE            # Save base detrended image?
-  BASE.MASK.FITS   BOOL    TRUE            # Save base detrended image?
-  BASE.VARIANCE.FITS BOOL    FALSE           # 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    FALSE           # Bias subtraction
-  DARK             BOOL    FALSE           # 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?
+PPIMAGE_O            METADATA
+  BASE.FITS          BOOL    TRUE            # Save base detrended image?
+  BASE.MASK.FITS     BOOL    TRUE            # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # 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    FALSE           # Bias subtraction
+  DARK               BOOL    FALSE           # 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
 
@@ -528,4 +538,34 @@
     DARK METADATA
       DETTYPE STR DARK_PREMASK
+      EXPTIME STR FPA.EXPOSURE
+    END
+  END   
+END
+
+# Chip processing with DARKTEST 
+CHIP_DARKTEST METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # 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    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    TRUE            # Subtract background?
+
+  DETREND.CONSTRAINTS  METADATA
+    DARK METADATA
+      DETTYPE STR DARKTEST
       EXPTIME STR FPA.EXPOSURE
     END
@@ -1611,4 +1651,77 @@
 
 #For PR images
-PR	METADATA
-END
+PR_DARKTEST_NOSUB	METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # 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    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    FALSE            # Subtract background?
+
+  DETREND.CONSTRAINTS  METADATA
+    DARK METADATA
+      DETTYPE STR DARKTEST
+      EXPTIME STR FPA.EXPOSURE
+    END
+  END   
+END
+
+PR               METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # 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    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    FALSE            # Subtract background?
+END
+
+
+# Standard chip processing with pattern subtraction
+CHIP_PATTERN	METADATA
+  BASE.FITS          BOOL    FALSE           # Save base detrended image?
+  BASE.MASK.FITS     BOOL    FALSE           # Save base detrended image?
+  BASE.VARIANCE.FITS BOOL    FALSE           # Save base detrended image?
+  CHIP.FITS          BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.MASK.FITS     BOOL    TRUE            # Save chip-mosaic-ed image? 
+  CHIP.VARIANCE.FITS BOOL    TRUE            # 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    TRUE            # Flat-field normalisation
+  MASK               BOOL    TRUE            # Mask bad pixels
+  PATTERN            BOOL    TRUE            # Subtract pattern noise?
+  FRINGE             BOOL    TRUE            # Fringe subtraction
+  BIN1.FITS          BOOL    TRUE            # Save 1st binned chip image?
+  BIN2.FITS          BOOL    TRUE            # Save 2nd binned chip image?
+  PHOTOM             BOOL    TRUE            # Source identification and photometry
+  ASTROM.CHIP        BOOL    FALSE           # Astrometry per chip?
+  ASTROM.MOSAIC      BOOL    FALSE           # Astrometry for mosaic?
+  BACKGROUND         BOOL    TRUE            # Subtract background?
+END
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppMerge.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppMerge.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppMerge.config	(revision 24951)
@@ -10,8 +10,12 @@
 NKEEP               S32     5               # Minimum number of pixels in stack to keep
 VARIANCES           BOOL    FALSE           # Use image variances in combination?
+
 FRINGE.NUM          S32     10000           # Number of fringe regions
 FRINGE.SIZE         S32     5               # Half-size of fringe regions
 FRINGE.XSMOOTH      S32     5               # Number of smoothing regions in x
 FRINGE.YSMOOTH      S32     11              # Number of smoothing regions in y
+FRINGE.SMOOTH       BOOL    FALSE           # Smooth the output image?
+FRINGE.SMOOTH.SIGMA F32     2.0             # Sigma of smoothing Gaussian
+
 CTE.MIN             F32     0.5             # regions lower than this in the CTE image are masked
 SHUTTER.SIZE        S32     128             # Size for shutter measurement regions
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppSim.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppSim.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppSim.config	(revision 24951)
@@ -13,6 +13,20 @@
 BIAS.ORDER	S32	7		# Order for overscan polynomial
 
+# dark signal = (DARK.RATE + DARK.TEMP1*TEMP + DARK.TEMP2*TEMP^2)*EXPTIME
 DARK            BOOL    TRUE
 DARK.RATE	F32	5.0		# Dark current (e/s)
+DARK.TEMP	F32	0.0		# Dark temperature trend (e/s/C)
+DARK.TEMP2	F32	0.0		# 2nd order Dark temperature trend (e/s/C^2)
+DET.TEMP	F32   -20.0		# Detector temperature
+
+# dark signal = (DARK.RATE + DARK.TEMP1*TEMP + DARK.TEMP2*TEMP^2)*EXPTIME
+# the following dark model can be used to test ppMerge with DARK.ORDINATES
+TEST.DARKTEMP   METADATA
+  DARK            BOOL    TRUE
+  DARK.RATE	F32	25.0		# Dark current (e/s)
+  DARK.TEMP	F32	0.5		# Dark temperature trend (e/s/C)
+  DARK.TEMP2	F32	0.05		# 2nd order Dark temperature trend (e/s/C^2)
+  DET.TEMP	F32	-20.0		# Detector temperature
+END
 
 FLAT            BOOL    TRUE
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppStack.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppStack.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppStack.config	(revision 24951)
@@ -19,4 +19,5 @@
 BIN1		S32	4		# Binning factor for first level
 BIN2		S32	4		# Binning factor for second level
+SKIP.BG.SUB	BOOL	FALSE		# Bypass background subtraction?
 
 RENORM		BOOL	FALSE		# Renormalise variance maps?
@@ -79,3 +80,4 @@
 	CONVOLVE	BOOL	FALSE
 	IMAGE.REJ	F32	0.5	
+	SKIP.BG.SUB	BOOL	FALSE
 END
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppStats.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppStats.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppStats.config	(revision 24951)
@@ -221,4 +221,5 @@
   CONCEPT       STR     FPA.CAMERA      # Instrument (eg, CFH12K)
   CONCEPT       STR     CHIP.TEMP       # Detector temperature
+  CONCEPT       STR     FPA.TEMP        # Camera temperature
 END
 
Index: branches/czw_branch/cleanup/ippconfig/recipes/ppSub.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/ppSub.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/ppSub.config	(revision 24951)
@@ -18,4 +18,5 @@
 MASK.POOR       STR	CONV.POOR	# Mask value to give poor pixels
 
+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
 BADFRAC		F32	0.95		# Maximum fraction of bad pixels
Index: branches/czw_branch/cleanup/ippconfig/recipes/psphot.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/psphot.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/psphot.config	(revision 24951)
@@ -216,4 +216,5 @@
 FOOTPRINT_CULL_NSIGMA_DELTA         F32   4       	  # Cull peaks that aren't nsigma above coll to neighbour
 FOOTPRINT_CULL_NSIGMA_MIN           F32   1       	  # Minimum height of colls in units of skyStdev
+FOOTPRINT_CULL_NSIGMA_PAD           F32   0.01       	  # Fractional Padding for stdev
 
 # alternate PSPHOT-type recipes
Index: branches/czw_branch/cleanup/ippconfig/recipes/reductionClasses.mdc
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/reductionClasses.mdc	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/reductionClasses.mdc	(revision 24951)
@@ -16,4 +16,11 @@
 	DARK_PREMASK_JPEG_RESID	STR	BIAS_RESID
 
+	DARKTEST_PROCESS	STR	PPIMAGE_OB
+	DARKTEST_RESID		STR	PPIMAGE_D
+	DARKTEST_VERIFY		STR	PPIMAGE_D
+	DARKTEST_STACK		STR	PPMERGE_DARK
+	DARKTEST_JPEG_IMAGE	STR	BIAS
+	DARKTEST_JPEG_RESID	STR	BIAS_RESID
+
 	DARK_PROCESS		STR	PPIMAGE_OB
 	DARK_RESID		STR	PPIMAGE_D
@@ -298,5 +305,5 @@
 # Intended for fast processing to make PR images
 PR		METADATA
-	CHIP_PPIMAGE  	STR	CHIP
+	CHIP_PPIMAGE  	STR	PR
 	CHIP_PSPHOT	STR	PR
 	WARP_PSWARP	STR	WARP
@@ -312,2 +319,36 @@
 	PSASTRO		STR	PR_RECIPE
 END
+
+# Intended for fast processing to make PR images
+PR_DARKTEST	METADATA
+	CHIP_PPIMAGE  	STR	PR_DARKTEST_NOSUB
+	CHIP_PSPHOT	STR	PR
+	WARP_PSWARP	STR	WARP
+	STACK_PPSTACK	STR	PR
+	STACK_PPSUB	STR	PR
+	STACK_PSPHOT	STR	PR
+	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	PR_RECIPE
+END
+
+# Testing pattern subtraction
+TEST_PATTERN	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
+	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
Index: branches/czw_branch/cleanup/ippconfig/recipes/rejections.config
===================================================================
--- branches/czw_branch/cleanup/ippconfig/recipes/rejections.config	(revision 24713)
+++ branches/czw_branch/cleanup/ippconfig/recipes/rejections.config	(revision 24951)
@@ -1,2 +1,3 @@
+# these names (BIAS, DARK, etc) must be upper case
 
 BIAS METADATA
@@ -49,4 +50,28 @@
 
 DARK_PREMASK METADATA
+  FILTER      	     STR  *
+  EXPECTED    	     F32  0.0
+  IMFILE.MEAN 	     F32  0.0
+  IMFILE.STDEV       F32  0.0
+  IMFILE.MEANSTDEV   F32  0.0
+  IMFILE.SKEWNESS    F32  0.0
+  IMFILE.KURTOSIS    F32  0.0
+  IMFILE.SNR         F32  0.0
+  IMFILE.BIN.STDEV   F32  0.0
+  IMFILE.BIN.SNR     F32  0.0
+  IMFILE.FLUX        F32  0.0
+  EXP.MEAN           F32  0.0
+  EXP.STDEV          F32  0.0
+  EXP.MEANSTDEV      F32  0.0
+  EXP.SNR            F32  0.0
+  EXP.BIN.STDEV      F32  0.0
+  EXP.BIN.SNR        F32  0.0
+  EXP.FLUX           F32  0.0
+  ENSEMBLE.MEAN      F32  0.0
+  ENSEMBLE.STDEV     F32  0.0
+  ENSEMBLE.MEANSTDEV F32  0.0
+END
+
+DARKTEST METADATA
   FILTER      	     STR  *
   EXPECTED    	     F32  0.0
