956500207b58c263485009212f223836152176d3
hiram
  Thu Mar 26 14:58:55 2026 -0700
simplify the gcOnFly track - it does not need to by completely synthetic - it only comes in from trackDb stanzas refs #35958

diff --git src/hg/hgTrackUi/hgTrackUi.c src/hg/hgTrackUi/hgTrackUi.c
index 3e8c9bfb7af..c915da8738e 100644
--- src/hg/hgTrackUi/hgTrackUi.c
+++ src/hg/hgTrackUi/hgTrackUi.c
@@ -4052,53 +4052,30 @@
 /* Create a trackDb entry for the wikiTrack.
    It is not a real track, so doesn't appear in trackDb */
 {
 return trackDbForPseudoTrack(WIKI_TRACK_TABLE,
 	WIKI_TRACK_LABEL, WIKI_TRACK_LONGLABEL, tvFull, FALSE);
 }
 
 struct trackDb *trackDbForRuler()
 /* Create a trackDb entry for the base position ruler.
    It is not (yet?) a real track, so doesn't appear in trackDb */
 {
 return trackDbForPseudoTrack(RULER_TRACK_NAME,
 	RULER_TRACK_LABEL, RULER_TRACK_LONGLABEL, tvFull, FALSE);
 }
 
-static struct trackDb *trackDbForGcOnFly(struct cart *cart)
-/* Create a trackDb entry for the GC on the fly pseudo-track. */
-{
-char longLabel[1024];
-safef(longLabel, sizeof(longLabel), "GC FLY Percent in %s-Base Windows", gcOnFlyWinSize(cart));
-struct trackDb *tdb = trackDbForPseudoTrack(GC_ON_FLY_TRACK_NAME,
-        GC_ON_FLY_TRACK_LABEL, longLabel, tvFull, TRUE);
-tdb->canPack = 0;
-tdb->type = cloneString("bigWig 0 100");
-trackDbAddSetting(tdb, "autoScale",         "Off");
-trackDbAddSetting(tdb, "viewLimits",        "30:70");
-trackDbAddSetting(tdb, "maxHeightPixels",   "128:36:16");
-trackDbAddSetting(tdb, "graphTypeDefault",  "Bar");
-trackDbAddSetting(tdb, "gridDefault",       "OFF");
-trackDbAddSetting(tdb, "windowingFunction", "Mean");
-trackDbAddSetting(tdb, "color",             "0,0,0");
-trackDbAddSetting(tdb, "altColor",          "128,128,128");
-trackDbAddSetting(tdb, "calcWinSize",       gcOnFlyWinSize(cart));
-trackDbAddSetting(tdb, "syntheticTrack",    "on");
-trackDbPolish(tdb);
-return tdb;
-}
-
 struct trackDb *trackDbForOligoMatch()
 /* Create a trackDb entry for the oligo matcher pseudo-track. */
 {
 return trackDbForPseudoTrack(OLIGO_MATCH_TRACK_NAME,
 	OLIGO_MATCH_TRACK_LABEL, OLIGO_MATCH_TRACK_LONGLABEL, tvHide, TRUE);
 }
 
 static char *handleDupOp(char *track, struct hash *trackHash)
 /* Handle the duplication operation in the URL if any.  Return dupe name if
  * a dupe has happened. The trackHash is keyed by track name and has 
  * struct trackDb values. */
 {
 char *newTrack = NULL;
 
 /* Handle duplicate, and possible in the future other operations on tracks. */
@@ -4327,32 +4304,30 @@
 		dupTdb = NULL;  /* We use it! */
 		}
 	    }
 	if (dupTdb != NULL)
 	    slAddHead(&tdbList, dupTdb);
 	}
     }
 
 if (sameWord(track, WIKI_TRACK_TABLE))
     tdb = trackDbForWikiTrack();
 else if (sameWord(track, RULER_TRACK_NAME))
     /* special handling -- it's not a full-fledged track */
     tdb = trackDbForRuler();
 else if (sameWord(track, OLIGO_MATCH_TRACK_NAME))
     tdb = trackDbForOligoMatch();
-else if (sameWord(track, GC_ON_FLY_TRACK_NAME))
-    tdb = trackDbForGcOnFly(cart);
 else if (sameWord(track, CUTTERS_TRACK_NAME))
     tdb = trackDbForPseudoTrack(CUTTERS_TRACK_NAME, CUTTERS_TRACK_LABEL, CUTTERS_TRACK_LONGLABEL, tvHide, TRUE);
 else if (isCustomTrack(track))
     {
     ctList = customTracksParseCart(database, cart, NULL, NULL);
     for (ct = ctList; ct != NULL; ct = ct->next)
         {
         if (sameString(track, ct->tdb->track))
             {
             tdb = ct->tdb;
             break;
             }
         }
     }
 else if (isHubTrack(track))