/* * ===================================================================================== * * Filename: tfit.C * * Description: * * Version: 1.0 * Created: 04/14/08 14:49:33 CEST * Revision: none * Compiler: gcc * * Author: Maksym W Borodin (Maks), maksym.borodin@desy.de * Company: DESY/ZEUS * * ===================================================================================== */ #include "TH1.h" #include "TFractionFitter.h" #include "TFile.h" TH1D* _hmc0=0; TH1D* _hmc1=0; TH1D* _hmc2=0; TObjArray* _hmcX=0; TFractionFitter *tfit=0; TVirtualFitter *vfit=0; Double_t fmc1=0.; Double_t fmc1err=0.; Double_t fmc2=0.; Double_t fmc2err=0.; void toy(){ TFile* _file0 = TFile::Open("new.root"); _hmc0=(TH1D*)gDirectory->Get("mc0"); _hmc1=(TH1D*)gDirectory->Get("mc1"); _hmc2=(TH1D*)gDirectory->Get("mc2"); _hmc0->Print(); _hmc1->Print(); _hmc2->Print(); // Int_t ir=20; // _hmc0->Rebin(ir); // _hmc1->Rebin(ir); // _hmc2->Rebin(ir); _hmcX=new TObjArray(2); _hmcX->Add(_hmc1); _hmcX->Add(_hmc2); tfit=new TFractionFitter(_hmc0, _hmcX); vfit=(TVirtualFitter*) tfit->GetFitter(); tfit->Constrain(1,0.5,0.999); tfit->Constrain(2,0.0,0.10); Double_t x1 = 5.001; Double_t x2 = 11.499; Int_t ilow = _hmc0->GetXaxis()->FindBin(x1); Int_t ihigh = _hmc0->GetXaxis()->FindBin(x2); printf("fit from %3d to %3d \n",ilow,ihigh); tfit->SetRangeX(ilow, ihigh); vfit->SetFitMethod("MILL"); tfit->Fit(); tfit->GetResult(0,fmc1,fmc1err); tfit->GetResult(1,fmc2,fmc2err); printf("%5.3f %5.3f : %5.3f %5.3f : %5.3f %5d [%5.3f] \n", fmc1,fmc1err,fmc2,fmc2err, tfit->GetChisquare(), tfit->GetNDF(), tfit->GetProb()); _hmc1->Scale(fmc1*_hmc0->Integral(ilow,ihigh)/_hmc1->Integral(ilow,ihigh)); _hmc2->Scale(fmc2*_hmc0->Integral(ilow,ihigh)/_hmc2->Integral(ilow,ihigh)); _hmc0->Draw(); _hmc1->Draw("EHISTSAME"); _hmc1->SetLineColor(30); _hmc2->Draw("EHISTSAME"); _hmc2->SetLineColor(60); }