// @(#)root/tmva $Id$ 
// Author: Andreas Hoecker, Peter Speckmayer, Joerg Stelzer, Helge Voss

/**********************************************************************************
 * Project: TMVA - a Root-integrated toolkit for multivariate data analysis       *
 * Package: TMVA                                                                  *
 * Class  : FitterBase                                                            *
 * Web    : http://tmva.sourceforge.net                                           *
 *                                                                                *
 * Description:                                                                   *
 *      Implementation                                                            *
 *                                                                                *
 * Authors (alphabetical):                                                        *
 *      Andreas Hoecker  <Andreas.Hocker@cern.ch> - CERN, Switzerland             *
 *      Peter Speckmayer <speckmay@mail.cern.ch>  - CERN, Switzerland             *
 *      Joerg Stelzer    <Joerg.Stelzer@cern.ch>  - CERN, Switzerland             *
 *      Helge Voss       <Helge.Voss@cern.ch>     - MPI-K Heidelberg, Germany     *
 *                                                                                *
 * 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)                                          *
 **********************************************************************************/

//______________________________________________________________________
/*
  FitterBase

  Baseclass for TMVA fitters. Also defines generalised fitting interface
*/
//_______________________________________________________________________

#include "TMVA/FitterBase.h"
#ifndef ROOT_TMVA_Interval
#include "TMVA/Interval.h"
#endif
#ifndef ROOT_TMVA_IFitterTarget
#include "TMVA/IFitterTarget.h"
#endif

ClassImp(TMVA::FitterBase)

#ifdef _WIN32
/*Disable warning C4355: 'this' : used in base member initializer list*/
#pragma warning ( disable : 4355 )
#endif

//_______________________________________________________________________
TMVA::FitterBase::FitterBase( IFitterTarget& target, 
                              const TString& name, 
                              const std::vector<Interval*> ranges, 
                              const TString& theOption ) 
   : Configurable( theOption ),
     fFitterTarget( target ),
     fRanges( ranges ),
     fNpars( ranges.size() ),
     fLogger( new MsgLogger("FitterBase", kINFO) ),
     fClassName( name )
{
   // constructor   
   SetConfigName( GetName() );
   SetConfigDescription( "Configuration options for setup and tuning of specific fitter" );
}

//_______________________________________________________________________
Double_t TMVA::FitterBase::Run()
{
   // estimator function interface for fitting 
   std::vector<Double_t> pars;
   for (std::vector<Interval*>::const_iterator parIt = fRanges.begin(); parIt != fRanges.end(); parIt++) {
      pars.push_back( (*parIt)->GetMean() );
   }
                                                                   
   //   delete fLogger;
   return this->Run( pars );
}

//_______________________________________________________________________
Double_t TMVA::FitterBase::EstimatorFunction( std::vector<Double_t>& parameters )
{
   // estimator function interface for fitting 
   return GetFitterTarget().EstimatorFunction( parameters );
}

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