I think the problem is that you are not listing columns to fill your histo2d with, but rather expressions, e.g. fabs(lep_eta[0]).
I think you should go through a Define first, e.g. Define("abs_lep_eta_0","fabs(lep_eta[0])") and then fill the Histo2D accordingly.
I just stumbled upon the same problem, apparently this is not possible yet to access elements of a vector in the Histogram creation, but in filters you can access elements of a vector branch.
I’ve opened up a feature request on JIRA for this: ROOT-10212
With current RDF, df.Histo1D("vec[0]") is written df.Define("vec0", "vec[0]").Histo1D("vec0").
The reason you can write "vec[0]" in Filter and Define is that they take an expression as argument (either as a string or as a C++ callable), while Histo1D just takes column names. It is in principle possible to add a df.Histo1D("vec[0]") shortcut (PRs are welcome ) but as I discuss in the discussion linked above it’s not completely trivial.