You are already using an RDataFrame, which can work in parallel, see the manual here and the tutorials. I don’t have experience with RDataFrame, so I cannot suggest a clear answer but it might be all you need, probably it could be as simple as adding ROOT::EnableImplicitMT() and something like
df.Define("newVar","equation for new variable").Snapshot("newTree","rootfile")
instead of the for loops. If you define several new variables, probably the Snapshots could be done at another point to run faster, but that’s the general idea (check out the links above).