#include "TH1.h" #include "TF1.h" #include "Fit/Chi2FCN.h" #include "HFitInterface.h" #include "Math/WrappedMultiTF1.h" #include "Math/DistFunc.h" #include // chi2 comparison histogram-function void testChi2FuncTest() { TH1 * h1 = new TH1D("h1","h1",100,-3,3); TF1 * f1 = new TF1("f1","gaus"); int n = 100000; f1->SetParameters(n,0,1); h1->FillRandom("f1",n); ROOT::Fit::BinData data; ROOT::Fit::FillData(data, h1); ROOT::Math::WrappedMultiTF1 wf(*f1); ROOT::Fit::Chi2Function chi2(data, wf); // evaluate at parameter values f1->SetParameter(0, h1->GetMaximum() ); // fix constant to match histogram double val = chi2( f1->GetParameters() ); int ndf = chi2.NPoints() - chi2.NDim(); double prob = ROOT::Math::chisquared_cdf_c( val, ndf); std::cout << " chi2 value = " << val << " ndf = " << ndf << std::endl; std::cout << " chi2 probability = " << prob << std::endl; }