#include #include #include #include #include #include #include #include #include #include #include #include #include using namespace RooFit; void unbinned_fit_pp_pol2() { TFile * f = new TFile("tuple.root"); float x_min=2.172; float x_max=2.388; int n_bins=27; double sig_num=11733; double w1 = 0.00645082; double w2 = 0.0146427; double r1 = 0.847506; double mean_value = 2.28893; TNtuple *nt1 = (TNtuple*)f->Get("tuple"); TH1F *hb = new TH1F("hb","hb",n_bins,x_min,x_max); nt1->Draw("mass>>hb"); double numbers = sig_num; double numberb = hb->Integral(); int ymax = hb->GetBinContent(hb->GetMaximumBin()); int ymin = hb->GetBinContent(hb->GetMinimumBin()); int y_max=ymax+(0.31*(ymax-ymin)); int y_min=ymin-(0.19*(ymax-ymin)); auto c1 = new TCanvas("c1", "c1"); RooRealVar mass("mass","mass",x_min,x_max); RooDataSet ds("ds","ds",nt1,mass); ds.Print(); RooPlot *massframe = new RooPlot("mass","mass",mass,x_min,x_max,n_bins); ds.plotOn(massframe,Name("ds"),MarkerStyle(20),MarkerColor(1),MarkerSize(1),LineColor(1),XErrorSize(0)); gStyle->SetErrorX(kFALSE); massframe->Draw(); cout<<"begin fitting"<SetAxisRange(y_min,y_max,"Y"); massframe->Draw(); r->Print(); cout<<"EDM = "<edm()<minNll()<SaveAs("plot.root"); TFile *result = new TFile("fit_result.root","RECREATE"); massframe->Write(); result->Close(); }