Index: /trunk/ippToPsps/config/tables.DF.vot
===================================================================
--- /trunk/ippToPsps/config/tables.DF.vot	(revision 37762)
+++ /trunk/ippToPsps/config/tables.DF.vot	(revision 37763)
@@ -244,7 +244,4 @@
         <DESCRIPTION> Kron radius</DESCRIPTION>
       </FIELD>
-      <FIELD name="kronRadErr" arraysize="1" datatype="float" unit="raw pixels" default="-999">
-        <DESCRIPTION> Kron radius error</DESCRIPTION>
-      </FIELD>
       <FIELD name="diffNPos" arraysize="1" datatype="int" unit="dimensionless" default="-999">
 	<DESCRIPTION>NPix > 3sigma</DESCRIPTION>
Index: /trunk/ippToPsps/config/tables.DO.vot
===================================================================
--- /trunk/ippToPsps/config/tables.DO.vot	(revision 37762)
+++ /trunk/ippToPsps/config/tables.DO.vot	(revision 37763)
@@ -81,6 +81,18 @@
         <DESCRIPTION> galactic latitude</DESCRIPTION>
       </FIELD>
-      <FIELD name="qfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
-        <DESCRIPTION>qf perfect</DESCRIPTION>
+      <FIELD name="gQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>qf perfect for g filter</DESCRIPTION>
+      </FIELD>
+      <FIELD name="rQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>qf perfect for r filter</DESCRIPTION>
+      </FIELD>
+      <FIELD name="iQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>qf perfect for i filter</DESCRIPTION>
+      </FIELD>
+      <FIELD name="zQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>qf perfect for z filter</DESCRIPTION>
+      </FIELD>
+      <FIELD name="yQfPerfect" arraysize="1" datatype="float" unit="dimensionless" default="-999">
+        <DESCRIPTION>qf perfect for y filter</DESCRIPTION>
       </FIELD>
       <FIELD name="dataRelease" arraysize="1" datatype="unsignedByte" unit="dimensionless" default="NA">
Index: /trunk/ippToPsps/jython/detectionbatch.py
===================================================================
--- /trunk/ippToPsps/jython/detectionbatch.py	(revision 37762)
+++ /trunk/ippToPsps/jython/detectionbatch.py	(revision 37763)
@@ -610,12 +610,13 @@
     '''
 
-    def updatePspsUniqueIDs(self,table):
+    def updatePspsUniqueIDs(self,table, ota):
         sql = "UPDATE "+table+" join (select @r:=@r+1 rownum, objID from \
         (select @r:=0) r, "+table+" t) as foo using (objID) set \
-        uniquePspsP2id = ((" +str(self.batchID)+ "*1000000000 ) + rownum)"
+        uniquePspsP2id = ((" +str(self.batchID)+ "*1000000000 ) \
+        + (" +str(ota) + "*10000000  )+rownum)"
         try: self.scratchDb.execute(sql)
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
         
     '''
@@ -651,5 +652,6 @@
         #self.logger.info("deleted nulls")
         self.logger.info("add psps unique p2 ids")
-        self.updatePspsUniqueIDs("Detection_" + chipname, self.imageIDs[chipname])
+        ota = x*10+y
+        self.updatePspsUniqueIDs("Detection_" + chipname, ota)
         self.updateImageID("Detection_" + chipname, x, y)
         #self.logger.info("updateImageId")
