PhysicsList SetCuts() fills Memory Pools

Hi,

I have a G4 simulation of muon tomography in which I have a detector that faces towards the peak of a to-scale cone model of a large mountain (1200 m height). I fire muons from a plane towards the detector. For some lower energy muons which hit the mountain (made of silica) they scatter and create large amounts of secondaries.

These secondaries (usually photons) are not particles I care about, so I have attempted to do a production cut on any photons created during the scattering interaction. Here is my SetCuts() method in my PhysicsList.cc file:

void PhysicsList::SetCuts()
{
    SetCutsWithDefault();
    
    G4Region* region;
    G4String regName;
    G4ProductionCuts* cuts;
    
    // region cut, slows simulation down a ton for some reason - this is supposed to prevent
    // too many photons from being simulated when a muon scatters in the mountain
    regName = "Cone-Mountain";
    region = G4RegionStore::GetInstance()->GetRegion(regName);
    cuts = new G4ProductionCuts;
    cuts->SetProductionCut(1.0*mm,G4ProductionCuts::GetIndex("gamma"));
    region->SetProductionCuts(cuts);
 }

When I run with visualisation (for debugging purposes), I can send one muon through and the simulation is fast, but when I send another muon through, the simulation greatly slows down (and the GUI becomes very laggy as well). For example, the first event takes under a second to complete, while the second event that I create takes around 45 seconds to finish. When I close the simulation, G4 clears the memory pools and they can be in upwards of several gigabytes. The two biggest pools are 7G4Track and 18G4SmoothTrajectory. If I get rid of my production cut in photons, the simulation will return to normal speed, no matter how many times I send muons through interactively without restarting the simulation.

What could be the issue causing this when I apply the production cut?