/** 
* @file PDFParzenMulti.h
* @brief Parzen density
* @author Erik Rodner
* @date 01/29/2008

*/
#ifndef PDFParzenMultiINCLUDE
#define PDFParzenMultiINCLUDE

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

#include <map>
#include "PDF.h"
#include "vislearning/baselib/Gnuplot.h"
#include "core/vector/VVector.h"


namespace OBJREC {

/** Parzen Density */
class PDFParzenMulti : public PDF
{

    protected:
	NICE::VVector samples;
	// refactor-nice.pl: check this substitution
	// old: Matrix kernelInvCov;
	NICE::Matrix kernelInvCov;
	
	double constant;
	uint dimension;
	double det;

	// refactor-nice.pl: check this substitution
	// old: double kernel ( const Vector & v ) const;
	double kernel ( const NICE::Vector & v ) const;

    public:
  
	/** simple constructor */
	// refactor-nice.pl: check this substitution
	// old: PDFParzenMulti ( const NICE::VVector & samples, const Matrix & kernelInvCov );
	PDFParzenMulti ( const NICE::VVector & samples, const NICE::Matrix & kernelInvCov );

	/** simple destructor */
	virtual ~PDFParzenMulti();
 
	// refactor-nice.pl: check this substitution
	// old: double getNLogDensity ( const Vector & x ) const;
	double getNLogDensity ( const NICE::Vector & x ) const;
	int getDimension () const;
};


} // namespace

#endif
