Index: trunk/ppSub/src/ppSubReadoutUpdate.c
===================================================================
--- trunk/ppSub/src/ppSubReadoutUpdate.c	(revision 21396)
+++ trunk/ppSub/src/ppSubReadoutUpdate.c	(revision 21524)
@@ -6,17 +6,25 @@
  *
  *  @author IfA
- *  @version $Revision: 1.3 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-02-07 00:15:00 $
+ *  @version $Revision: 1.4 $ $Name: not supported by cvs2svn $
+ *  @date $Date: 2009-02-18 00:31:20 $
  *  Copyright 2009 Institute for Astronomy, University of Hawaii
  */
 
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <stdio.h>
+#include <pslib.h>
+#include <psmodules.h>
+
 #include "ppSub.h"
 
-/**
- * Renormalize, update headers and generate JPEGs
- */
-bool ppSubReadoutUpdate (pmConfig *config, const pmFPAview *view) {
+bool ppSubReadoutUpdate(pmConfig *config, psMetadata *stats, const pmFPAview *view)
+{
+    psAssert(config, "Require configuration");
+    psAssert(view, "Require view");
 
-    bool mdok = false;
+    bool mdok = false;                  // Status of MD lookup
 
     // Look up recipe values
@@ -24,17 +32,8 @@
     psAssert(recipe, "We checked this earlier, so it should be here.");
 
-    // select the output readout
-    pmReadout *outRO = pmFPAfileThisReadout(config->files, view, "PPSUB.OUTPUT");
-
-    // Renormalising for pixels, because that's what magic desires
-    if (!ppSubReadoutRenormPixels (config, recipe, outRO)) {
-        psError(PS_ERR_BAD_PARAMETER_VALUE, false, "failure in renormalization");
-        return false;
-    }
-
-    // select the output FPA and HDU to get the output header
-    pmFPAfile *outFile = psMetadataLookupPtr (&mdok, config->files, "PPSUB.OUTPUT");
-    pmFPA *outFPA = outFile->fpa;
-    pmHDU *outHDU = outFPA->hdu;
+    pmFPAfile *outFile = psMetadataLookupPtr(&mdok, config->files, "PPSUB.OUTPUT"); // Output file
+    pmReadout *outRO = pmFPAfileThisReadout(config->files, view, "PPSUB.OUTPUT"); // Output image
+    pmFPA *outFPA = outFile->fpa;       // Output FPA
+    pmHDU *outHDU = outFPA->hdu;        // Output HDU
 
     // Add additional data to the header
@@ -46,4 +45,22 @@
                      "Subtraction input", inFile->filename);
 
+    // Statistics on the matching
+    if (stats) {
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MODE);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_STAMPS);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_DEV_MEAN);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_DEV_RMS);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_NORM);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_BGDIFF);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MX);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MY);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MXX);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MXY);
+        psMetadataCopySingle(stats, outRO->analysis, PM_SUBTRACTION_ANALYSIS_MYY);
+
+        psMetadataAddF32(stats, PS_LIST_TAIL, "TIME_MATCH", 0, "Time to match PSFs",
+                         psTimerClear("PPSUB_MATCH"));
+    }
+
     // Generate binned JPEGs
     {
@@ -54,9 +71,8 @@
 
         // Target cells
-        pmCell *cell1 = pmFPAfileThisCell(config->files, view, "PPSUB.OUTPUT.JPEG1");
-        pmCell *cell2 = pmFPAfileThisCell(config->files, view, "PPSUB.OUTPUT.JPEG2");
+        pmCell *cell1 = pmFPAfileThisCell(config->files, view, "PPSUB.OUTPUT.JPEG1"); // Rebinned cell once
+        pmCell *cell2 = pmFPAfileThisCell(config->files, view, "PPSUB.OUTPUT.JPEG2"); // Rebinned cell twice
 
-        pmReadout *ro1 = pmReadoutAlloc(cell1);
-        pmReadout *ro2 = pmReadoutAlloc(cell2); // Binned readouts
+        pmReadout *ro1 = pmReadoutAlloc(cell1), *ro2 = pmReadoutAlloc(cell2); // Binned readouts
         if (!pmReadoutRebin(ro1, outRO, maskBad, bin1, bin1)) {
             psError(PS_ERR_UNKNOWN, false, "Unable to bin output (1st binning)");
