Index: /trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- /trunk/ippToPsps/jython/stackbatch.py	(revision 38786)
+++ /trunk/ippToPsps/jython/stackbatch.py	(revision 38787)
@@ -330,5 +330,5 @@
             sqlLine = sqlUtility("UPDATE StackObjectThin as a, " + self.scratchDb.dvoDetectionTable + " as b SET")
 
-#            sqlLine.group("a."+filter+"ippDetectID",   "b.ippDetectID") # eg, gippDetectID (from dvo.measure.detID)
+            # NOTE: filter:ippDetectID (eg, gippDetectID) are inserted in selectDvoObjIDs()
             sqlLine.group("a."+filter+"stackDetectID", "b.detectID")    # eg, gstackDetectID (from dvo.measure.extID)
             sqlLine.group("a."+filter+"stackMetaID",    str(stackID))   # eg, gstackMetaID (from cmf.IMAGEID)
@@ -348,6 +348,8 @@
             sqlLine.group("a."+filter+"ApMag",         "b.Map")
             sqlLine.group("a."+filter+"ApMagErr",      "b.dMap")
-          #  sqlLine.group("a."+filter+"telluricExt",   "b.telluricExt")
-
+
+            # XXX EAM : 20151002 : have we dropped this?
+            # sqlLine.group("a."+filter+"telluricExt",   "b.telluricExt")
+          
             sqlLine.group("a."+filter+"infoFlag3",     "b.flags")
             sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND b.imageID = " + str(imageID) + " and a." + filter + "ippDetectID=b.ippDetectID")
@@ -366,9 +368,11 @@
             sqlLine.group("a."+filter+"raErr",         "b.X_PSF_SIG * b.PLTSCALE")
             sqlLine.group("a."+filter+"decErr",        "b.Y_PSF_SIG * b.PLTSCALE")
-#            sqlLine.group("a."+filter+"sky",           "b.SKY / " + str(exptime))
-#            sqlLine.group("a."+filter+"skyErr",        "b.SKY_SIGMA / " + str(exptime))
             sqlLine.group("a."+filter+"infoFlag",      "b.FLAGS")
             sqlLine.group("a."+filter+"infoFlag2",     "b.FLAGS2")
             sqlLine.group("a."+filter+"nFrames",       "b.N_FRAMES")
+
+            # NOTE: sky is now in StackObjectAttributes
+            # sqlLine.group("a."+filter+"sky",           "b.SKY / " + str(exptime))
+            # sqlLine.group("a."+filter+"skyErr",        "b.SKY_SIGMA / " + str(exptime))
 
             sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID=b.IPP_IDET")
@@ -433,6 +437,6 @@
             sqlLine.group("a."+filter+"xPosErr",       "b.X_PSF_SIG")
             sqlLine.group("a."+filter+"yPosErr",       "b.Y_PSF_SIG")
-            sqlLine.group("a."+filter+"psfMajorFWHM",  "b.PSF_FWHM_MAJ")
-            sqlLine.group("a."+filter+"psfMinorFWHM",  "b.PSF_FWHM_MIN")
+            sqlLine.group("a."+filter+"psfMajorFWHM",  "b.PSF_FWHM_MAJ * b.PLTSCALE")
+            sqlLine.group("a."+filter+"psfMinorFWHM",  "b.PSF_FWHM_MIN * b.PLTSCALE")
             sqlLine.group("a."+filter+"psfTheta",      "b.PSF_THETA")
             sqlLine.group("a."+filter+"psfCore",       "b.PSF_CORE")
@@ -441,9 +445,9 @@
             sqlLine.group("a."+filter+"psfQfPerfect",  "b.PSF_QF_PERFECT")
             sqlLine.group("a."+filter+"psfChiSq",      "b.PSF_CHISQ / b.PSF_NDOF")
-            sqlLine.group("a."+filter+"momentXX",      "b.MOMENTS_XX")
-            sqlLine.group("a."+filter+"momentXY",      "b.MOMENTS_XY")
-            sqlLine.group("a."+filter+"momentYY",      "b.MOMENTS_YY")
-            sqlLine.group("a."+filter+"momentR1",      "b.MOMENTS_R1")
-            sqlLine.group("a."+filter+"momentRH",      "b.MOMENTS_RH")
+            sqlLine.group("a."+filter+"momentXX",      "b.MOMENTS_XX * PLTSCALE * PLTSCALE")
+            sqlLine.group("a."+filter+"momentXY",      "b.MOMENTS_XY * PLTSCALE * PLTSCALE")
+            sqlLine.group("a."+filter+"momentYY",      "b.MOMENTS_YY * PLTSCALE * PLTSCALE")
+            sqlLine.group("a."+filter+"momentR1",      "b.MOMENTS_R1 * b.PLTSCALE")
+            sqlLine.group("a."+filter+"momentRH",      "b.MOMENTS_RH * b.PLTSCALE")
             sqlLine.group("a."+filter+"PSFFlux",       "b.PSF_INST_FLUX / " + str(exptime))
             sqlLine.group("a."+filter+"PSFFluxErr",    "b.PSF_INST_FLUX_SIG / " + str(exptime))
@@ -453,6 +457,6 @@
             sqlLine.group("a."+filter+"KronFluxErr",   "b.KRON_FLUX_ERR / " + str(exptime))
             sqlLine.group("a."+filter+"ApFillFac",     "b.AP_NPIX / (3.14159265359 * POW(b.AP_MAG_RADIUS - 0.5, 2))")
