Index: trunk/ippToPsps/jython/stackbatch.py
===================================================================
--- trunk/ippToPsps/jython/stackbatch.py	(revision 36736)
+++ trunk/ippToPsps/jython/stackbatch.py	(revision 36744)
@@ -187,5 +187,5 @@
 
        # TODO this is the wrong way, but is consistent with SkyCell table in IN data
-       self.skycell = self.skycell[8:12]
+       self.skycell = self.skycell[8:]
        self.projectioncell = self.skycell
 
@@ -407,4 +407,11 @@
  # idk what to do about PET
 
+        sql = "DESCRIBE "+f+"SkyChip_xfit 'EXT_COVAR_%'"
+        rs = self.scratchDb.executeQuery(sql)
+        rs.first()
+        hasResult = rs.next()
+
+
+
         sql = "UPDATE StackModelFit AS a, " + f + "SkyChip_xfit AS b SET \
         "+f+model+"Radius=b.EXT_WIDTH_MAJ,  \
@@ -419,8 +426,14 @@
         self.scratchDb.execute(sql)
 
+
+
         # sersic fit has an extra parameter
         if (ippModelType == "PS_MODEL_SERSIC"):
+            extra_sql = ""
+            if hasResult:
+                extra_sql = ","+f+"serNuErr=SQRT(EXT_COVAR_07_07)"
             sql = "UPDATE StackModelFit AS a, "+ f+ "SkyChip_xfit AS b SET \
             "+f+"serNu=b.EXT_PAR_07   \
+            "+extra_sql+" \
             WHERE a."+f+"ippDetectID=b.IPP_IDET AND b.MODEL_TYPE = '"+ippModelType+"'"
 #           "+f+"serNuErr=SQRT(EXT_COVAR_07_07)  \
@@ -438,20 +451,25 @@
         # this should work : set header into (grizy)header and run from there
         if filterName == 'g.00000':
+            f = "g"
             self.header = self.gheader
             tablename = 'gStackMeta'
             stackmetaid = self.gstackID
         if filterName == 'r.00000':
+            f = "r"
             tablename = 'rStackMeta'
             self.header = self.rheader
             stackmetaid = self.rstackID
         if filterName == 'i.00000':
+            f = "i"
             tablename = 'iStackMeta'
             self.header = self.iheader
             stackmetaid = self.istackID
         if filterName == 'z.00000':
+            f = "z"
             tablename = 'zStackMeta'
             self.header = self.zheader
             stackmetaid = self.zstackID
         if filterName == 'y.00000':
+            f = "y"
             tablename = 'yStackMeta'
             self.header = self.yheader
@@ -470,4 +488,7 @@
         #make a table
 
+        filterid = self.scratchDb.getFilterID(f)
+        self.logger.infoPair("filterid is ",str(filterid))
+
         sql = "CREATE TABLE " + tablename + " LIKE StackMeta"
         try: self.scratchDb.execute(sql)
@@ -476,4 +497,5 @@
         sql = "INSERT INTO " + tablename + " (\
         stackMetaID \
+        ,filterID \
         ,skyCellID \
         ,photoCalID \
@@ -497,4 +519,5 @@
          ) VALUES ( \
         " + str(stackmetaid) + " \
+        , " + str(filterid) + "  \
         ," + self.skycell + " \
         ," + str(self.scratchDb.getPhotoCalID(self.header['IMAGEID'])) + " \
@@ -518,7 +541,9 @@
         )"
         self.scratchDb.execute(sql)
+
+
         self.scratchDb.updateAllRows(tablename, "batchID", str(self.batchID))
         self.scratchDb.updateAllRows(tablename, "surveyID", str(self.surveyID))
-        self.scratchDb.updateFilterID(tablename, filterName)
+    #    self.scratchDb.updateFilterID(tablename, self.scratchDb.getFilterID(filterName))
         self.scratchDb.updateAllRows(tablename, "dataRelease", str(self.skychunk.dataRelease))
         self.updateStackTypeID(tablename)
@@ -954,4 +979,35 @@
                     self.scratchDb.execute(sql)
 
+    ''' 
+    Generates the randomStackIds
+    '''
+    def populateRandomsAndSkyCellID(self):
+
+        self.logger.infoPair("Generating Randoms","for StackObject")
+        sql = "update StackObject set randomStackObjID = FLOOR(RAND()*9223372036854775807) \
+              ,skyCellID = " + str(self.skycell)+ " \
+              ,surveyID = " + str(self.surveyID) 
+        try:
+            self.scratchDb.execute(sql)
+        except:
+            self.logger.infoPair("failed sql", sql)
+
+    ''' 
+    copies randomStackIds from StackObject to tableName
+    '''
+    def copyRandomsAndSkyCellIDFromStackObject(self, tableName):
+
+        self.logger.infoPair("copying Randoms from StackObject to ", tableName)
+        sql = "update " + tableName + " join StackObject using (objID) \
+        set " + tableName + ".randomStackObjID = StackObject.randomStackObjID \
+        , " + tableName + ".skyCellID = StackObject.skyCellID \
+        , " + tableName + ".surveyID = StackObject.surveyID"
+        self.logger.infoPair("sql", sql)
+        try:
+            self.scratchDb.execute(sql)
+        except:
+            self.logger.infoPair("failed sql", sql)
+
+
         
     def populateStackIPPDetectIDFromDvo(self, tableName, all):
@@ -1012,4 +1068,5 @@
                       " + addsql + " \
                       a." + f + "stackDetectID = b.detectID,   \
+                      a." + f + "ippObjID = b.ippObjID, \
                       a." + f + "stackMetaID = " + str(stackmetaid) +  " \
                       WHERE a.objID = b.objID  AND b.imageID = " + str(imageID)
@@ -1188,4 +1245,5 @@
         self.scratchDb.createIndex("StackObject", "yippDetectID")
         self.populateStackObject()
+        self.populateRandomsAndSkyCellID()
         # stackObject should be done, pending a few NULL columns (need help)
 
@@ -1206,10 +1264,21 @@
             self.deleteNULLippDetectIDs("StackModelFit") 
         #populate stackModelFit
-            self.populateStackModelFit("g")
-            self.populateStackModelFit("r")
-            self.populateStackModelFit("i")
-            self.populateStackModelFit("z")
-            self.populateStackModelFit("y")
-
+            if self.gstackID > 0:
+                self.logger.infoPair("populating g filter for stackModelFit, stackmetaid =", self.gstackID)
+                self.populateStackModelFit("g")
+            if self.rstackID > 0: 
+                self.logger.infoPair("populating r filter for stackModelFit, stackmetaid =", self.rstackID)
+                self.populateStackModelFit("r")
+            if self.istackID > 0: 
+                self.logger.infoPair("populating i filter for stackModelFit, stackmetaid =", self.istackID)
+                self.populateStackModelFit("i")
+            if self.zstackID > 0: 
+                self.logger.infoPair("populating z filter for stackModelFit, stackmetaid =", self.zstackID)
+                self.populateStackModelFit("z")
+            if self.ystackID > 0: 
+                self.logger.infoPair("populating y filter for stackModelFit, stackmetaid =", self.ystackID)
+                self.populateStackModelFit("y")
+           
+            self.copyRandomsAndSkyCellIDFromStackObject("StackModelFit")
  
             self.logger.infoPair("populating ","StackApFlx")
@@ -1227,4 +1296,5 @@
             self.deleteNULLippDetectIDs("StackApFlx") 
             self.populateStackApFlx()
+            self.copyRandomsAndSkyCellIDFromStackObject("StackApFlx")
         #cull the entries that should not be (how?) 
         
