MCStudy: save fitted values

Is there a way to save the fit results into file for a MCStudy?

#add separate pdfs to total pdf
pdf_model = WS(ws, R.RooAddPdf('pdf_model','pdf_model', R.RooArgList(*pdf_list), R.RooArgList(*N_list)) )

#MCstudy
mcstudy = R.RooMCStudy(
    pdf_model,
    vars,
    Binned=True,
    Silence=True,
    Extended=True,
    FitOptions=dict(Save=True, Strategy=2, PrintEvalErrors=0),
)
mcstudy.generateAndFit(nMCevents, sum(yields))

The pdf_model has 4 decays, so the fit returns 4 yields. I would like to save the results (fitted yield with error) in a file so that I can do some studies without having to run the MCstudy again.

Any ideas?

I’m currently doing this but it’s probably not the best option:

with open(f"{pdf_folder}yields_MCstudy_{now_string}.txt", "a") as printedoutput:
        print("#PDFdecays\t#yields", file=printedoutput)
        for item1, item2 in zip(PDFdecays, yields):
            print("{}, {}".format(item1, item2), end=", ", file=printedoutput)
            print("\n",file=printedoutput)
for i in range (nMCevents):
    vals = []
    errs = []
    for j in range (len(PDFdecays)):
        vals.append(mcstudy.fitResult(i).floatParsFinal().find(f"n_{PDFdecays[j]}").getVal())
        errs.append(mcstudy.fitResult(i).floatParsFinal().find(f"n_{PDFdecays[j]}").getError())
    with open(f"{pdf_folder}yields_MCstudy_{now_string}.txt", "a") as printedoutput:
        for item1, item2 in zip(vals, errs):
            print("{}, {}".format(item1, item2), end=", ", file=printedoutput)
            print("\n",file=printedoutput)

Hi @mdgalati,

I guess @moneta or @jonas can help with this.

Cheers,
J.

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