Index: /branches/eam_branches/ipp-20140717/Ohana/src/relphot/src/setMrelCatalog.c
===================================================================
--- /branches/eam_branches/ipp-20140717/Ohana/src/relphot/src/setMrelCatalog.c	(revision 37229)
+++ /branches/eam_branches/ipp-20140717/Ohana/src/relphot/src/setMrelCatalog.c	(revision 37230)
@@ -147,4 +147,7 @@
     off_t meas = measureOffset;
 
+    float psfQfMax = 0.0;
+    float psfQfPerfMax = 0.0;
+
     int Nap = 0;
     int Npsf = 0;
@@ -166,4 +169,9 @@
       // SKIP gpc1 forced-warp data
       if (isGPC1warp(measureT[k].photcode)) continue;
+
+      if (isSetMrelFinal) {
+	if (measure[k].psfQF     > psfQfMax)     psfQfMax     = measure[k].psfQF;
+	if (measure[k].psfQFperf > psfQfPerfMax) psfQfPerfMax = measure[k].psfQFperf;
+      }
 
       if (measureT[k].dbFlags & MEAS_BAD) SKIP_THIS_MEAS(Nbad); 
@@ -367,4 +375,7 @@
       secfilt[Nsec].Mmin = psfstats->min;
 
+      secfilt[Nsec].psfQfMax     = psfQfMax;
+      secfilt[Nsec].psfQfPerfMax = psfQfPerfMax;
+
       // NOTE : use the modified weight for apmags as well as psf mags
       liststats (Maplist, daplist, waplist, Nap, apstats);
@@ -447,5 +458,5 @@
 int setMrelAverageStack (off_t measureOffset, int cat, FlatCorrectionTable *flatcorr, SetMrelInfo *results, Average *average, SecFilt *secfilt, Measure *measure) {
 
-  off_t k, ID;
+  off_t k;
 
   float Mcal= 0, Mmos = 0, Mgrid = 0, Finst = 0;
@@ -457,4 +468,8 @@
   get_tess_ids(&tessID, &projectID, &skycellID, average[0].R, average[0].D);
 
+  average[0].tessID       = tessID;
+  average[0].projectionID = projectID;
+  average[0].skycellID    = skycellID;
+
   int NstackGood = 0;
   int NstackSuspect = 0;
@@ -478,4 +493,7 @@
     int isBad = FALSE;
     int isSuspect = FALSE;
+
+    int Nstack = 0; // number for this photcode
+    int NstackDet = 0; // number for this photcode
 
     off_t meas = measureOffset;
@@ -489,4 +507,7 @@
       if (!code) continue;
       if (code->equiv != thisCode) { continue; }
+
+      Nstack ++;
+      if (measure[k].photFlags2 & 0x00000004 == 0) NstackDet ++;
 
       // clear this bit for all measurements
@@ -563,5 +584,5 @@
     // we are now populating stackDetectID not stack Image ID in secfilt
     // ID = (stackPrimaryMeasureMin >= 0) ? stackPrimaryIDmin      : stackCenterIDmin;
-    ID = measure[k].extID; // for the stack, this is the stackDetectID
+    // ID = measure[k].extID; // for the stack, this is the stackDetectID
 
     // get the zero point for the selected image
@@ -615,4 +636,7 @@
     secfilt[Nsec].stackBestOff = k + measureOffset;
 
+    secfilt[Nsec].Nstack    = Nstack;
+    secfilt[Nsec].NstackDet = NstackDet;
+
     // this is the measurement used by secfilt[]
     measure[k].dbFlags |= ID_MEAS_STACK_PHOT_SRC;
@@ -694,4 +718,7 @@
     int Npsf = 0;
     int Nkron = 0;
+
+    int Nwarp = 0;
+    int NwarpGood = 0;
     for (k = 0; k < average[0].Nmeasure; k++, meas++) {
 
@@ -703,4 +730,7 @@
       if (!code) continue;
       if (code->equiv != thisCode) { continue; }
+
+      Nwarp ++;
+      if (measure[k].psfQFperf > 0.85) NwarpGood ++;
 
       measure[k].dbFlags &= ~ID_MEAS_WARP_USED;
@@ -799,4 +829,7 @@
     secfilt[Nsec].NusedKronWrp = Nkron;
     secfilt[Nsec].MkronWrp  = isnan(secfilt[Nsec].FkronWrp) ? NAN : 8.9 - 2.5*log10(secfilt[Nsec].FkronWrp); // 8.9 since flux is in Jy
+
+    secfilt[Nsec].Nwarp     = Nwarp;
+    secfilt[Nsec].NwarpGood = NwarpGood;
   }
   return (TRUE);
