da33d70c10ddaae6c3290cb900d7d0cc2b6ee01b
hiram
  Tue Mar 17 13:57:24 2026 -0700
allow calculation of GC percent on the fly with code help from claude refs #35958

diff --git src/hg/hgTracks/hgTracks.c src/hg/hgTracks/hgTracks.c
index 40aea9dece7..306cb390c49 100644
--- src/hg/hgTracks/hgTracks.c
+++ src/hg/hgTracks/hgTracks.c
@@ -7433,30 +7433,44 @@
  * Best to load custom last. */
 
 // load the track list and check to see if we need to rewrite the cart
 int cartVersionFromTrackDb = loadFromTrackDb(&trackList);
 int cartVersionFromCart = cartGetVersion(cart);
 if (cartVersionFromTrackDb > cartVersionFromCart)
     cartRewrite(cart, cartVersionFromTrackDb, cartVersionFromCart);
 
 if (measureTiming)
     measureTime("Time after trackDbLoad ");
 if (pcrResultParseCart(database, cart, NULL, NULL, NULL))
     slSafeAddHead(&trackList, pcrResultTg());
 if (userSeqString != NULL)
     slSafeAddHead(&trackList, userPslTg());
 slSafeAddHead(&trackList, oligoMatchTg());
+if (cfgOptionBooleanDefault("gcOnTheFly", FALSE))
+    {
+    if (cfgOptionBooleanDefault("gcOnTheFlyCoExist", FALSE))
+	{
+	slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart));
+	}
+    else
+	{
+	if (rFindTrackWithTable("gc5Base", trackList) == NULL &&
+	    rFindTrackWithTable("gc5BaseBw", trackList) == NULL)
+	    slSafeAddHead(&trackList, gc5BaseOnTheFlyTg(cart));
+	}
+    }
+
 if (restrictionEnzymesOk())
     {
     slSafeAddHead(&trackList, cuttersTg());
     }
 if (wikiTrackEnabled(database, NULL))
     {
     addWikiTrack(&trackList);
     struct sqlConnection *conn = wikiConnect();
     if (sqlTableExists(conn, "variome"))
         addVariomeWikiTrack(&trackList);
     wikiDisconnect(&conn);
     }
 
 struct grp *grpList = NULL;
 if (cartOptionalString(cart, "hgt.trackNameFilter") == NULL)