Index: /trunk/ippToPsps/jython/diffbatch.py
===================================================================
--- /trunk/ippToPsps/jython/diffbatch.py	(revision 37762)
+++ /trunk/ippToPsps/jython/diffbatch.py	(revision 37763)
@@ -430,5 +430,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
         
     '''
Index: /trunk/ippToPsps/jython/diffobjectbatch.py
===================================================================
--- /trunk/ippToPsps/jython/diffobjectbatch.py	(revision 37762)
+++ /trunk/ippToPsps/jython/diffobjectbatch.py	(revision 37763)
@@ -134,40 +134,13 @@
             #  " + cpsTable + " AS cps ON (cps.row = (MeanObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
 
-            sql = "UPDATE DiffObject JOIN \
-                   " + cpsTable + " AS cps ON (cps.row = (DiffObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
+            sql = "UPDATE DiffDetObject JOIN \
+                   " + cpsTable + " AS cps ON (cps.row = (DiffDetObject.row* " + str(filterCount) + ")-(" + str(filterCount) + " - " + str(filter[0]) + ")) \
                    SET \
-                    MeanObject." + filter[1] + "QfPerfect      = PSF_QF_PERF_MAX \
-                   ,MeanObject." + filter[1] + "MeanPSFMag     = MAG \
-                   ,MeanObject." + filter[1] + "MeanPSFMagErr  = MAG_ERR \
-                   ,MeanObject." + filter[1] + "MeanPSFMagStd  = MAG_STDEV \
-                   ,MeanObject." + filter[1] + "MeanPSFMagMin  = MAG_MIN \
-                   ,MeanObject." + filter[1] + "MeanPSFMagMax  = MAG_MAX \
-                   ,MeanObject." + filter[1] + "MeanPSFMagNpt  = NUSED \
-                   ,MeanObject." + filter[1] + "MeanKronMag    = MAG_KRON \
-                   ,MeanObject." + filter[1] + "MeanKronMagErr = MAG_KRON_ERR \
-                   ,MeanObject." + filter[1] + "MeanKronMagStd = MAG_KRON_STDEV \
-                   ,MeanObject." + filter[1] + "MeanKronMagNpt = NUSED_KRON \
-                   ,MeanObject." + filter[1] + "MeanApMag      = MAG_AP \
-                   ,MeanObject." + filter[1] + "MeanApMagErr   = MAG_AP_ERR \
-                   ,MeanObject." + filter[1] + "MeanApMagStd   = MAG_AP_STDEV \
-                   ,MeanObject." + filter[1] + "MeanApMagNpt   = NUSED_AP \
-                   ,MeanObject." + filter[1] + "Flags = (0x7fff & FLAGS) | ((FLAGS >> 11) & 0x2000) "
-
+                    DiffDetObject." + filter[1] + "QfPerfect      = PSF_QF_PERF_MAX "
 
             try: self.scratchDb.execute(sql)
             except:
-                self.logger.errorPair("failed update MeanObject", sql)
+                self.logger.errorPair("failed update DiffDetObject", sql)
                 raise
-
-        # now set to null all MeanMagErr values > 0.5 (cut set by Gene, 2012-04-12)
-        # XXX EAM 20140724 : keep this cut?
-        cut = 0.5
-        self.logger.infoPair("Setting to NULL all MeanMagErr value >", "%f" % cut)
-        for filter in filters:
-
-            sql = "UPDATE MeanObject \
-                   SET " + filter[1] + "MeanPSFMagErr = null \
-                   WHERE " + filter[1] + "MeanPSFMagErr > " + str(cut)
-            self.scratchDb.execute(sql)
 
     '''
@@ -196,7 +169,7 @@
             # sqlLine = sqlUtility()
 
-            sql  = "UPDATE DiffObject JOIN "
+            sql  = "UPDATE DiffDetObject JOIN "
             sql += cpsTable + " AS cps "
-            sql += "ON (cps.row = (DiffObject.row * "
+            sql += "ON (cps.row = (DiffDetObject.row * "
             sql += str(filterCount) + ")-(" 
             sql += str(filterCount) + " - " 
@@ -204,6 +177,6 @@
             sql += ")) "
 
-            sql += "SET DiffObject.n" + filter[1] + " = NCODE, "
-            sql += "DiffObject.nDetections = DiffObject.nDetections + cps.NSTACK_DET"
+            sql += "SET DiffDetObject.n" + filter[1] + " = NCODE, "
+            sql += "DiffDetObject.nDetections = DiffDetObject.nDetections + cps.NSTACK_DET"
             self.logger.info(sql)
             self.scratchDb.execute(sql)
@@ -213,5 +186,5 @@
         for filter in filters:
             # now do a sum of n[filters], but do not include the ones with -999
-            sql  = "UPDATE DiffObject "
+            sql  = "UPDATE DiffDetObject "
             sql += "SET nDetections = nDetections + n" + filter[1]
             sql += " WHERE n" + filter[1] + " != -999"
@@ -227,13 +200,13 @@
         self.logger.infoPair("updating diffObjName", "using means")
     ## use mean ra and dec (dec >= 0)
