Index: trunk/ppSim/src/ppSimSmoothReadout.c
===================================================================
--- trunk/ppSim/src/ppSimSmoothReadout.c	(revision 29002)
+++ trunk/ppSim/src/ppSimSmoothReadout.c	(revision 36375)
@@ -4,20 +4,36 @@
 {
     bool status;
+    psTimerStart ("ppSmooth");
 
-    // XXX use these defaults?
-    // float minGauss = 0.1;
-    float nSigma = 4.0;
+    float nSigma = psMetadataLookupF32(&status, recipe, "CONVOLVE.NSIGMA"); // SIGMA convolutions (pixels)
+    if (!status) nSigma = 5.0;
+
     float sigma = psMetadataLookupF32(&status, recipe, "SEEING"); // Seeing SIGMA (pixels)
 
-    // bool oldThreads = psImageConvolveSetThreads(true); // Old value of threading in psImageConvolve
+    char *modelName = psMetadataLookupStr(&status, recipe, "PSF.MODEL"); // Seeing SIGMA (pixels)
+    if (!strcmp (modelName, "PS_MODEL_GAUSS")) {
+      // bool oldThreads = psImageConvolveSetThreads(true); // Old value of threading in psImageConvolve
+      // smooth the image in place, applying the mask as we go
+      psImageSmooth(input->image, sigma, nSigma);
+      psLogMsg("ppSmooth", PS_LOG_MINUTIA, "smooth image: %f sec\n", psTimerMark("ppSmooth"));
+      return true;
+    }
 
-    psTimerStart ("ppSmooth");
+    if (!strcmp (modelName, "PS_MODEL_PS1_V1")) {
+      // bool oldThreads = psImageConvolveSetThreads(true); // Old value of threading in psImageConvolve
+      // smooth the image in place, applying the mask as we go
+      psImageSmooth2dCacheData *smdata = psImageSmooth2dCacheAlloc(nSigma);
+      psImageSmooth2dCacheKernel_PS1_V1 (smdata, sigma, 1.0);
 
-    // smooth the image in place, applying the mask as we go
-    psImageSmooth(input->image, sigma, nSigma);
-    psLogMsg("ppSmooth", PS_LOG_MINUTIA, "smooth image: %f sec\n", psTimerMark("ppSmooth"));
+      psImageSmooth2dCache_F32 (input->image, smdata);
+
+      psFree (smdata);
+      psLogMsg("ppSmooth", PS_LOG_MINUTIA, "smooth image: %f sec\n", psTimerMark("ppSmooth"));
+      return true;
+    }
 
     // psImageConvolveSetThreads(oldThreads);
-    return true;
+    psLogMsg("ppSmooth", PS_LOG_MINUTIA, "failed to smooth image: %f sec\n", psTimerMark("ppSmooth"));
+    return false;
 }
 
