This thread might cover most of the things: Iteration over a tree in pyroot - performance issue
Easiest improvement is to activate only the required branches. Other than that, the liked thread contains a lot of benchmarks.
I would also modernize your C++ code to (make a performance test with this):
void loopOver() {
TString path = "path/to/rootfile.root";
TFile *root_file = TFile::Open(path, "read");
TTreeReader reader("Track", root_file);
TTreeReaderValue<Double_t> rvTrackPt(reader, "track_Pt");
while (reader.Next()) {
Double_t pt = *rvTrackPt;
// do something with pt
}
}