-        sql = "update DiffObject set diffObjName =  concat('PS1.2 J', \
-        lpad(floor(raMean/15.),2,'0'), \
-        lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \
-        lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \
+        sql = "update DiffDetObject set diffObjName =  concat('PS1.2 J', \
+        lpad(floor(ra/15.),2,'0'), \
+        lpad((ra/15.-(floor(ra/15.)))*60. ,2,'0'), \
+        lpad(format(((ra/15.-(floor(ra/15.)))*60.-floor((ra/15.-(floor(ra/15.)))*60.))*60.,2),4,'0'), \
         '+', \
-        lpad(floor(decMean),2,'0'), \
-        lpad((decMean-(floor(decMean)))*60. ,2,'0'), \
-        lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \
-        ) where raMean > -999 and decMean > -999 and decMean >= 0"
+        lpad(floor(dec_),2,'0'), \
+        lpad((dec_-(floor(dec_)))*60. ,2,'0'), \
+        lpad(format(((dec_-(floor(dec_)))*60.-floor((dec_-(floor(dec_)))*60.))*60.,2),4,'0') \
+        ) where ra > -999 and dec_ > -999 and dec_ >= 0"
         try:
             self.scratchDb.execute(sql)
@@ -244,13 +217,13 @@
     ## use mean ra and dec (dec < 0)
 
-        sql = "update DiffObject set diffObjName =  concat('PS1.2 J', \
-        lpad(floor(raMean/15.),2,'0'), \
-        lpad((raMean/15.-(floor(raMean/15.)))*60. ,2,'0'), \
-        lpad(format(((raMean/15.-(floor(raMean/15.)))*60.-floor((raMean/15.-(floor(raMean/15.)))*60.))*60.,2),4,'0'), \
+        sql = "update DiffDetObject set diffObjName =  concat('PS1.2 J', \
+        lpad(floor(ra/15.),2,'0'), \
+        lpad((ra/15.-(floor(ra/15.)))*60. ,2,'0'), \
+        lpad(format(((ra/15.-(floor(ra/15.)))*60.-floor((ra/15.-(floor(ra/15.)))*60.))*60.,2),4,'0'), \
         '-', \
-        lpad(floor(decMean),2,'0'), \
-        lpad((decMean-(floor(decMean)))*60. ,2,'0'), \
-        lpad(format(((decMean-(floor(decMean)))*60.-floor((decMean-(floor(decMean)))*60.))*60.,2),4,'0') \
-        ) where raMean > -999 and decMean > -999 and decMean < 0"
+        lpad(floor(dec_),2,'0'), \
+        lpad((dec_-(floor(dec_)))*60. ,2,'0'), \
+        lpad(format(((dec_-(floor(dec_)))*60.-floor((dec_-(floor(dec_)))*60.))*60.,2),4,'0') \
+        ) where ra > -999 and dec_ > -999 and dec_ < 0"
 
         try:
@@ -290,5 +263,5 @@
 
         
-        self.logger.info("Populating DiffObject")
+        self.logger.info("Populating DiffDetObject")
         self.logger.info("Inserting objects from cpt file")
 
@@ -297,5 +270,5 @@
         # INSERT IGNORE INTO ObjectThin
 
-        sqlLine = sqlUtility("INSERT INTO DiffObject (")
+        sqlLine = sqlUtility("INSERT INTO DiffDetObject (")
 
         sqlLine.group("diffObjID",           "EXT_ID") 
@@ -311,5 +284,5 @@
         sqlLine.group("consistencyFlag", "'0'") 
         sqlLine.group("ra",          "RA_MEAN")
-        sqlLine.group("dec",         "DEC_MEAN")
+        sqlLine.group("dec_",         "DEC_MEAN")
         sqlLine.group("raErr",       "RA_ERR")
         sqlLine.group("decErr",      "DEC_ERR")
@@ -320,18 +293,18 @@
             self.scratchDb.execute(sql)
         except:
-            self.logger.errorPair("Couldn't populate DiffObject table", sql)
+            self.logger.errorPair("Couldn't populate DiffDetObject table", sql)
             return False
  
         # add row count columns so we can perform joins to get colors
-        self.logger.infoPair("Adding 'row' columns to", "DiffObject and cps tables")
-        self.scratchDb.addRowCountColumn("DiffObject", "row")
+        self.logger.infoPair("Adding 'row' columns to", "DiffDetObject and cps tables")
+        self.scratchDb.addRowCountColumn("DiffDetObject", "row")
         self.scratchDb.addRowCountColumn(cpsTableName, "row")
 
 ##        self.insertMeanMags(cpsTableName)
 ## this is the new version
