Hi Rooters, I have some problems with the calculation of the chisquare of a signal+background histogram fit. Although the fit both of the signal and the combined signal+background looks quite good, the chisquare is by far too high. I already tried to set the fit limits close by the signal gauss, but it doesn't help. Here's my code: TF1* gaussian = new TF1 ("gaussian", "2*[0]*(1/(sqrt(2*pi)*[2]))*exp(-.5*((x-[1])/[2])^2)",0.,75000.); TF1* ceby = new TF1("ceby", "[0]*cheby_0+[1]*cheby_1+[2]*cheby_2+[3]*cheby_3+[4]*cheby_4"); TF1* fit_func = new TF1("fit_func", "(2*[0]*(1/(sqrt(2*pi)*[2]))*exp(-.5*((x-[1])/[2])^2))+[3]*cheby_0+[4]*cheby_1+[5] *cheby_2+[6]*cheby_3+[7]*cheby_4",10000.,75000.); [...] gaussian->SetParameter(0,start_parameter[0]); gaussian->SetParameter(1,start_parameter[1]); gaussian->SetParameter(2,start_parameter[2]); ceby->SetParameter(3,start_parameter[3]); ceby->SetParameter(4,start_parameter[4]); ceby->SetParameter(5,start_parameter[5]); ceby->SetParameter(6,start_parameter[6]); ceby->SetParameter(7,start_parameter[7]); calibration_histos[i]->Fit("ceby","0+",""); // 0(zero)=Store, do not draw TH1F* htemp=(TH1F*)calibration_histos[i]->Clone(); htemp->SetName("htemp"); htemp->Reset(); background=calibration_histos[i]->GetFunction("ceby"); for (int bin=min_bin;bin<max_bin;bin++) { float x; x=calibration_histos[i]->GetBinCenter(bin); double value, difference; value=ceby->Eval(x); difference=fabs(value-calibration_histos[i]->GetBinContent(bin)); htemp->Fill(x,difference); } htemp->Fit("gaussian","0+",""); signal=htemp->GetFunction("gaussian"); signal->GetParameters(¶meters[0]); background->GetParameters(¶meters[3]); fit_func->SetParameters(parameters); calibration_histos[i]->Fit("fit_func","0+",""); for (int grumpf=0; grumpf<8;grumpf++) { cerr << endl << parameters[grumpf] << endl; cerr << fit_func->GetParameter(grumpf); } calibration_histos[i]->Draw(""); htemp->Draw("same"); gaussian->Draw("same"); fit_func->Draw("same"); c1->Update(); fit_parameters_act.chisqr=fit_func->GetChisquare(); cerr<<endl<<"CHISQUAREGAUSS:"<<gaussian->GetChisquare() << endl; cerr<<endl<<"CHISQUAREFIT_FUNC"<<fit_parameters_act.chisqr << endl; [...] Hope i didn't overlook something completely trivial... Regards Johannes __________________________________________________ Do You Yahoo!? Yahoo! Sports - Coverage of the 2002 Olympic Games http://sports.yahoo.com
This archive was generated by hypermail 2b29 : Sat Jan 04 2003 - 23:50:41 MET