#ifndef COSTFUNCTIONS_H #define COSTFUNCTIONS_H #include /* * Cost Functions */ class CostFunction{ public: //Virtual Constructor & Destructor for any cost function CostFunction(){}; CostFunction(const CostFunction&){}; virtual ~CostFunction(){}; //Virtual getter for the values of any cost function virtual double get() const = 0; }; /* * Least squared cost */ class Khi2 : public CostFunction{ public: //Constructor & Destructor for a Khi2 type cost Khi2(); Khi2(const Khi2&); Khi2(std::vector>,std::vector>); ~Khi2(){}; //Set new data sets void setData(std::vector>,std::vector>); //Get the value of this cost double get() const; private: std::vector> k_exp; std::vector> k_mod; }; /* * Total distance */ class Distance : public CostFunction{ public: //Constructor & Destructor for a Distance type cost Distance(); Distance(const Distance&); Distance(std::vector>,std::vector); ~Distance(){}; //Set new data sets void setData(std::vector>,std::vector); //Get the value of this cost double get() const; private: std::vector> d_pos; std::vector d_ord; }; #endif