Index: trunk/ppSub/src/ppSubDefineOutput.c
===================================================================
--- trunk/ppSub/src/ppSubDefineOutput.c	(revision 21360)
+++ trunk/ppSub/src/ppSubDefineOutput.c	(revision 21524)
@@ -6,16 +6,25 @@
  *
  *  @author IfA
- *  @version $Revision: 1.2 $ $Name: not supported by cvs2svn $
- *  @date $Date: 2009-02-06 01:37:17 $
+ *  @version $Revision: 1.3 $ $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"
 
-bool ppSubDefineOutput (pmConfig *config, const pmFPAview *view) {
+bool ppSubDefineOutput(pmConfig *config, const pmFPAview *view)
+{
+    psAssert(config, "Require configuration");
+    psAssert(view, "Require view");
 
-    bool mdok;
-
-    // generate an output readout 
+    // generate an output readout
     pmCell *outCell = pmFPAfileThisCell(config->files, view, "PPSUB.OUTPUT"); // Output cell
     pmReadout *outRO = pmReadoutAlloc(outCell); // Output readout: subtraction
@@ -30,11 +39,13 @@
     pmReadout *refConv = pmFPAfileThisReadout(config->files, view, "PPSUB.REF.CONV"); // Reference readout
 
-    // Add kernel descrption to header.  We don't know which readout gets the kernels because
-    // it depends on which is larger (the choice is set in ppSubMatchPSFs)
-    bool inputHasKernel = true;
-    pmSubtractionKernels *kernels = psMetadataLookupPtr(&mdok, inConv->analysis, PM_SUBTRACTION_ANALYSIS_KERNEL); // Subtraction kernel
+    // Add kernel descrption to header.
+    // We don't know which readout has the kernels because it depends on which PSF is larger
+    bool mdok;                          // Status of MD lookup
+    psMetadata *analysis = inConv->analysis; // Analysis metadata with kernel information
+    pmSubtractionKernels *kernels = psMetadataLookupPtr(&mdok, analysis,
+                                                        PM_SUBTRACTION_ANALYSIS_KERNEL); // Subtraction kernel
     if (!kernels) {
-        kernels = psMetadataLookupPtr(&mdok, refConv->analysis, PM_SUBTRACTION_ANALYSIS_KERNEL);
-	inputHasKernel = false;
+        analysis = refConv->analysis;
+        kernels = psMetadataLookupPtr(&mdok, analysis, PM_SUBTRACTION_ANALYSIS_KERNEL);
     }
     if (!kernels) {
@@ -45,24 +56,17 @@
         return false;
     }
-    psMetadataAddStr(outHDU->header, PS_LIST_TAIL, "PPSUB.KERNEL", 0, "Subtraction kernel", kernels->description);
+    psMetadataAddStr(outHDU->header, PS_LIST_TAIL, "PPSUB.KERNEL", 0, "Subtraction kernel",
+                     kernels->description);
 
-    if (inputHasKernel) {
-	outRO->analysis = psMetadataCopy(outRO->analysis, inConv->analysis);
-    } else {
-	outRO->analysis = psMetadataCopy(outRO->analysis, refConv->analysis);
-    } 
+    outRO->analysis = psMetadataCopy(outRO->analysis, analysis);
 
 #ifdef TESTING
-    psImage *kernelImage = NULL;
-
-    if (inputHasKernel) {
-	kernelImage = psMetadataLookupPtr(&mdok, inConv->analysis, "SUBTRACTION.KERNEL.IMAGE"); // Image of the kernels
-    } else {
-        kernelImage = psMetadataLookupPtr(&mdok, refConv->analysis, "SUBTRACTION.KERNEL.IMAGE");
+    {
+        psImage *kernelImage = psMetadataLookupPtr(&mdok, analysis,
+                                                   "SUBTRACTION.KERNEL.IMAGE"); // Image of kernel
+        psFits *fits = psFitsOpen("kernel.fits", "w");
+        psFitsWriteImage(fits, NULL, kernelImage, 0, NULL);
+        psFitsClose(fits);
     }
-
-    psFits *fits = psFitsOpen("kernel.fits", "w");
-    psFitsWriteImage(fits, NULL, kernelImage, 0, NULL);
-    psFitsClose(fits);
 #endif
 
