Index: trunk/ippconfig/tc3/Makefile.am
===================================================================
--- trunk/ippconfig/tc3/Makefile.am	(revision 37413)
+++ trunk/ippconfig/tc3/Makefile.am	(revision 37414)
@@ -3,9 +3,10 @@
 
 install_files = \
-	dvo.config \
-	camera.config \
-	format.config \
+	dvo.config        \
+	camera.config     \
+	format.config     \
 	format_ps2.config \
-	ppImage.config
+	ppImage.config    \
+	ppMerge.config
 
 install_DATA = $(install_files)
Index: trunk/ippconfig/tc3/camera.config
===================================================================
--- trunk/ippconfig/tc3/camera.config	(revision 37413)
+++ trunk/ippconfig/tc3/camera.config	(revision 37414)
@@ -47,4 +47,12 @@
 # move this elsewhere?  we need a lookup table to go from filter ID to abstract name
 FILTER.ID       METADATA
+   r        MULTI
+   r        STR   Not available
+   g        STR   g.00001
+   r        STR   r.00001
+   i        STR   i.00001
+   z        STR   z.00001
+   y        STR   y.00001
+   w        STR   w.00001
 	NONE	STR	NONE
 	B	STR	B
@@ -74,16 +82,35 @@
 END
 
-# Recipe options
+# Recipe options (if not listed here, we only use the default)
 RECIPES		METADATA
-	# Other recipes
-#        PSPHOT          STR     tc3/psphot.config           # psphot details
-#        PSASTRO         STR     tc3/psastro.config          # psastro details
-#	PPSTATS		STR	tc3/ppStats.config		# ppStats recipe
-	PPIMAGE         STR     tc3/ppImage.config		# ppImage recipe
+	PPIMAGE		STR	tc3/ppImage.config
+	PPMERGE		STR	tc3/ppMerge.config
+#	PSASTRO		STR	tc3/psastro.config
+#	PSPHOT		STR	tc3/psphot.config
+#	PSWARP		STR	tc3/pswarp.config
+#       PSVIDEOPHOT     STR     tc3/psvideophot.config
+#	REJECTIONS      STR     tc3/rejections.config       # rejection recipe
+#	PPSTACK		STR	tc3/ppStack.config
 END
+
+# reduction classes (recipes which are grouped together)
+REDUCTION	STR	recipes/reductionClasses.mdc
 
 FITSTYPES       STR     recipes/fitstypes.mdc
 
 FILERULES       STR     recipes/filerules-split.mdc
+
+EXTNAME.RULES METADATA
+  CMF.HEAD STR {CHIP.NAME}.hdr
+  CMF.DATA STR {CHIP.NAME}.psf # use .PSF and .EXT?
+  CMF.XSRC STR {CHIP.NAME}.xsrc # use .PSF and .EXT?
+  CMF.XRAD STR {CHIP.NAME}.xrad # use .PSF and .EXT?
+  CMF.XFIT STR {CHIP.NAME}.xfit # use .PSF and .EXT?
+  CMF.DETEFF STR {CHIP.NAME}.deteff
+
+  PSF.HEAD  STR	{CHIP.NAME}.hdr
+  PSF.TABLE STR {CHIP.NAME}.psf_model
+  PSF.RESID STR {CHIP.NAME}.psf_resid
+END
 
 BLANK.HEADERS	METADATA
@@ -93,2 +120,5 @@
 	FPA.OBS		STR	EXPNUM
 END
+
+PHOTCODE.RULE           STR     {DETECTOR}.{FILTER.ID}.{CHIP.NAME}	# Rule for generating photcode
+
Index: trunk/ippconfig/tc3/format_ps2.config
===================================================================
--- trunk/ippconfig/tc3/format_ps2.config	(revision 37413)
+++ trunk/ippconfig/tc3/format_ps2.config	(revision 37414)
@@ -7,5 +7,5 @@
 	CONTROLR	STR	STARGRASP
 	INSTRUME	STR	tc3
-	EXTEND		BOOL	T
+#	EXTEND		BOOL	T
 END
 
@@ -304,10 +304,12 @@
 # Where there might be some ambiguity, specify the format
 FORMATS		METADATA
-	FPA.RA		STR	HOURS
+	FPA.RA		STR	DEGREES
 	FPA.DEC		STR	DEGREES
 	FPA.LONGITUDE	STR	HOURS
 	FPA.LATITUDE	STR	DEGREES
