Hi, I was not sure where to post but actually I would like to state that I find the Root documentation in general very poor. In my specific case, I am not getting any conclusion out of the documentation regarding how to use the TMath::Mean function. So even if not the correct chat (since I can not post in the Math tools thread), would it be possible to have a minimum example how to use this function please? Many thanks
Hi! To me it is not clear how to define the iterator. Plus, I realized in the meantime that you can also use an “old-style” version where you can add the number of values to be considered and then you enter the array variable, e.g.
Int_t x[5]={1,2,3,4,5};
TMath::Mean(5,x);
the output is 3 (and hence correct). But when defining a second array w of the same size as x with weights in order to calculate the weighted mean, I am getting an error doing this
TMath::Mean(5,x,w);
In theory according to a root documentation (not provided on your side but somewhere else) this “old-style” syntax should work but it does not.
In any case I would like to get familiar with the syntax using iterators. What exactly are the steps to define these iterators? I am repeating myself that just writing the blank syntax with indicating what kind of variables to use instead of showing a concrete example is sometimes unclear, at least to me.
Thanks
So, concerning the “old-style”, it works here if I do
double x[5]={1,2,3,4,5}
root [1] TMath::Mean(5,x)
(Double_t) 3.000000e+00
root [2] double w[5]={1,2,3,4,5}
root [3] TMath::Mean(5,x,w)
(Double_t) 3.666667e+00
What do you get?
Concerning the iterator, they are useful if you use for example vector
root [0] vector < double > x
(vector<double> &) @0x7f3bfc071018
root [1] for(double i=1 ; i<=5 ; i++) x.push_back(i)
root [2] TMath::Mean(x.begin(),x.end())
(Double_t) 3.000000e+00