Index: /branches/eam_branches/ipp-20140717/ippToPsps/config/tables.ST.vot
===================================================================
--- /branches/eam_branches/ipp-20140717/ippToPsps/config/tables.ST.vot	(revision 37199)
+++ /branches/eam_branches/ipp-20140717/ippToPsps/config/tables.ST.vot	(revision 37200)
@@ -512,4 +512,7 @@
         <DESCRIPTION>zero point offset</DESCRIPTION>
       </FIELD>
+      <FIELD name="gPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
+        <DESCRIPTION>plate scale</DESCRIPTION>
+      </FIELD>
       <FIELD name="gexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
         <DESCRIPTION>exposure time (informational)</DESCRIPTION>
@@ -607,4 +610,7 @@
         <DESCRIPTION>zero point offset</DESCRIPTION>
       </FIELD>
+      <FIELD name="rPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
+        <DESCRIPTION>plate scale</DESCRIPTION>
+      </FIELD>
       <FIELD name="rexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
         <DESCRIPTION>exposure time (informational)</DESCRIPTION>
@@ -702,4 +708,7 @@
         <DESCRIPTION>zero point offset</DESCRIPTION>
       </FIELD>
+      <FIELD name="iPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
+        <DESCRIPTION>plate scale</DESCRIPTION>
+      </FIELD>
       <FIELD name="iexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
         <DESCRIPTION>exposure time (informational)</DESCRIPTION>
@@ -797,4 +806,7 @@
         <DESCRIPTION>zero point offset</DESCRIPTION>
       </FIELD>
+      <FIELD name="zPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
+        <DESCRIPTION>plate scale</DESCRIPTION>
+      </FIELD>
       <FIELD name="zexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
         <DESCRIPTION>exposure time (informational)</DESCRIPTION>
@@ -891,4 +903,7 @@
       <FIELD name="yzp" arraysize="1" datatype="float" unit="magnitude" default="0">
         <DESCRIPTION>zero point offset</DESCRIPTION>
+      </FIELD>
+      <FIELD name="yPlateScale" arraysize="1" datatype="float" unit="arcsec/pixel" default="0">
+        <DESCRIPTION>plate scale</DESCRIPTION>
       </FIELD>
       <FIELD name="yexpTime" arraysize="1" datatype="float" unit="seconds" default="-999">
@@ -1849,6 +1864,6 @@
         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="gExpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
+      <FIELD name="gExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -1902,6 +1917,6 @@
         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="rExpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
+      <FIELD name="rExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -1955,6 +1970,6 @@
         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="iExpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
+      <FIELD name="iExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2008,6 +2023,6 @@
         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="zExpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
+      <FIELD name="zExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2061,6 +2076,6 @@
         <DESCRIPTION>Exponential fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="yExpLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Exponential fit likelihood factor</DESCRIPTION>
+      <FIELD name="yExpChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Exponential fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2142,6 +2157,6 @@
         <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="gDeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>DeVaucouleurs fit likelihood factor</DESCRIPTION>
+      <FIELD name="gDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2195,6 +2210,6 @@
         <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="rDeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>DeVaucouleurs fit likelihood factor</DESCRIPTION>
+      <FIELD name="rDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2248,6 +2263,6 @@
         <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="iDeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>DeVaucouleurs fit likelihood factor</DESCRIPTION>
+      <FIELD name="iDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2301,6 +2316,6 @@
         <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="zDeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>DeVaucouleurs fit likelihood factor</DESCRIPTION>
+      <FIELD name="zDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2354,6 +2369,6 @@
         <DESCRIPTION>DeVaucouleurs fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="yDeVLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>DeVaucouleurs fit likelihood factor</DESCRIPTION>
+      <FIELD name="yDeVChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>DeVaucouleurs fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2441,6 +2456,6 @@
         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="gSerLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
+      <FIELD name="gSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2500,6 +2515,6 @@
         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="rSerLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
+      <FIELD name="rSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2559,6 +2574,6 @@
         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="iSerLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
+      <FIELD name="iSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2618,6 +2633,6 @@
         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="zSerLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