-	FPA.TIME	STR	MJD
-	CELL.TIME	STR	MJD
+        FPA.TIME        STR     YEAR.FIRST
+        CELL.TIME       STR     YEAR.FIRST
+#	FPA.TIME	STR	MJD
+#	CELL.TIME	STR	MJD
         CELL.BINNING    STR     TOGETHER
 	CELL.READNOISE	STR	ADU
Index: trunk/ippconfig/tc3/ppImage.config
===================================================================
--- trunk/ippconfig/tc3/ppImage.config	(revision 37413)
+++ trunk/ippconfig/tc3/ppImage.config	(revision 37414)
@@ -1,9 +1,16 @@
 ### ppImage recipe configuration file for Megacam
+
+# binned output image options
+BIN1.XBIN               S32      16
+BIN1.YBIN               S32      16
+BIN2.XBIN               S32     150
+BIN2.YBIN               S32     150
 
 # Overscan subtraction
 OVERSCAN.SINGLE		BOOL	FALSE		# Reduce overscan to a single value?
+OVERSCAN.STAT           STR     MEDIAN
+OVERSCAN.BOXCAR         S32     3
 OVERSCAN.FIT		STR	NONE		# NONE | POLYNOMIAL | SPLINE
 OVERSCAN.ORDER		S32	0		# Order of polynomial fit
-OVERSCAN.STAT		STR	MEAN		# MEAN | MEDIAN
 
 OVERSCAN	BOOL	TRUE		# Overscan subtraction
@@ -13,4 +20,7 @@
 SHUTTER		BOOL	FALSE		# Shutter correction
 FRINGE		BOOL	FALSE		# Fringe subtraction
+
+# Normalization class
+NORM.CLASS              STR     CHIP             # How to find the per-class normalizations
 
 # this table lists extra constraints which should be applied when
@@ -38,8 +48,5 @@
 # only apply the fringe for these filters
 FRINGE.FILTERS  MULTI
-FRINGE.FILTERS	STR r
-FRINGE.FILTERS	STR i
-FRINGE.FILTERS	STR z
-
+FRINGE.FILTERS	STR NONE
 
 ################################################################################
@@ -50,5 +57,5 @@
 CHIP   METADATA
   OVERSCAN        BOOL    TRUE            # Overscan subtraction
-  BIAS            BOOL    TRUE            # Bias subtraction
+  BIAS            BOOL    FALSE            # Bias subtraction
   DARK            BOOL    TRUE            # Dark subtraction
   SHUTTER         BOOL    FALSE            # Shutter correction
@@ -182,5 +189,5 @@
 PPIMAGE_OB        METADATA
   OVERSCAN        BOOL    TRUE            # Overscan subtraction
-  BIAS            BOOL    TRUE            # Bias subtraction
+  BIAS            BOOL    FALSE           # Bias subtraction
   DARK            BOOL    FALSE           # Dark subtraction
   SHUTTER         BOOL    FALSE           # Shutter correction
@@ -315,2 +322,104 @@
   BIN2.YBIN       S32     1               # Image is already binned
 END
