X-Git-Url: http://git.treefish.org/~alex/phys/latlib.git/blobdiff_plain/f88ac5417385884367cf8cd5fc105ec4ffda8904..027b93b16fe0d77104e0e711377c5728b0934035:/obs.hpp?ds=inline diff --git a/obs.hpp b/obs.hpp index 2501f14..99d97fa 100644 --- a/obs.hpp +++ b/obs.hpp @@ -35,6 +35,7 @@ private: map computations; void mean(const string& compid, vector< vector > *meas, const int& ival); + void mean(const string& compid, vector< vector > *meas, const int& ival); }; @@ -75,6 +76,24 @@ void obs::mean(const string& compid, vector< vector > *meas, co computations[compid].err += pow( (*measIt)[ival] - computations[compid].val, 2 ); computations[compid].err /= nmeas*(nmeas-1); computations[compid].err = sqrt( computations[compid].err ); +} + +template +void obs::mean(const string& compid, vector< vector > *meas, const int& ival) +{ + computations[compid].val = 0; + computations[compid].err = 0; + + int nmeas = meas->size(); + + for(vector< vector >::iterator measIt = meas->begin(); measIt != meas->end(); ++measIt) + computations[compid].val += (*measIt)[ival]; + computations[compid].val /= nmeas; + + for(vector< vector >::iterator measIt = meas->begin(); measIt != meas->end(); ++measIt) + computations[compid].err += pow( (*measIt)[ival] - computations[compid].val, 2 ); + computations[compid].err /= nmeas*(nmeas-1); + computations[compid].err = sqrt( computations[compid].err ); } template