Skip to content

Commit

Permalink
Avoid including RooChi2Var.h in CMSSW
Browse files Browse the repository at this point in the history
The direct inclusion of the `RooChi2Var.h` header will soon result in a warning with ROOT `master`.

Users will be encouraged to always use `RooAbsPdf::createChi2()` instead of instantiating the chi-square-representing objects themselves.
  • Loading branch information
guitargeek committed Jan 6, 2023
1 parent 7e6539b commit dcbe848
Show file tree
Hide file tree
Showing 3 changed files with 16 additions and 13 deletions.
5 changes: 2 additions & 3 deletions Alignment/OfflineValidation/bin/FitWithRooFit.cc
Expand Up @@ -22,7 +22,6 @@
#include "RooAddModel.h"
#include "RooPolynomial.h"
#include "RooCBShape.h"
#include "RooChi2Var.h"
#include "RooMinuit.h"
#include "RooBreitWigner.h"
#include "RooFFTConvPdf.h"
Expand Down Expand Up @@ -112,7 +111,7 @@ class FitWithRooFit {
// Build the composite model
RooAbsPdf* model = buildModel(&x, signalType, backgroundType);

RooChi2Var chi2("chi2", "chi2", *model, *dh, RooFit::DataError(RooAbsData::SumW2));
std::unique_ptr<RooAbsReal> chi2{model->createChi2(*dh, RooFit::DataError(RooAbsData::SumW2))};

// Fit the composite model
// -----------------------
Expand All @@ -126,7 +125,7 @@ class FitWithRooFit {
// Fit with chi^2
else {
std::cout << "FITTING WITH CHI^2" << std::endl;
RooMinuit m(chi2);
RooMinuit m(*chi2);
m.migrad();
m.hesse();
// RooFitResult* r_chi2_wgt = m.save();
Expand Down
19 changes: 12 additions & 7 deletions DQMOffline/Trigger/plugins/GenericTnPFitter.h
Expand Up @@ -9,7 +9,6 @@
#include "RooGlobalFunc.h"
#include "RooCategory.h"
#include "RooSimultaneous.h"
#include "RooChi2Var.h"
#include "TFile.h"
#include "TH1F.h"
#include "TH2F.h"
Expand Down Expand Up @@ -320,9 +319,12 @@ namespace dqmTnP {
}
RooDataHist dataFail("fail", "fail", mass, fail);
RooDataHist dataPass("pass", "pass", mass, pass);
chi2 = (RooChi2Var("chi2Fail", "chi2Fail", pdfFail, dataFail, DataError(RooAbsData::Poisson)).getVal() +
RooChi2Var("chi2Pass", "chi2Pass", pdfPass, dataPass, DataError(RooAbsData::Poisson)).getVal()) /
(2 * pass->GetNbinsX() - 8);
chi2 =
(
std::unique_ptr<RooAbsReal> { pdfFail.createChi2(dataFail, DataError(RooAbsData::Poisson)) } -> getVal() +
std::unique_ptr<RooAbsReal> { pdfPass.createChi2(dataPass, DataError(RooAbsData::Poisson)) }
-> getVal()) /
(2 * pass->GetNbinsX() - 8);
if (chi2 > 3) {
efficiency.setVal(0.5);
efficiency.setError(0.5);
Expand Down Expand Up @@ -396,9 +398,12 @@ namespace dqmTnP {
}
RooDataHist dataFail("fail", "fail", mass, fail);
RooDataHist dataPass("pass", "pass", mass, pass);
chi2 = (RooChi2Var("chi2Fail", "chi2Fail", pdfFail, dataFail, DataError(RooAbsData::Poisson)).getVal() +
RooChi2Var("chi2Pass", "chi2Pass", pdfPass, dataPass, DataError(RooAbsData::Poisson)).getVal()) /
(2 * all->GetNbinsX() - 8);
chi2 =
(
std::unique_ptr<RooAbsReal> { pdfFail.createChi2(dataFail, DataError(RooAbsData::Poisson)) } -> getVal() +
std::unique_ptr<RooAbsReal> { pdfPass.createChi2(dataPass, DataError(RooAbsData::Poisson)) }
-> getVal()) /
(2 * all->GetNbinsX() - 8);
if (chi2 > 3) {
efficiency.setVal(0.5);
efficiency.setError(0.5);
Expand Down
Expand Up @@ -22,7 +22,6 @@
#include "RooAddModel.h"
#include "RooPolynomial.h"
#include "RooCBShape.h"
#include "RooChi2Var.h"
#include "RooMinimizer.h"
#include "RooBreitWigner.h"
#include "RooFFTConvPdf.h"
Expand Down Expand Up @@ -112,7 +111,7 @@ class FitWithRooFit {
// Build the composite model
RooAbsPdf* model = buildModel(&x, signalType, backgroundType);

RooChi2Var chi2("chi2", "chi2", *model, *dh, RooFit::DataError(RooAbsData::SumW2));
std::unique_ptr<RooAbsReal> chi2{model->createChi2(*dh, RooFit::DataError(RooAbsData::SumW2))};

// Fit the composite model
// -----------------------
Expand All @@ -126,7 +125,7 @@ class FitWithRooFit {
// Fit with chi^2
else {
std::cout << "FITTING WITH CHI^2" << std::endl;
RooMinimizer m(chi2);
RooMinimizer m(*chi2);
m.migrad();
m.hesse();
// RooFitResult* r_chi2_wgt = m.save();
Expand Down

0 comments on commit dcbe848

Please sign in to comment.