47 TMVA::SVKernelFunction::SVKernelFunction()
59 TMVA::SVKernelFunction::SVKernelFunction( Float_t gamma )
72 TMVA::SVKernelFunction::SVKernelFunction( EKernelType k, Float_t param1, Float_t param2)
75 if (k==kRBF) { fGamma = param1; }
76 else if (k==kPolynomial){
86 TMVA::SVKernelFunction::SVKernelFunction( std::vector<float> params ) :
90 for( std::vector<float>::const_iterator iter = params.begin(); iter != params.end()\
92 fmGamma.push_back(*iter);
100 TMVA::SVKernelFunction::SVKernelFunction(EKernelType k, std::vector<EKernelType> kernels, std::vector<Float_t> gammas, Float_t gamma, Float_t order, Float_t theta) :
107 fKernelsList.clear();
108 fKernelsList = kernels;
115 TMVA::SVKernelFunction::~SVKernelFunction()
118 fKernelsList.clear();
124 void TMVA::SVKernelFunction::setCompatibilityParams(EKernelType k, UInt_t order, Float_t theta, Float_t kappa) {
133 Float_t TMVA::SVKernelFunction::Evaluate( SVEvent* ev1, SVEvent* ev2 )
138 std::vector<Float_t> *v1 = ev1->GetDataVector();
139 std::vector<Float_t> *v2 = ev2->GetDataVector();
142 for (UInt_t i = 0; i < v1->size(); i++) norm += ((*v1)[i] -(*v2)[i]) *((*v1)[i] -(*v2)[i]) ;
144 return TMath::Exp(-norm*fGamma);
152 std::vector<Float_t> *v1 = ev1->GetDataVector();
153 std::vector<Float_t> *v2 = ev2->GetDataVector();
154 if(fmGamma.size() != v1->size()){
155 std::cout <<
"Fewer gammas than input variables! #Gammas= " << fmGamma.size() <<
" #Input variables= " << v1->size() << std::endl;
156 std::cout <<
"***> abort program execution" << std::endl;
161 for (UInt_t i = 0; i < v1->size(); i++) {
162 result *= TMath::Exp( -((*v1)[i] -(*v2)[i])*((*v1)[i] -(*v2)[i])*fmGamma[i] );
170 std::vector<Float_t> *v1 = ev1->GetDataVector();
171 std::vector<Float_t> *v2 = ev2->GetDataVector();
172 Float_t prod = fTheta;
173 for (UInt_t idx = 0; idx < v1->size(); idx++) prod += (*v1)[idx] * (*v2)[idx];
177 result = TMath::Power(prod,i);
184 std::vector<Float_t> *v1 = ev1->GetDataVector();
185 std::vector<Float_t> *v2 = ev2->GetDataVector();
187 for (UInt_t i = 0; i < v1->size(); i++) prod += (*v1)[i] * (*v2)[i];
195 std::vector<Float_t> *v1 = ev1->GetDataVector();
196 std::vector<Float_t> *v2 = ev2->GetDataVector();
198 for (UInt_t i = 0; i < v1->size(); i++) prod += ((*v1)[i] -(*v2)[i]) *((*v1)[i] -(*v2)[i]) ;
201 return TMath::TanH( prod );
211 for(UInt_t i = 0; i<fKernelsList.size(); i++){
212 fKernel = fKernelsList.at(i);
213 Float_t a = Evaluate(ev1,ev2);
225 Float_t kernelVal = 0;
226 for(UInt_t i = 0; i<fKernelsList.size(); i++){
227 fKernel = fKernelsList.at(i);
228 Float_t a = Evaluate(ev1,ev2);