19#include "ParticleSet.hh"
20#include "ParticleSetAccumulator.hh"
38 const std::string& resultHistNameIn,
39 const std::string& resultHistTitleIn):
42 resultHistName(resultHistNameIn),
43 resultHistTitle(resultHistTitleIn),
67 const double error = 0;
68 const unsigned long nEntriesToAccumulate = 1;
71 for (
auto& keyBin : *mean)
74 ((*variance)[keyBin.first]).value,
75 ((*newValue)[keyBin.first]).value,
76 error,
n, nEntriesToAccumulate,
78 (*mean)[keyBin.first].value = newMean;
79 (*variance)[keyBin.first].sumOfWeightsSquared = newVari;
87 const double nD = (double)
n;
88 const double factor = std::sqrt(1./(nD * (nD - 1)));
95 for (
auto& keyBin : *mean)
97 mn = keyBin.second.value;
98 var = keyBin.second.sumOfWeightsSquared;
99 err =
n > 1 ? factor*std::sqrt(var) : 0;
100 (*result)[keyBin.first].value = mn;
101 (*result)[keyBin.first].sumOfWeightsSquared = err;
103 result->nEntries =
n;
111 unsigned long nEntriesAccumulated,
114 double& newVari)
const
116 newMean = oldMean + ((x - oldMean) / (
double)nEntriesAccumulated);
117 newVari = oldVari + ((x - oldMean) * (x - newMean));
Class to accumulate and merge ParticleSets in different ways.
virtual ParticleSet * Terminate()
virtual void AccumulateSingleValue(double oldMean, double oldVari, double x, double xVari, unsigned long nEntriesAccumulated, unsigned long nEntriesToAccumulate, double &newMean, double &newVari) const
ParticleSetAccumulator()
Default constructor only for ROOT reflexivity - not intended for use.
virtual void Accumulate(ParticleSet *newValue)
const std::string resultHistName
Name for resultant histogram.
virtual ~ParticleSetAccumulator()
A very simple 'map' type histogram axis.