Hi there,
I think I do have some kind of followup to this solved issue:
The questions concerns the Range() behaviour of RooFit and its impact on analysis results and sWeights.
Imagine some mass-distribution in a RooDataSet with a defined ‘fit-range’ as basis. The pdf is already fit. And with the same pdf the range-patched RooStats::SPlot is run.
Now I enrolled some tests
If I use ‘reduce()’ of RooAbsPdf on my dataset before my initial fit I get different results. Shouldn’t this have no impact on the result, as a defined range is basically the same as the cut dataset? This leads me to the conclusion that events outside of the defined fit-range do have a strong impact on the fit that should only be enrolled inside the range.
Checking my sWeights in the output dataset for events outside the defined fit-region of the RooStats::SPlot I see weights deviating from 0. I’m not sure if I might have mistaken the theory, but wouldn’t I expect them to be forced to 0 as my fitted function could strongly deviate from the dataset outside the fit-range?
Testing both previous quotes on a sub-range of the fit-range strangely results into the same fit-results and sWeights
UPDATE: How should I handle weights for events outside the fit-region?
Hi Stephan,
no, I think my problem was more on the user side. I’m using a RooSimultaneous to fit. At some point I must have come across to fit like such:
pdf.fitTo(…, RooFit::SplitRange(), …)
I just checked with the example fit of the tutorials (https://root.cern.ch/root/html/tutorials/roofit/rf501_simultaneouspdf.C.html) but this SplitRange() option is not coded there. Not sure when I picked this up, but this somehow let the fit ignore the given range via the ‘Range()’ option.