RooMCStudy error

Dear experts,

I am trying to generate pure toy datasets using RooMCStudy::generateAndFit() for a combined dataset and a simultaneous PDF, which is composed of individual PDFs defined in 7 different bins of a flavor tagging parameter r.

I am using the following code:

reso_ws.factory("sample_4d_pure[r0,r1,r2,r3,r4,r5,r6]")

reso_ws.factory("SIMUL::simPdf_TD(sample_4d_pure, "
           "r0=pdf_full_td0, "
           "r1=pdf_full_td1, "
           "r2=pdf_full_td2, "
           "r3=pdf_full_td3, "
           "r4=pdf_full_td4, "
           "r5=pdf_full_td5, "
           "r6=pdf_full_td6)"
           )

print(reso_ws.obj("simPdf_TD"))

dataset_td = R.RooDataSet("dataset_td", "combined dataset", data_set_td_0.get())
for i in range(7):
    ds = globals()[f"data_set_td_{i}"]
    dataset_td.append(ds)

dataset_td.Print('v')


mcstudy = R.RooMCStudy(
    reso_ws.pdf("simPdf_TD"),
    obs_td,
    R.RooFit.ProtoData(dataset_td),
    # Binned=True,
    Extended=True,
    # Silence=True,
    FitOptions=dict(Save=True, PrintEvalErrors=1, NumCPU=10)
)


mcstudy.generate(5)

Here is the error log:
roomcstudy_errot.txt (7.3 KB)

Could you please help me correct or improve it?

Thanks!

Hi,

Thanks for the post. The code does not seem to be enough to reproduce the error, but the messages seem to be clear enough - Did you try to remove the duplicates as a start?

Cheers,
Danilo

Hello!
Thanks for the reply!

Regarding this, I am not sure how to remove duplicates here as I am using a simultaneous PDF of seven PDFs in different r bins, and they all have same variables as observables

obs_td = {
    reso_ws.var("deltat"), 
    reso_ws.var("deltaterr"), 
    reso_ws.var("r"),
    reso_ws.cat("tagflav"),
    reso_ws.var("mod_mbc"), 
    reso_ws.var("deltae"),
    reso_ws.var("csobdtprime")
}

data_set_td_0 = R.RooDataSet.from_pandas(data_td0, obs_td)
data_set_td_1 = R.RooDataSet.from_pandas(data_td1, obs_td)
data_set_td_2 = R.RooDataSet.from_pandas(data_td2, obs_td)
data_set_td_3 = R.RooDataSet.from_pandas(data_td3, obs_td)
data_set_td_4 = R.RooDataSet.from_pandas(data_td4, obs_td)
data_set_td_5 = R.RooDataSet.from_pandas(data_td5, obs_td)
data_set_td_6 = R.RooDataSet.from_pandas(data_td6, obs_td)

Dear @Danilo
Please find the minimal reproducer attached below.
toys_mini.py (1.3 KB)