00001 #ifndef KullbackLeiblerDistance_H 00002 #define KullbackLeiblerDistance_H 00003 00004 #include "TrackingTools/GsfTools/interface/DistanceBetweenComponents.h" 00005 00009 template <unsigned int N> 00010 class KullbackLeiblerDistance : public DistanceBetweenComponents<N> { 00011 00012 private: 00013 typedef typename SingleGaussianState<N>::Vector Vector; 00014 typedef typename SingleGaussianState<N>::Matrix Matrix; 00015 00016 public: 00017 00021 virtual double operator() (const SingleGaussianState<N>&, 00022 const SingleGaussianState<N>&) const; 00023 00024 virtual KullbackLeiblerDistance<N>* clone() const 00025 { 00026 return new KullbackLeiblerDistance<N>(*this); 00027 } 00028 00029 // private: 00030 // double trace (const Matrix& matrix) const; 00031 }; 00032 00033 #include "TrackingTools/GsfTools/interface/KullbackLeiblerDistance.icc" 00034 00035 #endif // KullbackLeiblerDistance_H