RooDataSet reduce with a cut give different answer than draw

Dear experts,

My question is regarding the implementation of reduce with a cut.

I am attempting to fit a mass distribution with a cut on the daughter track chi^2. Let’s say I want to do a cut and count efficiency and compare to a fitted distribution efficiency. I find that applying reduce(Cut(mycut)) in roofit and simply doing “tree->Draw(myvar,mycut)” and counting events do not give the same answer.

I thought that this could be a binning issue, so I also compare the binned dataset with an unbinned one, and get yet again a different answer!

I have attached a simple test case which illustrates the problem. The output I get is:

test_hist[i]->Integral() = 2049
test_hist[i]->Integral() = 3326
test_hist[i]->Integral() = 4425
test_hist[i]->Integral() = 5300
test_hist[i]->Integral() = 5936
test_hist[i]->Integral() = 6472
test_hist[i]->Integral() = 6920
test_hist[i]->Integral() = 7253
test_hist[i]->Integral() = 7523
test_hist[i]->Integral() = 7767
[#1] INFO:Eval -- RooTreeDataStore::loadValues(mass_example) Ignored 802 out of range events
reduced_data->sumEntries() = 1691
data_ubinned_reduced->sumEntries() = 1942
reduced_data->sumEntries() = 3196
data_ubinned_reduced->sumEntries() = 3196
reduced_data->sumEntries() = 4070
data_ubinned_reduced->sumEntries() = 4272
reduced_data->sumEntries() = 5128
data_ubinned_reduced->sumEntries() = 5128
reduced_data->sumEntries() = 5638
data_ubinned_reduced->sumEntries() = 5754
reduced_data->sumEntries() = 6276
data_ubinned_reduced->sumEntries() = 6276
reduced_data->sumEntries() = 6628
data_ubinned_reduced->sumEntries() = 6714
reduced_data->sumEntries() = 7039
data_ubinned_reduced->sumEntries() = 7039
reduced_data->sumEntries() = 7260
data_ubinned_reduced->sumEntries() = 7306
reduced_data->sumEntries() = 7548
data_ubinned_reduced->sumEntries() = 7548

Have I done something wrong!?
rf_data_hist_test.cc (3.12 KB)