Why is my integral zero?

I don’t think your calls to “Integral” are wrong.

I guess it’s a deficiency in ROOT.

It’s the “efficiency” / “efficiencyF” function which fools ROOT. It’s value “jumps” between 0 and 1 and the current “integrator” is known to misbehave in such cases.
See also, for example: Simple Integral

Sometimes you can try to “hide” this problem if you increase the number of points … for each of your functions try to add:
SomeTF2->SetNpx(1000); SomeTF2->SetNpy(1000);
But I wouldn’t really trust the result.