I am trying to create the integral of the signal component of RooSumPdf in the Barlow-Beeston example given in root tutorials (here).

I create two ranges “window” (-20 to 20) and “window1” (-5 to 0) and the results of the signal integral are identical.

x.setRange(“window”,-20,20);

RooAbsReal * integral_sig1 = p_ph_sig1.createIntegral(RooArgSet(x), RooArgSet(x), “window”);

Double_t Asig1val = Asig1.getVal();

Double_t Asig1val_err = Asig1.getError();

Double_t integval_sig = integral_sig1->getVal();

Double_t dintegval_sig = integral_sig1->getPropagatedError(*result1, RooArgSet(x));

cout << "Asig1 : " << Asig1val << " +/- " << Asig1val_err << endl;

cout << "Signal Integral in window: " << integval_sig << " +/- " << dintegval_sig << endl;x.setRange(“window1”,-5,0);

RooAbsReal * integral_sig2 = p_ph_sig1.createIntegral(RooArgSet(x), RooArgSet(x), “window1”);

integval_sig = integral_sig2->getVal();

dintegval_sig = integral_sig2->getPropagatedError(*result1, RooArgSet(x));

cout << "Signal Integral in window1: " << integval_sig << " +/- " << dintegval_sig << endl;

Root output:

Asig1 : 0.850507 +/- 0.235778

Signal Integral in window: 80.026 +/- 11.3836

[#1] INFO:Eval – RooRealVar::setRange(x) new range named ‘window1’ created with bounds [-5,0]

Signal Integral in window1: 80.026 +/- 11.3836

What am I doing wrong here?

Thanks.

https://root.cern/doc/v622/rf709__BarlowBeeston_8C.html

test.C (4.0 KB)