| 11 |
#include "Fit/UnBinData.h" |
#include "Fit/UnBinData.h" |
| 12 |
//#include "Fit/BinPoint.h" |
//#include "Fit/BinPoint.h" |
| 13 |
#include "Fit/Fitter.h" |
#include "Fit/Fitter.h" |
| 14 |
#include "THFitInterface.h" |
#include "HFitInterface.h" |
|
#include "TGraphFitInterface.h" |
|
| 15 |
|
|
| 16 |
#include "Math/IParamFunction.h" |
#include "Math/IParamFunction.h" |
| 17 |
#include "Math/WrappedTF1.h" |
#include "Math/WrappedTF1.h" |
| 54 |
|
|
| 55 |
#include "MinimizerTypes.h" |
#include "MinimizerTypes.h" |
| 56 |
|
|
| 57 |
//#define DEBUG |
#define DEBUG |
| 58 |
|
|
| 59 |
int nfit; |
int nfit; |
| 60 |
const int N = 20; |
const int N = 20; |
| 337 |
TStopwatch w; w.Start(); |
TStopwatch w; w.Start(); |
| 338 |
|
|
| 339 |
#ifdef DEBUG |
#ifdef DEBUG |
| 340 |
std::cout << "initial Parameters " << iniPar << " " << *iniPar << " " << *(iniPar+1) << std::endl; |
// std::cout << "initial Parameters " << iniPar << " " << *iniPar << " " << *(iniPar+1) << std::endl; |
| 341 |
func.SetParameters(iniPar); |
func.SetParameters(iniPar); |
| 342 |
iret |= DoFit<MinType>(fitobj,func,true, useGrad); |
iret |= DoFit<MinType>(fitobj,func,true, useGrad); |
| 343 |
|
|
| 712 |
|
|
| 713 |
|
|
| 714 |
// fill an histogram |
// fill an histogram |
| 715 |
TH1D * h1 = new TH1D("h1","h1",500,-5.,5.); |
TH1D * h1 = new TH1D("h1","h1",20,-5.,5.); |
| 716 |
// h1->FillRandom(fname.c_str(),100); |
// h1->FillRandom(fname.c_str(),100); |
| 717 |
for (int i = 0; i <100; ++i) |
for (int i = 0; i <1000; ++i) |
| 718 |
h1->Fill( f1->GetRandom() ); |
h1->Fill( f1->GetRandom() ); |
| 719 |
|
|
| 720 |
//h1->Print(); |
//h1->Print(); |
| 721 |
//h1->Draw(); |
//h1->Draw(); |
| 722 |
iniPar[0] = 2.; iniPar[1] = 2.; iniPar[2] = 2.; |
iniPar[0] = 2.; iniPar[1] = 2.; iniPar[2] = 2.; |
| 723 |
|
|
| 724 |
|
|
| 725 |
iret |= FitUsingTFit<TH1,TMINUIT>(h1,f1); |
iret |= FitUsingTFit<TH1,TMINUIT>(h1,f1); |
| 726 |
iret |= FitUsingTFit<TH1,MINUIT2>(h1,f1); |
iret |= FitUsingTFit<TH1,MINUIT2>(h1,f1); |
| 727 |
// dummy for testing |
// dummy for testing |
| 753 |
|
|
| 754 |
iret |= FitUsingNewFitter<MINUIT2>(gr,f2); |
iret |= FitUsingNewFitter<MINUIT2>(gr,f2); |
| 755 |
|
|
| 756 |
|
|
| 757 |
|
std::cout << "\n-----> test now TGraphErrors with errors in X coordinates\n\n"; |
| 758 |
// try with error in X |
// try with error in X |
| 759 |
gStyle->SetErrorX(0.5); // to seto zero error on X |
gStyle->SetErrorX(0.5); // to set zero error on X |
| 760 |
TGraphErrors * gr2 = new TGraphErrors(h1); |
TGraphErrors * gr2 = new TGraphErrors(h1); |
| 761 |
iret |= FitUsingTFit<TGraph,TMINUIT>(gr2,f1); |
iret |= FitUsingTFit<TGraph,TMINUIT>(gr2,f1); |
| 762 |
|
iret |= FitUsingTFit<TGraph,MINUIT2>(gr2,f1); |
| 763 |
|
|
| 764 |
iret |= FitUsingNewFitter<MINUIT2>(gr2,f2); |
iret |= FitUsingNewFitter<MINUIT2>(gr2,f2); |
| 765 |
|
|
| 832 |
iret |= FitUsingTFit<TH1,MINUIT2>(h2,f1); |
iret |= FitUsingTFit<TH1,MINUIT2>(h2,f1); |
| 833 |
|
|
| 834 |
|
|
| 835 |
|
iret |= FitUsingNewFitter<GSL_FR>(h2,f2); |
| 836 |
|
iret |= FitUsingNewFitter<GSL_PR>(h2,f2); |
| 837 |
|
iret |= FitUsingNewFitter<GSL_BFGS>(h2,f2); |
| 838 |
|
iret |= FitUsingNewFitter<GSL_BFGS2>(h2,f2); |
| 839 |
|
|
| 840 |
|
|
| 841 |
// test also fitting a TGraphErrors with histogram data |
// test also fitting a TGraphErrors with histogram data |
| 842 |
gStyle->SetErrorX(0.); // to seto zero error on X |
gStyle->SetErrorX(0.); // to seto zero error on X |
| 843 |
TGraphErrors * gr = new TGraphErrors(h2); |
TGraphErrors * gr = new TGraphErrors(h2); |
| 1070 |
iret |= testTreeFit(); |
iret |= testTreeFit(); |
| 1071 |
|
|
| 1072 |
|
|
| 1073 |
|
|
| 1074 |
//return iret; |
//return iret; |
| 1075 |
|
|
| 1076 |
#ifndef DEBUG |
#ifndef DEBUG |