Index: /trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- /trunk/ippToPsps/jython/stackbatch.py	(revision 38987)
+++ /trunk/ippToPsps/jython/stackbatch.py	(revision 38988)
@@ -164,4 +164,6 @@
            tableName = filter + "StackMeta"
            self.dropTableVerbose(tableName)
+           tableName = filter + "StackDetEffMeta"
+           self.dropTableVerbose(tableName)
 
        self.dropTableVerbose("StackMeta")
@@ -182,5 +184,5 @@
 
        self.dropTableVerbose("StackToImage")
-       self.dropTableVerbose("StackDetEffMeta")
+
 
        # delete IPP tables
@@ -195,4 +197,6 @@
                self.scratchDb.dropTable(tableName)
                tableName = filter + "SkyChip_xfit"
+               self.scratchDb.dropTable(tableName)
+               tableName = filter + "SkyChip_deteff"
                self.scratchDb.dropTable(tableName)
 
@@ -1072,4 +1076,77 @@
         self.tablesToExport.append("StackToImage")
 
+    ''' 
+    Populate StackDetEffMeta
+    '''
+    def populateStackDetEffMeta(self):
+        self.logger.infoPair("Processing table", "StackDetEffMeta")
+
+        for filter in self.filters:
+            self.logger.infoPair("filter", filter)
+
+            stackImageID = self.stackIDs[filter]
+            if stackImageID <= 0:
+                self.logger.infoPair("no stack data for filter", filter)
+                continue
+
+            cmfTable = filter + "SkyChip_deteff"
+            if not cmfTable in self.tablesLoaded:
+                self.logger.infoPair("no deteff data for filter", filter)
+                self.logger.infoPair("(did not find table in tablesLoaded)", cmfTable)
+                for name in self.tablesLoaded:
+                    print "-- table: " + name
+                os._exit(3)
+                continue
+
+
+            ippTableName = filter + "StackDetEffMeta"
+            sql = "CREATE TABLE " + ippTableName + " LIKE StackDetEffMeta"
+            try: self.scratchDb.execute(sql)
+            except: pass
+
+
+            header = self.headerSet[filter]
+            zpImage = self.scratchDb.getImageZeroPoint(stackImageID)
+            if zpImage < 0.0:
+                zpImage = 0.0
+            magref = self.getKeyFloat(header,"%.8f","DETEFF.MAGREF") + zpImage
+
+            sqlLine = sqlUtility("INSERT INTO " + ippTableName + "(")
+            sqlLine.group("stackImageID", str(stackImageID))
+            sqlLine.group("magref",       magref)
+            sql = sqlLine.make(") VALUES ( ", ")")
+            
+
+            try: self.scratchDb.execute(sql)
+            except: 
+                self.logger.errorPair('failed sql: ', sql)
+                raise
+
+            for i in xrange(1, 14):
+                stringint = str(i)
+                if i < 10:
+                    stringint = '0' + str(i)
+
+                sql = "UPDATE " + ippTableName + " , " + cmfTable + \
+                    " SET offset"+stringint + " = OFFSET, counts" \
+                    +stringint + " = COUNTS, diffMean" \
+                    +stringint + " = DIFF_MEAN, diffStdev" \
+                    +stringint + " = DIFF_STDEV, errMean" \
+                    +stringint + " = ERR_MEAN WHERE table_index = " + str(i)
+                
+                try: self.scratchDb.execute(sql)
+                except:
+                    self.logger.errorPair('filed sql: ', sql)
+                    raise
+            # end for
+                # Append this like this?
+            self.tablesToExport.append(ippTableName)
+        # end filters
+
+
+        return True
+                
+
+
     ### *********************** Utility Functions ************************************
 
@@ -1267,4 +1344,6 @@
 
         self.populateStackObjectAttributes()
+
+        self.populateStackDetEffMeta()
 
         if self.stackType != "NIGHTLY_STACK":