-#            sqlLine.group("a."+filter+"ApRadius",      "b.AP_MAG_RADIUS")
-            sqlLine.group("a."+filter+"KronRad",       "b.MOMENTS_R1 * 2.5")
+#           sqlLine.group("a."+filter+"ApRadius",      "b.AP_MAG_RADIUS")
+            sqlLine.group("a."+filter+"KronRad",       "b.MOMENTS_R1 * 2.5 * b.PLTSCALE")
             sqlLine.group("a."+filter+"PlateScale",    "b.PLTSCALE")
             sqlLine.group("a."+filter+"ExtNSigma",     "b.EXT_NSIGMA")
@@ -471,4 +475,10 @@
             sqlLine.group("a."+filter+"expTime",       "b.expTime")
             sqlLine.group("a."+filter+"zp",            "b.zp")
+            sqlLine.group("a."+filter+"PSFFlux",       "a."+filter+"PSFFlux * b.zpFactor")
+            sqlLine.group("a."+filter+"PSFFluxErr",    "a."+filter+"PSFFluxErr * b.zpFactor")
+            sqlLine.group("a."+filter+"ApFlux",        "a."+filter+"ApFlux * b.zpFactor")
+            sqlLine.group("a."+filter+"ApFluxErr",     "a."+filter+"ApFluxErr * b.zpFactor")
+            sqlLine.group("a."+filter+"KronFlux",      "a."+filter+"KronFlux * b.zpFactor")
+            sqlLine.group("a."+filter+"KronFluxErr",   "a."+filter+"KronFluxErr * b.zpFactor")
 
             # where should these go?
@@ -482,5 +492,4 @@
                 self.logger.errorPair('failed sql',sql)
                 raise
-
 
         self.deleteRowsWithNoStackData(tablename)
@@ -824,4 +833,5 @@
         self.scratchDb.createIndex(tablename, "objID") 
 
+        # fluxes are set to Jy
         for filter in self.filters:
             self.populateStackApFlxFilter(tablename, "Unc", filter)
@@ -849,4 +859,5 @@
         self.scratchDb.createIndex(tablename, "objID") 
 
+        # fluxes are set to Jy
         for filter in self.filters:
             self.populateStackApFlxFilter(tablename, version, filter)
@@ -856,5 +867,5 @@
 
     '''
-    Updates aperture fluxes for StackApFlx table
+    Updates aperture fluxes for StackApFlx table, fluxes are multiplied by zpFactor to be in Jy
     '''
     def populateStackApFlxFilter(self, tablename, version, filter):
@@ -953,4 +964,5 @@
             self.logger.infoPair("failed sql", sql)
             raise
+
         # instrumental flux, AB mags, Jy:
         # flux_inst = cts / sec
@@ -970,7 +982,7 @@
             pspsNum  = str(int(number) + 2)
             field = filter + prefix + "flxR" + pspsNum
-            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)")
+            sqlLine.group(field,               field         + " * b.zpFactor")
+            sqlLine.group(field + "Err",       field + "err" + " * b.zpFactor")
+            sqlLine.group(field + "Std",       field + "Std" + " * b.zpFactor")
         sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID AND b.imageID = " + str(self.imageIDs[filter]) )
         try: self.scratchDb.execute(sql)
@@ -1101,9 +1113,10 @@
     def selectDvoObjIDs(self):
 
+        # we need a temporary column to select detections from a common stack object
+        self.scratchDb.addColumn("StackObjectThin", "ippDetectID", "bigint")
+
         # we need a temporary column for each filter to identify empty rows
-        self.scratchDb.addColumn("StackObjectThin", "ippDetectID", "bigint")
         for filter in self.filters:
             self.scratchDb.addColumn("StackObjectThin", filter + "haveData", "tinyint")
-            
 
  #       sqlLine = sqlUtility("INSERT INTO StackObjectThin (")
@@ -1119,9 +1132,4 @@
    #     sqlLine.group("randomStackObjID", "FLOOR(RAND()*9223372036854775807)")
 
-            
-
-
-
-
         whereClause = " WHERE ("
         imageIDs = self.imageIDs.values()
@@ -1130,4 +1138,5 @@
             self.logger.infoPair("selecting imageID", imageID)
 
+            # NOTE: in this statement, imageID is the DVO imageID, not the gpc1 imageID (== DVO externID)
             whereClause += "(" + self.scratchDb.dvoDetectionTable + ".imageID = " + str(imageID) + ")"
 
@@ -1137,5 +1146,5 @@
         whereClause += ")"
 
-        sql = "insert into StackObjectThin (objID, ippDetectID,ippObjID) select distinct objID, ippDetectID, ippObjID from dvoDetectionFull "+whereClause;
+        sql = "insert into StackObjectThin (objID, ippDetectID, ippObjID) select distinct objID, ippDetectID, ippObjID from dvoDetectionFull " + whereClause;
 
   #      sql = sqlLine.makeRaw(") SELECT DISTINCT ", "FROM " + self.scratchDb.dvoDetectionTable + whereClause)
@@ -1145,5 +1154,4 @@
             self.logger.errorPair('failed sql',sql)
             raise
-
 
 # ok, now add surveyID, tessID, projectionID, skycellID, dtaRelease
@@ -1161,5 +1169,4 @@
 
  # ok, now fill g/r/i/z/yippDetectID using objID and detectID and imge ID
-
 
         for filter in self.filters:
