00001 // @(#)root/tmva $Id: SVKernelMatrix.h 31458 2009-11-30 13:58:20Z stelzer $ 00002 // Author: Andrzej Zemla 00003 00004 /********************************************************************************** 00005 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis * 00006 * Package: TMVA * 00007 * Class : SVKernelMatrix * 00008 * Web : http://tmva.sourceforge.net * 00009 * * 00010 * Description: * 00011 * Kernel matrix for Support Vector Machine * 00012 * * 00013 * Authors (alphabetical): * 00014 * Marcin Wolter <Marcin.Wolter@cern.ch> - IFJ PAN, Krakow, Poland * 00015 * Andrzej Zemla <azemla@cern.ch> - IFJ PAN, Krakow, Poland * 00016 * (IFJ PAN: Henryk Niewodniczanski Inst. Nucl. Physics, Krakow, Poland) * 00017 * * 00018 * Copyright (c) 2005: * 00019 * CERN, Switzerland * 00020 * MPI-K Heidelberg, Germany * 00021 * PAN, Krakow, Poland * 00022 * * 00023 * Redistribution and use in source and binary forms, with or without * 00024 * modification, are permitted according to the terms listed in LICENSE * 00025 * (http://tmva.sourceforge.net/LICENSE) * 00026 **********************************************************************************/ 00027 00028 #ifndef ROOT_TMVA_SVKernelMatrix 00029 #define ROOT_TMVA_SVKernelMatrix 00030 00031 #ifndef ROOT_Rtypes 00032 #include "Rtypes.h" 00033 #endif 00034 00035 #include <vector> 00036 00037 namespace TMVA { 00038 00039 class SVEvent; 00040 class SVKernelFunction; 00041 class MsgLogger; 00042 00043 class SVKernelMatrix { 00044 00045 public: 00046 00047 //constructors 00048 SVKernelMatrix(); 00049 SVKernelMatrix( std::vector<TMVA::SVEvent*>*, SVKernelFunction* ); 00050 00051 //destructor 00052 ~SVKernelMatrix(); 00053 00054 //functions 00055 Float_t* GetLine ( UInt_t ); 00056 Float_t* GetColumn ( UInt_t col ) { return this->GetLine(col);} 00057 Float_t GetElement( UInt_t i, UInt_t j ); 00058 00059 private: 00060 00061 UInt_t fSize; // matrix size 00062 SVKernelFunction* fKernelFunction; // kernel function 00063 Float_t** fSVKernelMatrix; // kernel matrix 00064 00065 mutable MsgLogger* fLogger; //! message logger 00066 MsgLogger& Log() const { return *fLogger; } 00067 00068 }; 00069 } 00070 #endif