+      <FIELD name="zSerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Sersic fit chi square factor</DESCRIPTION>
       </FIELD>
 
@@ -2677,6 +2692,6 @@
         <DESCRIPTION>Sersic fit coverage factor</DESCRIPTION>
       </FIELD>
-      <FIELD name="ySerLikelihood" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>Sersic fit likelihood factor</DESCRIPTION>
+      <FIELD name="ySerChisq" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>Sersic fit chi square</DESCRIPTION>
       </FIELD>
 
Index: /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py
===================================================================
--- /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py	(revision 37199)
+++ /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py	(revision 37200)
@@ -428,4 +428,5 @@
             sqlLine.group("a."+filter+"ApRadius",      "b.AP_MAG_RADIUS")
             sqlLine.group("a."+filter+"KronRad",       "b.MOMENTS_R1 * 2.5")
+            sqlLine.group("a."+filter+"PlateScale",    "b.PLTSCALE")
 
             sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET")
@@ -519,6 +520,6 @@
                       
         sqlLine.group("a." + filter + model + "Radius",    "b.EXT_WIDTH_MAJ")
-        sqlLine.group("a." + filter + model + "Ab",        "b.EXT_WIDTH_MAJ/b.EXT_WIDTH_MIN")
-        sqlLine.group("a." + filter + model + "Phi",       "b.EXT_THETA")
+        sqlLine.group("a." + filter + model + "Ab",        "b.EXT_WIDTH_MIN/b.EXT_WIDTH_MAJ")
+        sqlLine.group("a." + filter + model + "Phi",       "DEGREES(b.EXT_THETA)")
 
         sqlLine.group("a." + filter + model + "RadiusErr", "b.EXT_WIDTH_MAJ_ERR") # these are not correctly defined.
@@ -526,9 +527,13 @@
         sqlLine.group("a." + filter + model + "PhiErr",    "b.EXT_THETA_ERR") # these are not correctly defined.
 
+        sqlLine.group("a." + filter + model + "Chisq",     "b.EXT_CHISQ / b.EXT_NDOF")
+
+        # I have raExp = X_EXT
+
         # XXX this is tricky: RA_EXT is not defined, but X_EXT is...
-        # sqlLine.group("a." + filter + model + "RaOff",     "b.X_EXT")
-        # sqlLine.group("a." + filter + model + "DecOff",    "b.Y_EXT")
-        # sqlLine.group("a." + filter + model + "RaErr",     "b.X_EXT_SIG * b.PLTSCALE")
-        # sqlLine.group("a." + filter + model + "DecErr",    "b.Y_EXT_SIG * b.PLTSCALE")
+        sqlLine.group("a." + filter + model + "Ra",        "b.X_EXT")
+        sqlLine.group("a." + filter + model + "Dec",       "b.Y_EXT")
+        sqlLine.group("a." + filter + model + "RaErr",     "b.X_EXT_SIG") # need to modify by platescale
+        sqlLine.group("a." + filter + model + "DecErr",    "b.Y_EXT_SIG")
 
         # sersic fit has an extra parameter
@@ -547,7 +552,47 @@
 
         # insert detection information for each filter based on the DVO contents
+        # XXX since I already have extracted StackObjectRaw, this is probably faster using that table:
         sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
         sqlLine.group("a." + filter + model + "Mag",       "a." + filter + model + "Mag + b.zp")
         sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
