/** 
* @file PDF.h
* @brief Interface for arbitrary multivariate density functions
* @author Erik Rodner
* @date 01/29/2008

*/
#ifndef PDFINCLUDE
#define PDFINCLUDE

#include "core/vector/VectorT.h"
#include "core/vector/MatrixT.h"

#define ROADWORKS { fprintf(stderr, "not yet implemented !\n"); exit(-1); }

#include "core/vector/VVector.h"


namespace OBJREC {

/** Interface for arbitrary multivariate density functions */
class PDF
{

    protected:

    public:
  
	/** simple constructor */
	PDF();

	/** simple destructor */
	virtual ~PDF();

	virtual double getNLogDensity ( const NICE::Vector & x ) const = 0;
	virtual double getProb ( const NICE::Vector & x ) const;
	virtual int getDimension () const = 0; 

	virtual void sample ( NICE::VVector & x, int count ) const { ROADWORKS };

};

#undef ROADWORKS


} // namespace

#endif
