using namespace RooFit; using namespace std; void lambda_sig() { // Create a TChain to read the data from ROOT files TChain *chain = new TChain("tree"); chain->Add("/home/g_vikas_raj/Downloads/root/SVD/splots_2/test_lambda/unbinned/ok/unbinned/lambda_draw_unb_all.root"); // Define variables for the fit RooRealVar InvM("InvM", "M_{p^{+}#pi^{-}}", 1.1, 1.13,"GeV/c^{2}"); // Adjust the range accordingly RooRealVar isSignal("isSignal", "Signal Indicator", 0.0, 1.0); // Create a RooDataSet from the chain with the desired cuts RooDataSet data("data", "Dataset with isSignal == 1", chain, RooArgSet(InvM, isSignal), "isSignal==1"); RooRealVar mean1("mean1", " mean1", 1.116321, 1.1105, 1.122); //1.116254 RooRealVar sigma1("sigma1", "#sigma_{1}", 0.004981, 0., 0.01); //0.003077 RooGaussian gauss1("gauss1", "gauss1", InvM, mean1, sigma1); RooRealVar r1("r1", "r1", 0.332,0.0,1.0); //0.424 RooRealVar r2("r2", "r2", 0.2535,0.0,1.0); //0.3262 RooFormulaVar sigmaL1("sigmaL1", "r1*sigma1",RooArgSet(r1, sigma1)); RooFormulaVar sigmaR1("sigmaR1", "r2*sigma1",RooArgSet(r2, sigma1)); RooBifurGauss Bgauss1("Bgauss1", "BGauss1", InvM, mean1, sigmaL1,sigmaR1); RooRealVar d("d", "d", -0.0004457,-0.01, 0.01); //-0.0003919 RooRealVar r3("r3", "r3", 0.1222,0.0,1.0); // 0.1767 RooRealVar r4("r4", "r4", 0.1029,0.0,1.0); // 0.1492 RooFormulaVar mean2("mean2", "mean1+d",RooArgSet(mean1, d)); RooFormulaVar sigmaL2("sigmaL2", "r3*sigma1",RooArgSet(r3, sigma1)); RooFormulaVar sigmaR2("sigmaR2", "r4*sigma1",RooArgSet(r4, sigma1)); RooBifurGauss Bgauss2("Bgauss2", "BGauss2", InvM, mean2, sigmaL2,sigmaR2); RooRealVar frac1("frac1", "frac1", 0.3815,0.0,1.0 ); //0.3815 RooRealVar frac2("frac2", "frac2", 0.8635,0.0,1.0 ); //0.8635 RooAddPdf model1("model1","Bgauss1 + Bgauss2 ",RooArgList(Bgauss1,Bgauss2),RooArgList(frac1)); RooAddPdf signal("signal","model1 + gauss1",RooArgList(model1,gauss1),RooArgList(frac2)); // Perform the fit RooFitResult *result = signal.fitTo(data, Save(true)); // Save the fit result to a file //TFile outputFile("fit_result.root", "RECREATE"); //result->Write(); //outputFile.Close(); // Plot the result RooPlot *frame = InvM.frame(); data.plotOn(frame); signal.plotOn(frame); signal.paramOn(frame); TCanvas *canvas = new TCanvas("canvas", "canvas", 800, 600); frame->Draw(); //canvas->SaveAs("fit_plot_4.png"); double chisquare = frame->chiSquare(); cout<<"chisquare = "<