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)