Facing problem fitting the distribution with fixed sigma of Gaussian

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();

Mbc_root

Hi @mkumar,

Welcome to the ROOT forum! I am sure either @moneta or @jonas can shed some light here.

Cheers,
J.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.