36 : fName(
name), fN(0), fW(0.), fW2(0.), fM(0.), fM2(0.),
40 for (
Int_t i = 0; i <
n; i++) {
97 Warning(
"Fill",
"Sum of weights is zero - ignore current data point");
104 fM2 +=
w * rr * rr / (tW *
fW);
117 Printf(
" OBJ: TStatistic\t %s \t Mean = %.5g +- %.4g \t RMS = %.5g \t Count = %lld \t Min = %.5g \t Max = %.5g",
140 std::vector<TStatistic*> statPtrs;
141 if (this->
fN != 0LL) statPtrs.push_back(
this);
144 if ((statPtr =
dynamic_cast<TStatistic *
>(o)) && statPtr->
fN != 0LL) {
145 statPtrs.push_back(statPtr);
150 const auto nStatsPtrs = statPtrs.size();
153 if (nStatsPtrs == 0)
return 0;
157 auto firstStatPtr = statPtrs[0];
158 auto N = firstStatPtr->
fN;
159 auto M = firstStatPtr->fM;
160 auto M2 = firstStatPtr->fM2;
161 auto W = firstStatPtr->fW;
162 auto W2 = firstStatPtr->fW2;
163 auto Min = firstStatPtr->fMin;
164 auto Max = firstStatPtr->fMax;
165 for (
auto i = 1U; i < nStatsPtrs; ++i) {
166 auto c = statPtrs[i];
167 double temp = (
c->fW) / (W)*M -
c->fM;
168 M2 +=
c->fM2 + W / (
c->fW * (
c->fW + W)) * temp * temp;
173 Min = (
c->fMin < Min) ?
c->fMin : Min;
174 Max = (
c->fMax > Max) ?
c->fMax : Max;
#define templateClassImp(name)
void Printf(const char *fmt,...)
Formats a string in a circular formatting buffer and prints the string.
Collection abstract base class.
virtual void Warning(const char *method, const char *msgfmt,...) const
Issue warning message.
static void IndentLevel()
Functions used by ls() to indent an object hierarchy.
Statistical variable, defined by its mean and variance (RMS).
TString fName
Name given to the TStatistic object.
Double_t GetMeanErr() const
Double_t fW2
Sum of squared weights.
~TStatistic() override
TStatistic destructor.
void Print(Option_t *="") const override
Print the content of the object.
Double_t fW
Sum of weights.
TStatistic(const char *name="")
void Fill(Double_t val, Double_t w=1.)
Increment the entries in the object by one value-weight pair.
Double_t fMin
Minimum value in the TStatistic object.
Double_t fMax
Maximum value in the TStatistic object.
Double_t fM
Sum of elements (i.e. sum of (val * weight) pairs.
Double_t fM2
Second order momentum.
Int_t Merge(TCollection *in)
Merge implementation of TStatistic.
Long64_t fN
Number of fills.
const char * Data() const
void CallRecursiveRemoveIfNeeded(TObject &obj)
call RecursiveRemove for obj if gROOT is valid and obj.TestBit(kMustCleanup) is true.