I want to fit the Mbc distribution with fixed the sigma from the 3rd order polynomial. I used “RooFormulaVar sigma1_Mbc(”#sigma1_Mbc", “p0+p1del+p2del2+p3*del3”, RooArgList(p0,p1,p2,p3,del));" and fixed the p0,p1,p2 from the different binned distribution of Mbc.
But, the fitting is not working correctly. I also attached the script (fitted distribution) used for fitting from the fitted distribution.
Please share your comments and suggestion on the same.
using namespace RooFit;
TChain chain("tree");
chain.Add("MC_phi.root");
Int_t tree_entry=chain.GetEntries();
RooRealVar del("del","M_{bc} (GeV)",5.25,5.29);
Double_t Mbc,deltaE;
Float_t MVA;
chain.SetBranchAddress("Mbc",&Mbc);
chain.SetBranchAddress("deltaE",&deltaE);
chain.SetBranchAddress("MVA",&MVA);
RooDataSet data("data","data cut",RooArgSet(del));
for(int i=0;i<Int_t(tree_entry);i++)
{
chain.GetEntry(i);
if(deltaE > -0.18 && deltaE < 0.18 && MVA > 0.94 && Mbc > 5.25) {
del.setVal(Mbc);
data.add(RooArgSet(del));
}
}
RooRealVar mean_Mbc("mean_{Mbc}", "MEAN of Mbc gaussian",5.279,5.27,5.28);
RooRealVar p0("p0", "sigma from p0",3.7);
RooRealVar p1("p1", "sigma from p1",-0.4);
RooRealVar p2("p2", "sigma from p2",-0.3);
RooRealVar p3("p3", "sigma from p3",0.1);
RooFormulaVar sigma1_Mbc("#sigma1_Mbc", "p0+p1*del+p2*del**2+p3*del**3", RooArgList(p0,p1,p2,p3,del));
RooRealVar alpha("alpha","alpha",1.34, -5.0, 5.0);
RooRealVar n("n","exponent of power",3.4,0.0,18.0);
RooCBShape ball("ball","ball function", del, mean_Mbc, sigma1_Mbc, alpha, n);
RooRealVar delm_Mbc("delm_Mbc","delm of Mbc",0);
RooFormulaVar mean3_Mbc("mean3_{Mbc}","mean2 Mbc","@0+@1",RooArgSet(mean_Mbc,delm_Mbc));
RooRealVar srr_Mbc("srr_{Mbc}","srr Mbc",2.87,0.0,5.0);
RooRealVar a2a1_Mbc("a2a1_{Mbc}","area2_2/area1_1 Mbc",0.09,0.0,1.0);
RooGaussian gauss4_Mbc("gauss4_Mbc", "4th gaussian PDF Mbc", del, mean3_Mbc, srr_Mbc);
RooRealVar a2a_1_Mbc("a2a_1_Mbc","area2/area1",0.23,0.0,1.0);
RooAddPdf double_gauss_Mbc("double_gauss_Mbc","add two gaussian",RooArgList(ball,gauss4_Mbc),RooArgSet(a2a1_Mbc));
RooRealVar sig("sig","SIGNAL EVENTS",13900,100,200000);
RooRealVar bkg("bkg","SIGNAL EVENTS",2820,8,6000);
RooAddPdf depdf("depdf","Two Gaussian + ",RooArgList(ball), RooArgList(sig));
RooFitResult *fitresult = depdf.fitTo(data, Extended(true));//,Minos(true));
TCanvas *c1 =new TCanvas ("c1", "DeltaE FIT", 600, 500);
RooPlot* deltaEplot = del.frame(Bins(60));
data.plotOn(deltaEplot);
depdf.paramOn(deltaEplot);
depdf.plotOn(deltaEplot);
cout << "chi^2 = " << deltaEplot->chiSquare() << endl;
depdf.plotOn(deltaEplot,Components(RooArgSet(bckg3)),LineColor(kRed),LineStyle(kDashed));
deltaEplot->Draw();
c1->SetFrameFillColor(kWhite);
c1->Update();