recently I profiled my code to optimize it and found the by far biggest consumer of computation time to be TVector3::PseudoRapidity(), which is called from TLorentzVector::Eta(), see attached screenshot.
(read: 55 % of the whole computation time is spent inside TVector3::PseudoRapidity, 9% of the whole computation time directly in the method, everything else in methods called from there)
This is because the pseudorapidity is recomputed every time from some properties of the vector with an expensive logarithm function.
I propose to calculate eta (as well as the other coordinates) only when coordinates are changed, e.g. via TLorentzVector::SetPtEtaPhi() and to save them as member variables, which are then directly returned by the getter methods.
This would increase the performance of the TVector3::PseudoRapidity() method by several orders of magnitude.
Since eta is one of the coordinates used in particle physics, all analyses will have a significant performance gain by this change.