// @(#)root/minuit2:$Name:  $:$Id: TFitterFumili.cxx,v 1.3 2005/11/29 14:43:31 moneta Exp $
// Author: L. Moneta    10/2005  

/**********************************************************************
 *                                                                    *
 * Copyright (c) 2005 ROOT Foundation,  CERN/PH-SFT                   *
 *                                                                    *
 **********************************************************************/

#include "TROOT.h"
#include "TFitterFumili.h"
#include "TMath.h"
#include "TF1.h"
#include "TH1.h"
#include "TGraph.h"

#include "TFumiliFCN.h"
#include "Minuit2/FumiliMinimizer.h"
#include "Minuit2/FunctionMinimum.h"
#include "Minuit2/MnStrategy.h"
#include "Minuit2/MnPrint.h"

using namespace ROOT::Minuit2;

//#define DEBUG 1

ClassImp(TFitterFumili);

TFitterFumili* gFumili2 = 0;

 TFitterFumili::TFitterFumili() {
    SetName("Fumili2");
    gFumili2 = this;
    gROOT->GetListOfSpecials()->Add(gFumili2);
}


// needed this additional contructor ? 
 TFitterFumili::TFitterFumili(Int_t /* maxpar */) {
    SetName("Fumili2");
    gFumili2 = this;
    gROOT->GetListOfSpecials()->Add(gFumili2);
}


// create the minimizer engine and register the plugin in ROOT
// what ever we specify only Fumili is created  
 void TFitterFumili::CreateMinimizer(EMinimizerType ) { 
  if (PrintLevel() >=1 ) 
    std::cout<<"TFitterFumili: Minimize using new Fumili algorithm "<<std::endl;

  const ModularFunctionMinimizer * minimizer = GetMinimizer();
  if (!minimizer) delete minimizer;
  SetMinimizer( new FumiliMinimizer() );

  //SetStrategy(2);
  // Fumili cannot deal with tolerance too smalls (10-3 corrsponds to 10-7 in FumiliBuilder)
  SetMinimumTolerance(0.001); 

#ifdef DEBUG
  SetPrintLevel(3);
#endif
}


 void TFitterFumili::CreateChi2FCN() { 
  SetMinuitFCN(new TFumiliChi2FCN( *this,GetStrategy()) );
}

 void TFitterFumili::CreateChi2ExtendedFCN() { 
  //for Fumili use normal method 
  SetMinuitFCN(new TFumiliChi2FCN(*this, GetStrategy()));
}

 void TFitterFumili::CreateBinLikelihoodFCN() { 
  SetMinuitFCN( new TFumiliBinLikelihoodFCN( *this, GetStrategy()) );
}


ROOT page - Class index - Class Hierarchy - Top of the page

This page has been automatically generated. If you have any comments or suggestions about the page layout send a mail to ROOT support, or contact the developers with any questions or problems regarding ROOT.