TTree::GetEntries with a selection string has an implicit cut of at 1e9 events, due to the default value of TTree::Process.
Since the data type of the parameter is a Long64_t one could easily adjust this default value to a reasonable high value, so that we won't hit this limit again in the next 50 years, until we're all retired.
Here's some code which shows the problem using a root file containing a single tree with a single branch containing 5e9 events:
ekplx34(0):/local/ssd-scratch/tkeck/$ ls -ltrh
rw-r r- 1 tkeck belle 98M Sep 9 00:34 test.root
ekplx34(0):/local/ssd-scratch/tkeck/$ root -l test.root
Attaching file test.root as _file0...
(class TFile *) 0x31b3b70
root  .ls
KEY: TTree mytree;6 mytree
KEY: TTree mytree;5 mytree
root  mytree->GetEntries()
root  mytree->GetListOfBranches()
(const char *) "branch"
root  mytree->GetEntries("branch == 0")
root  mytree->GetEntries("branch != 0")