#ifndef OBS_H
#define OBS_H
-#include <vector>
+#include <list>
+#include <string>
+#include <map>
using namespace std;
-namespace obs
+template <class obstype>
+class obs
{
- struct obsa
- {
- double mean;
- double err;
- };
+ public:
+ void addMeas(obstype val[], int valsize);
+ void addMeas(const obstype& val);
- struct meas
- {
- int id;
- vector<double> val;
- };
+ void computeMean(const string& compid) { mean(compid, measurements); }
+ void computeJack(const string& compid, double (*func)(const list<obstype>& vals, void *para), void *para=NULL);
- double addMeas(int id, double val);
- double* addMeas(int id, double *val, int valsize);
+ private:
+ list<obstype> measurements;
+ map<string,double[2]> computations;
- obsa jackObs(int id, double (*func)(vector< vector<double> > vals));
- obsa normObs(int id);
-
- void reset();
-}
+ void mean(const string& compid, const list<double>& meas);
+};
#endif