ROOT logo
// @(#)root/tmva $Id: MetricManhattan.cxx 29122 2009-06-22 06:51:30Z brun $ 
// Author: Andreas Hoecker, Peter Speckmayer

/**********************************************************************************
 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
 * Package: TMVA                                                                  *
 * Class  : MetricManhattan                                                       *
 * Web    : http://tmva.sourceforge.net                                           *
 *                                                                                *
 * Description:                                                                   *
 *      Implementation                                                            *
 *                                                                                *
 * Authors (alphabetical):                                                        *
 *      Peter Speckmayer <speckmay@mail.cern.ch> - CERN, Switzerland              *
 *                                                                                *
 * Copyright (c) 2005:                                                            *
 *      CERN, Switzerland                                                         * 
 *      MPI-K Heidelberg, Germany                                                 * 
 *                                                                                *
 * Redistribution and use in source and binary forms, with or without             *
 * modification, are permitted according to the terms listed in LICENSE           *
 * (http://tmva.sourceforge.net/LICENSE)                                          *
 **********************************************************************************/

//_______________________________________________________________________
//                                                                      
// interface for a metric
//
//_______________________________________________________________________

#include "TMath.h"

#include "TMVA/MetricManhattan.h"

ClassImp(TMVA::MetricManhattan)

//_______________________________________________________________________
TMVA::MetricManhattan::MetricManhattan() 
   : IMetric()
{
   // constructor
}            


//_______________________________________________________________________
Double_t TMVA::MetricManhattan::Distance( std::vector<Double_t>& pointA, std::vector<Double_t>& pointB )
{
   // the Manhatten distance between point A and B:
   // linear sum of differences between A in B in all variables
   Double_t distance = 0.0;
   Double_t val = 0.0;
   std::vector<Double_t>::iterator itA;
   std::vector<Double_t>::iterator itB;
   if( fParameters == NULL ){
      itA = pointA.begin();
      for( itB = pointB.begin(); itB != pointB.end(); itB++ ){
         if( itA == pointA.end() ){
            break;
         }
         val = (*itA)-(*itB);
         distance += TMath::Abs( val );
         itA++;
      }
   }else{
      std::vector<Double_t>::iterator itPar;
      itA   = pointA.begin();
      itPar = fParameters->begin();
      for( itB = pointB.begin(); itB != pointB.end(); itB++ ){
         if( itA == pointA.end() ){
            break;
         }
         if( itPar == fParameters->end() ){
            break;
         }
         val = (*itPar)*( (*itA)-(*itB) );
         distance += TMath::Abs( val );
         itA++;
         itPar++;
      }
      if( itA != pointA.end() ){
         distance *= (*itA);
      }
   }
   return distance;
}

 MetricManhattan.cxx:1
 MetricManhattan.cxx:2
 MetricManhattan.cxx:3
 MetricManhattan.cxx:4
 MetricManhattan.cxx:5
 MetricManhattan.cxx:6
 MetricManhattan.cxx:7
 MetricManhattan.cxx:8
 MetricManhattan.cxx:9
 MetricManhattan.cxx:10
 MetricManhattan.cxx:11
 MetricManhattan.cxx:12
 MetricManhattan.cxx:13
 MetricManhattan.cxx:14
 MetricManhattan.cxx:15
 MetricManhattan.cxx:16
 MetricManhattan.cxx:17
 MetricManhattan.cxx:18
 MetricManhattan.cxx:19
 MetricManhattan.cxx:20
 MetricManhattan.cxx:21
 MetricManhattan.cxx:22
 MetricManhattan.cxx:23
 MetricManhattan.cxx:24
 MetricManhattan.cxx:25
 MetricManhattan.cxx:26
 MetricManhattan.cxx:27
 MetricManhattan.cxx:28
 MetricManhattan.cxx:29
 MetricManhattan.cxx:30
 MetricManhattan.cxx:31
 MetricManhattan.cxx:32
 MetricManhattan.cxx:33
 MetricManhattan.cxx:34
 MetricManhattan.cxx:35
 MetricManhattan.cxx:36
 MetricManhattan.cxx:37
 MetricManhattan.cxx:38
 MetricManhattan.cxx:39
 MetricManhattan.cxx:40
 MetricManhattan.cxx:41
 MetricManhattan.cxx:42
 MetricManhattan.cxx:43
 MetricManhattan.cxx:44
 MetricManhattan.cxx:45
 MetricManhattan.cxx:46
 MetricManhattan.cxx:47
 MetricManhattan.cxx:48
 MetricManhattan.cxx:49
 MetricManhattan.cxx:50
 MetricManhattan.cxx:51
 MetricManhattan.cxx:52
 MetricManhattan.cxx:53
 MetricManhattan.cxx:54
 MetricManhattan.cxx:55
 MetricManhattan.cxx:56
 MetricManhattan.cxx:57
 MetricManhattan.cxx:58
 MetricManhattan.cxx:59
 MetricManhattan.cxx:60
 MetricManhattan.cxx:61
 MetricManhattan.cxx:62
 MetricManhattan.cxx:63
 MetricManhattan.cxx:64
 MetricManhattan.cxx:65
 MetricManhattan.cxx:66
 MetricManhattan.cxx:67
 MetricManhattan.cxx:68
 MetricManhattan.cxx:69
 MetricManhattan.cxx:70
 MetricManhattan.cxx:71
 MetricManhattan.cxx:72
 MetricManhattan.cxx:73
 MetricManhattan.cxx:74
 MetricManhattan.cxx:75
 MetricManhattan.cxx:76
 MetricManhattan.cxx:77
 MetricManhattan.cxx:78
 MetricManhattan.cxx:79
 MetricManhattan.cxx:80
 MetricManhattan.cxx:81
 MetricManhattan.cxx:82
 MetricManhattan.cxx:83
 MetricManhattan.cxx:84
 MetricManhattan.cxx:85
 MetricManhattan.cxx:86