+
+# Overscan, bias, dark, shutter
+PPIMAGE_FLATPROC_PREMASK       METADATA
+  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
+  NONLIN             BOOL    FALSE           # apply non-linearity correction 
+  BIAS               BOOL    FALSE           # Bias subtraction
+  DARK               BOOL    TRUE            # Dark subtraction
+  SHUTTER            BOOL    FALSE           # Shutter correction
+  FLAT               BOOL    FALSE           # Flat-field normalisation
+  MASK               BOOL    FALSE           # Mask bad pixels
+  MASK.BUILD	     BOOL    FALSE	     # Build internal mask?
+  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?
+
+  DETREND.CONSTRAINTS  METADATA
+    DARK METADATA
+      DETTYPE STR DARK
+      EXPTIME STR FPA.EXPOSURE
+    END
+  END   
+END
+
+# Overscan, bias, dark, shutter, flat-field -- use FLAT_PREMASK
+PPIMAGE_FLATMASK_PROCESS      METADATA
+  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
+  NONLIN           BOOL    FALSE           # Non-linearity correction; not implemented
+  BIAS             BOOL    FALSE           # Bias subtraction
+  DARK             BOOL    TRUE            # Dark subtraction
+  SHUTTER          BOOL    FALSE           # Shutter correction
+  FLAT             BOOL    TRUE            # Flat-field normalisation
+  MASK             BOOL    FALSE           # Mask bad pixels
+  MASK.BUILD       BOOL    FALSE	   # Build internal mask?
+  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?
+
+  DETREND.CONSTRAINTS  METADATA
+    DARK METADATA
+      DETTYPE STR DARK
+      EXPTIME STR FPA.EXPOSURE
+    END
+    FLAT METADATA
+      DETTYPE STR FLAT_PREMASK
+      FILTER  STR FPA.FILTERID
+    END
+  END   
+END
+
+
+# Overscan, bias, dark, shutter, flat-field -- use FLAT_PREMASK
+PPIMAGE_PREMASK_PROCESS      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
+  NONLIN           BOOL    FALSE           # Non-linearity correction; not implemented
+  BIAS             BOOL    FALSE           # Bias subtraction
+  DARK             BOOL    TRUE            # Dark subtraction
+  SHUTTER          BOOL    FALSE           # Shutter correction
+  FLAT             BOOL    TRUE            # Flat-field normalisation
+  MASK             BOOL    FALSE           # Mask bad pixels
+  MASK.BUILD       BOOL    FALSE	   # Build internal mask?
+  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?
+
+  DETREND.CONSTRAINTS  METADATA
+    DARK METADATA
+      DETTYPE STR DARK
+      EXPTIME STR FPA.EXPOSURE
+    END
+    FLAT METADATA
+      DETTYPE STR FLAT_PREMASK
+      FILTER  STR FPA.FILTERID
+    END
+  END   
+END
Index: trunk/ippconfig/tc3/ppMerge.config
===================================================================
--- trunk/ippconfig/tc3/ppMerge.config	(revision 37414)
+++ trunk/ippconfig/tc3/ppMerge.config	(revision 37414)
@@ -0,0 +1,72 @@
+# Mask generation --- already included in default, above
+PPMERGE_DARKMASK METADATA
+  ITER               S32    3
+  MASK.SUSPECT.SIGMA F32	8.0		# Threshold for suspect pixels (sigma)
+  MASK.BAD	     F32	0.1		# Threshold for bad pixels 
+  MASK.MODE	     STR	FRACTION	# Meaning of threshold : value, sigma
+  SAMPLE             S32    100000          # Sampling factor for measuring the background
+END
+
+PPMERGE_FLATMASK METADATA
+  ITER           S32    3
+  MASK.SUSPECT.SIGMA F32	3.0		# Threshold for suspect pixels (sigma)
+  MASK.BAD	 F32	0.1		# Threshold for bad pixels (sigma)
+  MASK.MODE	 STR	FRACTION	# Threshold for bad pixels (sigma)
+  SAMPLE         S32    100000          # Sampling factor for measuring the background
+END
+
+ROWS		S32	32		# Number of rows to read at once
+
+FRINGE.NUM          S32     1000        # Number of fringe regions per cell
+FRINGE.SIZE         S32     5           # Half-size of fringe regions
+FRINGE.XSMOOTH      S32     3           # Number of smoothing regions per cell in x
+FRINGE.YSMOOTH      S32     3           # Number of smoothing regions per cell in y
+FRINGE.SMOOTH       BOOL    TRUE        # Smooth the output image?
+FRINGE.SMOOTH.SIGMA F32     2.0         # Sigma of smoothing Gaussian
+
+# Ordinates for fitting dark current
+# example for linear in darktime only
+DARK.ORDINATES	METADATA
+	CELL.EXPOSURE	S32	1
+END
+
+# Ordinates for fitting dark current as function of darktime and fpa temp:
+# DARK.ORDINATES	METADATA
+# 	CELL.DARKTIME	S32	1
+#  	FPA.TEMP	METADATA
+#  		ORDER	S32	1
+#  		SCALE	BOOL	TRUE
+# 		RULE	STR	FPA.TEMP * CELL.DARKTIME
+#  		MIN	F32	-95
+#  		MAX	F32	-50
+#  	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
+
+## Dark model with linear temperature dependence
+## DARK.ORDINATES	METADATA
+## 	CELL.EXPOSURE	S32	1
+##  	TEMP	METADATA
+##  		ORDER	S32	1
+## 		RULE	STR	CHIP.TEMPERATURE * CELL.EXPOSURE
+##  	END
+## END
+
+## Dark model with quadratic temperature dependence : too sensitive to temperature range
+## DARK.ORDINATES	METADATA
+## 	CELL.EXPOSURE	S32	1
+##   	TEMP	METADATA
+##   		ORDER	S32	1
+##  		RULE	STR	CHIP.TEMPERATURE * CELL.EXPOSURE
+##   	END
+##   	TEMP2	METADATA
+##   		ORDER	S32	1
+##  		RULE	STR	CHIP.TEMPERATURE * CHIP.TEMPERATURE * CELL.EXPOSURE
+##   	END
+## END
+
+