+
+        self.logger.infoPair('sql', sql)     
+        try:
+            self.scratchDb.execute(sql)
+        except:
+            self.logger.errorPair('failed sql',sql)
+            return
+
+        # we have (modulo signs):
+        # gRaExp  = gra  + (X_EXT - gxPos)*gPlateScale / cos(gdec)
+        # gDecExp = gdec + (Y_EXT - gyPos)*gPlateScale
+
+        rawS  = "c." + filter + "PlateScale"
+
+        extR  = "a." + filter + model + "Ra"
+        rawR  = "b." + filter + "ra"
+        rawX  = "c." + filter + "xPos"
+
+        extD  = "a." + filter + model + "Dec"
+        rawD  = "b." + filter + "dec"
+        rawY  = "c." + filter + "yPos"
+
+        # dRA / dX = -PlateScale
+        # b.+filter+ra  - (a.+filter+model+Ra - c.+filter+xPos)*c.+filter+PlateScale / cos(+filter+dec)
+        # extR = rawR - (extR - rawX)*rawS / 3600.0 / cos(rawD)
+
+        # dDEC / dY = +PlateScale
+        # b.+filter+dec + (a.+filter+model+Dec - c.+filter+xPos)*c.+filter+PlateScale / cos(+filter+dec)
+        # extD = rawD + (extD - rawY)*rawS / 3600.0
+
+        # insert detection information for each filter based on the DVO contents
+        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, StackObjectThin as b, StackObjectRaw as c SET ")
+        sqlLine.group(extR, rawR + " - (" + extR + " - " + rawX + ")*" + rawS + " / 3600.0 / cos(radians(" + rawD + "))")
+        sqlLine.group(extD, rawD + " + (" + extD + " - " + rawY + ")*" + rawS + " / 3600.0")
+        field = "a." + filter + model + "RaErr"
+        sqlLine.group(field, field + "*" + rawS)
+        field = "a." + filter + model + "DecErr"
+        sqlLine.group(field, field + "*" + rawS)
+        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a.objID = c.objID")
 
         self.logger.infoPair('sql', sql)     
@@ -760,11 +805,24 @@
         self.scratchDb.execute(sql)
 
+        # instrumental flux, AB mags, Jy:
+        # flux_inst = cts / sec
+        # mag_AB = -2.5*log(flux_inst) + ZP [with appropriate definition of zero point]
+        # mag_AB = -2.5*log(flux_cgs) - 48.6 [by construction with ~Vega flux in V-band]
+        # flux_cgs = ten(-0.4*(mag_AB + 48.6))
+        # flux_cgs = ten(-0.4*((-2.5*log(flux_inst) + ZP) + 48.6))
+        # flux_cgs = flux_inst * ten(-0.4*(ZP + 48.6))
+        # flux_Jy  = flux_cgs * 10^23
+        # flux_Jy  = flux_inst * ten(-0.4*(ZP + 48.6) + 23.0)  [23.0 - 0.4*48.6 = 3.56]
+        # flux_Jy  = flux_inst * ten(-0.4*ZP + 3.56)
+        # flux_Jy  = flux_inst * ten(-0.4*ZP) * 3630.78
+
         # modify flux to apply the zero point
-        # sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
-        # field = filter + prefix + "flxR" + number
-        # sqlLine.group(field,               field         + " * POW(10, 3.56 - 0.4* b.zp)")
-        # sqlLine.group(field + "Err",       field + "err" + " * POW(10, 3.56 - 0.4* b.zp)")
-        # sqlLine.group(field + "Std",       field + "Std" + " * POW(10, 3.56 - 0.4* b.zp)")
-        # sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
+        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
+        for number in numbers:
+            field = filter + prefix + "flxR" + number
+            sqlLine.group(field,               field         + " * POW(10, 3.56 - 0.4* b.zp)")
+            sqlLine.group(field + "Err",       field + "err" + " * POW(10, 3.56 - 0.4* b.zp)")
+            sqlLine.group(field + "Std",       field + "Std" + " * POW(10, 3.56 - 0.4* b.zp)")
+        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID")
 
     '''
Index: /branches/eam_branches/ipp-20140717/ippToPsps/test/sascheck.v1.sql
===================================================================
--- /branches/eam_branches/ipp-20140717/ippToPsps/test/sascheck.v1.sql	(revision 37199)
+++ /branches/eam_branches/ipp-20140717/ippToPsps/test/sascheck.v1.sql	(revision 37200)
@@ -40,5 +40,5 @@
        join StackApFlxFullC1 using (gippDetectID)
        join StackApFlxFullC2 using (gippDetectID)
-       where (gippDetectID = 189)
+       -- where (gippDetectID = 189)
        -- where (gpsfQfPerfect > 0.85)
        limit 50