-        self.logger.infoPair("update diffObjName for ","DiffObject")
+        self.logger.infoPair("update diffObjName for ","DiffDetObject")
         self.updateDiffObjName()
 
-        self.logger.infoPair("update DiffObject from ","cps table")
+        self.logger.infoPair("update DiffDetObject from ","cps table")
 
         self.updateDiffObjectFromCps(cpsTableName)
@@ -353,9 +326,9 @@
         #count out of range
 
-        sql = "SELECT count(*) FROM DiffObject where \
-              DiffObject.dec > (" + str(decMax) + " + .0033) \
-              or DiffObject.dec < (" + str(decMin) + " - .0033) \
-              or DiffObject.ra > (" + str(raMax) + " + .0033) \
-              or DiffObject.ra < (" + str(raMin) + " - .0033)"       
+        sql = "SELECT count(*) FROM DiffDetObject where \
+              DiffDetObject.dec_ > (" + str(decMax) + " + .0033) \
+              or DiffDetObject.dec_ < (" + str(decMin) + " - .0033) \
+              or DiffDetObject.ra > (" + str(raMax) + " + .0033) \
+              or DiffDetObject.ra < (" + str(raMin) + " - .0033)"       
     
         rs = self.scratchDb.executeQuery(sql)
@@ -366,9 +339,9 @@
         
  
-        sql = "DELETE FROM DiffObject where \
-              DiffObject.decMean > (" + str(decMax) + " + .0033) or \
-              DiffObject.decMean < (" + str(decMin) + " - .0033) or \
-              DiffObject.raMean > (" + str(raMax) + " + .0033) or \
-              DiffObject.raMean < (" + str(raMin) + " - .0033)" 
+        sql = "DELETE FROM DiffDetObject where \
+              DiffDetObject.dec_ > (" + str(decMax) + " + .0033) or \
+              DiffDetObject.dec_ < (" + str(decMin) + " - .0033) or \
+              DiffDetObject.ra > (" + str(raMax) + " + .0033) or \
+              DiffDetObject.ra < (" + str(raMin) + " - .0033)" 
         self.logger.infoPair("Deleting", str(nToDelete) + " objects outside of ra/dec range")
 
@@ -376,9 +349,9 @@
             self.scratchDb.execute(sql)
         except:
-            self.logger.errorPair("Couldn't cull outsiders from DiffObject table", sql)
+            self.logger.errorPair("Couldn't cull outsiders from DiffDetObject table", sql)
             return False
 
-        self.logger.infoPair("Dropping row column from", "DiffObject table")
-        self.scratchDb.dropColumn("DiffObject", "row")
+        self.logger.infoPair("Dropping row column from", "DiffDetObject table")
+        self.scratchDb.dropColumn("DiffDetObject", "row")
         ##self.logger.infoPair("Purging from scratch Db", self.region + " region")
 
@@ -386,7 +359,22 @@
         ##self.dvoObjects.purgeRegion(self.region)
 
-        self.setMinMaxDiffObjID(["DiffObject"])
+        self.setMinMaxDiffObjID(["DiffDetObject"])
 
         return True
