diff --git a/roofit/roofitcore/src/RooAbsPdf.cxx b/roofit/roofitcore/src/RooAbsPdf.cxx index 5503207ad0a0d..1cd9151f166a8 100644 --- a/roofit/roofitcore/src/RooAbsPdf.cxx +++ b/roofit/roofitcore/src/RooAbsPdf.cxx @@ -2146,7 +2146,21 @@ RooPlot* RooAbsPdf::plotOn(RooPlot* frame, RooLinkedList& cmdList) const scaleFactor *= rangeNevt/nExpected ; } else { - scaleFactor *= frame->getFitRangeNEvt()/nExpected ; + // First, check if the PDF *can* be extended. + if (this->canBeExtended()) { + // If it can, get the expected events. + const double nExp = expectedEvents(frame->getNormVars()); + if (nExp > 0) { + // If the prediction is valid, use it for normalization. + scaleFactor *= nExp / nExpected; + } else { + // If prediction is not valid (e.g. 0), fall back to data. + scaleFactor *= frame->getFitRangeNEvt() / nExpected; + } + } else { + // If the PDF can't be extended, just use the data. + scaleFactor *= frame->getFitRangeNEvt() / nExpected; + } } } else if (stype==RelativeExpected) { scaleFactor *= nExpected ;