Dear Experts,
The -log(likelihood) projection doesn’t work well for simultaneous fit. Here is the sample code;
##fitting variables
Mbc = ROOT.RooRealVar("Mbc", 'M_{bc} [GeV/c^{2}]', 5.2,5.29)
deltaE = ROOT.RooRealVar("deltaE", "#DeltaE [GeV]", -0.15,0.1)
roo_dataA1 = df2roo(A1, {'Mbc': Mbc, 'deltaE':deltaE}) ##1st data set
roo_dataA2 = df2roo(A2, {'Mbc': Mbc, 'deltaE':deltaE}) ##2nd data set
##combined data set for simultaneous fit
combData = ROOT.RooDataSet("combData","combined data",ROOT.RooArgSet(Mbc,deltaE),ROOT.RooFit.Index(sample),ROOT.RooFit.Import("mumu",roo_dataA1),ROOT.RooFit.Import("ee",roo_dataA2))
##simultaneous fit
result = simPdf.fitTo(combData, ROOT.RooFit.Save(),ROOT.RooFit.Extended(), ROOT.RooFit.Minos())
##profile likelihood projection
nll = simPdf.createNLL(combData)
ROOT.RooMinuit(nll).migrad()
nll_frame = Nsig.frame()
nll.plotOn(nll_frame, ROOT.RooFit.ShiftToZero(), ROOT.RooFit.Name('stat'), ROOT.RooFit.LineColor(ROOT.kBlue))
nll_frame.GetYaxis().SetRangeUser(0,2)
nll_frame.GetXaxis().SetTitle("N_{sig}")
nll_frame.Draw()
Here, I would expect the profile likelihood projection minimum should be at signal yield (Nsig). But for this case,
Let’s say, Nsig from fit is 2.13445 +/- (-2.35871,2.71869)
The profile likelihood minimum is at 0.312568 +/- 2.24925.
But the same profile likelihood calculation procedure works fine for standard fitting instead of simultaneous fit.
Waiting for some helpful suggestions!