// problem with createIntegral rootForum 20507 #include #include #include void problemDemo() { RooRealVar x ("x", "invariant mass", 1100, 1800, "MeV^c{2}"); RooRealVar E ("E", "center-of-mass energy", 2000, 2050, "MeV^c{2}"); RooRealVar a ("a", "composition parameter a", 1, 1, 1); RooRealVar b ("b", "composition parameter b", 1, 1, 1); RooGenericPdf demo ("demo", "problem demo", "a*x^2*E + b*x^3/E", RooArgList(x, E, a, b)); // Fit function to data... // Integrate complete function, i.e. x^2*E + x^3/E auto intTotal = demo.createIntegral(RooArgSet(x, E)); std::cout << "Total Integral: " << intTotal->getVal() << std::endl; a.setRange(0.0, 1.0); b.setRange(0.0, 1.0); b.setVal(0.0); // Integrate only x^2*E auto intA = demo.createIntegral(RooArgSet(x, E)); std::cout << "A Integral: " << intA->getVal() << std::endl; a.setVal(0.0); b.setVal(1.0); // Integrate only x^3/E auto intB = demo.createIntegral(RooArgSet(x, E)); std::cout << "B Integral: " << intB->getVal() << std::endl; //a.setVal(1.0); }