Hi,
I am trying to do an extended simultaneous multi-dimensional fit over three samples. I have read the other posts regarding simultaneous fitting with different fitting ranges defined by RooCategory and setFitRange and am following the procedure there, ie, for oneof the fitted variables;
RooRealVar epm(“epm”, “M_{#eta’} (GeV/c^{2})”, 0.9, 1.0);
RooCategory modes(“modes”,“modes”);
modes.defineType(“1”, 1);
modes.defineType(“3”, 3);
modes.defineType(“5”, 5);
epm.setRange(“fitrange_1”, 0.93, 0.985);
epm.setRange(“fitrange_3”, 0.9, 1.0);
epm.setRange(“fitrange_5”, 0.945 , 0.97);
RooFitResult *fitres1 = Sim_Charged_PDF.fitTo(*data, Extended(kTRUE), Range(“fitrange”), SplitRange(kTRUE));
The three categories are all in the RooDataSet *data.
There’s two problems; first, the setRange works but the code returns literally millions of lines saying
RooAbsRealLValue::inFitRange(epm): value 0.915723 rounded up to min limit 0.945
RooAbsRealLValue::inFitRange(epm): value 0.980469 rounded down to max limit 0.97
when all the data points in each catergory already lie within the stated ranges, and there are only of order 3000 data points. It seems to be rounding all points to all ranges regardless of category. This slows down my code ridiculously, but the fit is performed within the given ranges. Is there anything I can do to get rid of this?
The second problem is also to do with the ranges. The fits are performed over the ranges specified, but I think the normalization is calculated over the entire region. The code returns:
RooRealVar::setRange(epm) new range named ‘fitrange_3’ created with bounds [0.9,1]
RooRealVar::setRange(epm) new range named ‘fitrange_5’ created with bounds [0.945,0.97]
RooRealVar::setRange(epm) new range named ‘fitrange_1’ created with bounds [0.93,0.985]
RooRealVar::setRange(epm) new range named ‘NormalizationRange’ created with bounds [0.9,1]
Is there a way to change the normalization range in the same way as the fit range?
Thank you for any help you can give,
Robin