+
+    '''
+    Updates table and generates pspsuniqueids
+    '''
+
+    def updatePspsUniqueIDs(self,table):
+        sql = "UPDATE "+table+" join (select @r:=@r+1 rownum, diffobjID from \
+        (select @r:=0) r, "+table+" t) as foo using (diffobjID) set \
+        uniquePspsDOid = ((" +str(self.batchID)+ "*1000000000 ) + rownum)"
+        try: self.scratchDb.execute(sql)
+        except:
+            self.logger.errorPair('failed sql',sql)
+            return
+
+
 
     '''
@@ -399,5 +387,5 @@
         # now remove the objID duplicates. We could not do this before as cpt/cps tables relate by row number
         self.logger.infoPair("Forcing uniqueness on", "objID in DIffObject table")
-        rowCountBefore = self.scratchDb.getRowCount("DiffObject")
+        rowCountBefore = self.scratchDb.getRowCount("DiffDetObject")
 
         # XXX EAM : note that in mysql versions later than 5.1, this fails
@@ -410,16 +398,21 @@
             self.scratchDb.execute("set session old_alter_table=1")
             
-        self.scratchDb.execute("ALTER IGNORE TABLE DiffObject ADD UNIQUE INDEX(diffObjID)")
+        self.scratchDb.execute("ALTER IGNORE TABLE DiffDetObject ADD UNIQUE INDEX(diffObjID)")
         if self.scratchDb.version > 5.1:
             self.scratchDb.execute("set session old_alter_table=0")
 
-        rowCountAfter = self.scratchDb.getRowCount("DiffObject")
+        rowCountAfter = self.scratchDb.getRowCount("DiffDetObject")
         self.logger.infoPair("Number of duplicated diffobjIDs removed", "%d out of %d" % ((rowCountBefore - rowCountAfter), rowCountBefore))
 
+        self.scratchDb.execute("ALTER TABLE DiffDetObject CHANGE dec_ `dec` double")
+
+        self.updatePspsUniqueIDs("DiffDetObject")
+
         self.dvoObjects.purgeRegion(self.region)
 
         #this is abuse of something but this is how I get the object batches to crash to further investigate them
         
-        rowCountAfter = self.scratchDb.getRowCount("Object")
+ 
+#        rowCountAfter = self.scratchDb.getRowCount("Object")
         return True
 #        return False
Index: /trunk/ippToPsps/jython/loader.py
===================================================================
--- /trunk/ippToPsps/jython/loader.py	(revision 37762)
+++ /trunk/ippToPsps/jython/loader.py	(revision 37763)
@@ -25,6 +25,8 @@
 
 from diffbatch import DiffBatch 
-#from diffobjectbatch import DiffObjectBatch
-
+from diffobjectbatch import DiffObjectBatch
+
+#from forcedwarpbatch import ForcedWarpBatch 
+#from forcedobjectbatch import ForcedObjectBatch
 #
 #
Index: /trunk/ippToPsps/jython/objectbatch.py
===================================================================
--- /trunk/ippToPsps/jython/objectbatch.py	(revision 37762)
+++ /trunk/ippToPsps/jython/objectbatch.py	(revision 37763)
@@ -98,5 +98,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
         
 
@@ -456,7 +456,7 @@
         cptTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cpt")
         cpsTableName = self.scratchDb.getDbFriendlyTableName(self.region + ".cps")
-        self.logger.infoPair("Populating MeanObject.objid and pspsUniqueOBid from ", "ObjectThin")
-
-        sql = "INSERT INTO MeanObject ( objID, pspsUniqueOBid ) SELECT objID, pspsUniqueOBid FROM ObjectThin"
+        self.logger.infoPair("Populating MeanObject.objid and uniquePspsOBid from ", "ObjectThin")
+
+        sql = "INSERT INTO MeanObject ( objID, uniquePspsOBid ) SELECT objID, uniquePspsOBid FROM ObjectThin"
         try:
             self.scratchDb.execute(sql)
Index: /trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- /trunk/ippToPsps/jython/stackbatch.py	(revision 37762)
+++ /trunk/ippToPsps/jython/stackbatch.py	(revision 37763)
@@ -336,5 +336,5 @@
             sqlLine.group("a."+filter+"ApMag",         "b.Map")
             sqlLine.group("a."+filter+"ApMagErr",      "b.dMap")
-            sqlLine.group("a."+filter+"telluricExt",   "b.telluricExt")
+          #  sqlLine.group("a."+filter+"telluricExt",   "b.telluricExt")
 
             sqlLine.group("a."+filter+"infoFlag2",     "(b.flags << 13)")
@@ -431,5 +431,5 @@
             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+"ApRadius",      "b.AP_MAG_RADIUS")
             sqlLine.group("a."+filter+"KronRad",       "b.MOMENTS_R1 * 2.5")
             sqlLine.group("a."+filter+"PlateScale",    "b.PLTSCALE")
@@ -441,5 +441,5 @@
             except:
                 self.logger.errorPair('failed sql',sql)
-                return
+                raise
 
             # insert detection information for each filter based on the DVO contents
@@ -457,5 +457,5 @@
             except:
                 self.logger.errorPair('failed sql',sql)
-                return
+                raise
 
 
@@ -563,12 +563,10 @@
         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")
-
+        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)
         except:
             self.logger.errorPair('failed sql',sql)
-            return
-
+            raise
         # we have (modulo signs):
         # gRaExp  = gra  + (X_EXT - gxPos)*gPlateScale / cos(gdec)
@@ -607,5 +605,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
     '''
