Index: /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py
===================================================================
--- /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py	(revision 37190)
+++ /branches/eam_branches/ipp-20140717/ippToPsps/jython/stackbatch.py	(revision 37191)
@@ -322,6 +322,4 @@
             sqlLine.group("a."+filter+"ra",            "b.ra")
             sqlLine.group("a."+filter+"dec",           "b.dec_")
-            sqlLine.group("a."+filter+"raErr",         "b.raErr")
-            sqlLine.group("a."+filter+"decErr",        "b.decErr")
 
             sqlLine.group("a."+filter+"PSFMag",        "b.Mpsf")
@@ -348,4 +346,6 @@
             sqlLine = sqlUtility("UPDATE StackObjectThin AS a , " + filter + "SkyChip_psf AS b SET")
 
+            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))
@@ -406,5 +406,4 @@
             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")
@@ -420,5 +419,4 @@
             sqlLine.group("a."+filter+"momentR1",      "b.MOMENTS_R1")
             sqlLine.group("a."+filter+"momentRH",      "b.MOMENTS_RH")
-
             sqlLine.group("a."+filter+"PSFFlux",       "b.PSF_INST_FLUX / " + str(exptime))
             sqlLine.group("a."+filter+"PSFFluxErr",    "b.PSF_INST_FLUX_SIG / " + str(exptime))
@@ -427,6 +425,5 @@
             sqlLine.group("a."+filter+"KronFlux",      "b.KRON_FLUX / " + str(exptime))
             sqlLine.group("a."+filter+"KronFluxErr",   "b.KRON_FLUX_ERR / " + str(exptime))
-
-            sqlLine.group("a."+filter+"ApFillFac",     "b.AP_NPIX / (3.14159265359 * b.AP_MAG_RADIUS * b.AP_MAG_RADIUS)")
+            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")
@@ -517,4 +514,5 @@
         sqlLine.group("a."+filter+"haveData",              "'1'")
 
+        # model calibrated magnitude = instrumental magnitude + 2.5*log10(exptime) + ZP (added below from dvoDetectionTable)
         sqlLine.group("a." + filter + model + "Mag",       "b.EXT_INST_MAG + " + magtime) # need to modify by zero point and 2.5*log10(exptime)
         sqlLine.group("a." + filter + model + "MagErr",    "b.EXT_INST_MAG_SIG")
@@ -529,6 +527,6 @@
 
         # XXX this is tricky: RA_EXT is not defined, but X_EXT is...
-        # sqlLine.group("a." + filter + model + "Ra",        "b.RA_EXT")
-        # sqlLine.group("a." + filter + model + "Dec",       "b.DEC_EXT")
+        # 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")
@@ -584,10 +582,20 @@
     def populateStackPetrosianFilter(self, filter):
 
+        tablename = "StackPetrosian"
+
         if self.stackIDs[filter] <= 0:
             self.logger.infoPair("no stack data for filter" , filter) 
             return True
 
+        header  = self.headerSet[filter]
+
+        # PETRO_MAG is instrumental + 2.5log(exptime) + FPA.ZP
+        # we want to apply the DVO zero point, so remove FPA.ZP:
+
+        hdrZP   = "%.5f" % float(header['FPA.ZP'])
+        # magtime = "%.5f" % (2.5*math.log10(float(header['EXPTIME'])))
+
         self.logger.infoPair("Adding", "petrosians for extended sources")
-        sqlLine = sqlUtility("UPDATE StackPetrosian AS a, " + filter + "SkyChip_xsrc AS b SET")
+        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + filter + "SkyChip_xsrc AS b SET")
 
         sqlLine.group("a."+filter+"haveData",         "'1'")
@@ -595,6 +603,6 @@
         sqlLine.group("a." + filter + "petRadius",    "b.PETRO_RADIUS")
         sqlLine.group("a." + filter + "petRadiusErr", "b.PETRO_RADIUS_ERR")
-        sqlLine.group("a." + filter + "petFlux",      "b.PETRO_MAG")  # XXX EAM 20140732 : still need to decide about flux vs mag
-        sqlLine.group("a." + filter + "petFluxErr",   "b.PETRO_MAG_ERR")  # XXX EAM 20140732
+        sqlLine.group("a." + filter + "petMag",       "b.PETRO_MAG - " + hdrZP)  
+        sqlLine.group("a." + filter + "petMagErr",    "1.0 / b.PETRO_MAG_ERR")  
         sqlLine.group("a." + filter + "petR50",       "b.PETRO_RADIUS_50")
         sqlLine.group("a." + filter + "petR50Err",    "b.PETRO_RADIUS_50_ERR")
@@ -607,4 +615,16 @@
         print "SQL: " + sql
         self.scratchDb.execute(sql)
+
+        # modify petMag to apply the zero point
+        sqlLine = sqlUtility("UPDATE " + tablename + " AS a, " + self.scratchDb.dvoDetectionTable + " as b SET")
+        sqlLine.group("a." + filter + "petMag",       "a." + filter + "petMag + 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
 
     '''
@@ -730,12 +750,21 @@
 
         for number in numbers:
-            sqlLine.group(filter + prefix + "flxR" + number,          "b.APER_FLUX_"       + number + " / " + exptime)
-            sqlLine.group(filter + prefix + "flxR" + number + "Err",  "b.APER_FLUX_ERR_"   + number + " / " + exptime)
-            sqlLine.group(filter + prefix + "flxR" + number + "Std",  "b.APER_FLUX_STDEV_" + number + " / " + exptime)
-            sqlLine.group(filter + prefix + "flxR" + number + "Fill", "b.APER_FILL_"       + number + " / " + exptime)
+            field = filter + prefix + "flxR" + number
+            sqlLine.group(field,          "b.APER_FLUX_"       + number + " / " + exptime)
+            sqlLine.group(field + "Err",  "b.APER_FLUX_ERR_"   + number + " / " + exptime)
+            sqlLine.group(field + "Std",  "b.APER_FLUX_STDEV_" + number + " / " + exptime)
+            sqlLine.group(field + "Fill", "b.APER_FILL_"       + number)
             
         sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET AND  " + psfCondition)
         self.logger.infoPair("sql",sql)
         self.scratchDb.execute(sql)
+
+        # 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")
 
     '''