@@ -666,5 +664,5 @@
         sqlLine.group("a." + filter + "petCf",        "b.PETRO_FILL")
 
-        sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET")
+        sql = sqlLine.makeEquals("WHERE a." + filter + "ippDetectID = b.IPP_IDET ")
 
         try: self.scratchDb.execute(sql)
@@ -681,5 +679,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
     '''
@@ -780,5 +778,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
         # set the flux values from the cmf file
@@ -844,5 +842,5 @@
             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")
+        sql = sqlLine.makeEquals("WHERE a.objID = b.objID AND a." + filter + "ippDetectID = b.ippDetectID AND b.imageID = " + str(self.imageIDs[filter]) )
         self.scratchDb.execute(sql)
 
@@ -948,5 +946,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
 
@@ -959,5 +957,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
         
 
@@ -1001,5 +999,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
     '''
@@ -1018,10 +1016,10 @@
             fields += filter + "ippDetectID, "
             fields += filter + "stackDetectID, "
-            fields += filter + "stackMetaID" # careful here: do not add comma to last entry
+            fields += filter + "stackMetaID " # careful here: do not add comma to last entry
             if (i < len(self.filters) - 1):
                 fields += ", "
 
         if (table == "StackObjectAttributes"):
-            fields += "stackDetectRowID, "
+            fields += ", stackDetectRowID "
         sql  = "INSERT INTO " + table + " (" + fields + ") "
         sql += "SELECT " + fields + " FROM " + mainTable
@@ -1030,5 +1028,5 @@
         except:
             self.logger.errorPair('failed sql',sql)
-            return
+            raise
 
 
@@ -1164,4 +1162,4 @@
         self.logger.infoPair("Done. Imported", "%d tables" % count)
         self.indexIppTables()
-                      
+#        return False
         return True
Index: /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject
===================================================================
--- /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject	(revision 37762)
+++ /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject	(revision 37763)
@@ -25,5 +25,9 @@
 l 		degrees 	FLOAT 	8 	-999 	galactic longitude
 b 		degrees 	FLOAT 	8 	-999 	galactic latitude
-qfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect
+gQfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect for g filter
+rQfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect for r filter
+iQfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect for i filter
+zQfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect for z filter
+yQfPerfect 	dimensionless 	REAL 	4 	-999 	qfPerfect for y filter
 dataRelease 	dimensionless 	TINYINT 1 	NA 	Data release Version of this table
 nDetections 	dimensionless 	SMALLINT2 	-999 	total number of detection measurements in all filters
Index: /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject.txt
===================================================================
--- /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject.txt	(revision 37762)
+++ /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetObject.txt	(revision 37763)
@@ -25,5 +25,9 @@
 l 		 = PSPS
 b 		 = PSPS
-qfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
+gQfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
+rQfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
+iQfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
+zQfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
+yQfPerfect 	 = dvo / relphot / secfilt. [XXX Not calculated]
 dataRelease 	 = ipptopsps
 nDetections 	 = dvo / relphot
Index: /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection
===================================================================
--- /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection	(revision 37762)
+++ /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection	(revision 37763)
@@ -53,5 +53,4 @@
 kronFluxErr 	adu/seconds 	REAL 	4 	-999 	Kron flux error
 kronRad 	raw pixels 	REAL 	4 	-999 	Kron radius
-kronRadErr 	raw pixels 	REAL 	4 	-999 	Kron radius error
 ------------------------------------------------------- from diff image cmf/smf files 
 diffNPos        dimensionless   REAL    4       -999    npix > 3sigma
Index: /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection.txt
===================================================================
--- /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection.txt	(revision 37762)
+++ /trunk/ippToPsps/pspsschema/SchemaNew19.0/PSPS_TABLES/Fundamental_IPP_Data_Product_Tables/DiffDetection.txt	(revision 37763)
@@ -53,5 +53,4 @@
 kronFluxErr 	 = smf
 kronRad 	 = (2.5*R1)
-kronRadErr 	 = [drop this? ]
 ---------------- = 
 diffNPos         = smf
