Dear experts,
I am using the RooFFTConvPdf to describe the detector resolution.
I found that the fit could easily converge with the root before v6.32.00.
But diverge for the v6.32.00.
Given the log
RooAbsMinimizerFcn: Minimized function has error status.
Returning maximum FCN so far (-inf) to force MIGRAD to back out of this region. Error log follows.
Parameter values: c0=-0.491664 mean=5800 n_CombBkg=358 n_argus=305.5 nsig=100 sigma=8.09227
RooAddPdf::model[ nsig * sigpdf_over_sigpdf_Int[mass] + n_CombBkg * CombBkg_over_CombBkg_Int[mass] + n_argus * Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] ]
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
getLogVal() top-level p.d.f evaluates to NaN @ !refCoefNorm=(mass = 5800), !pdfs=(sigpdf_over_sigpdf_Int[mass] = 0.0492992,CombBkg_over_CombBkg_Int[mass] = 0,Part_Rec_Bkg_over_Part_Rec_Bkg_Int[mass] = 7.66857e-19), !coefficients=(nsig = 100 +/- 0,n_CombBkg = 358 +/- 0,n_argus = 305.5 +/- 0)
... (remaining 18 messages suppressed)
Warning in <Minuit2>: MnHesse 2nd derivative zero for parameter c0 ; MnHesse fails and will return diagonal matrix
Info in <Minuit2>: MnHesse Done after 10.2978 ms
Warning in <Minuit2>: Minuit2Minimizer::Hesse Hesse failed - matrix is full but not positive defined
Warning in <Minuit2>: Minuit2Minimizer::Hesse 3
[#0] ERROR:Minimization -- RooMinimizer::calculateHessErrors() Error when calculating Hessian
[#0] ERROR:Minimization -- RooMinimizer: all function calls during minimization gave invalid NLL values!
[#1] INFO:Minimization -- RooAbsMinimizerFcn::setOptimizeConst: deactivating const optimization
RooFitResult: minimized FCN value: 1.98025e-13, estimated distance to minimum: 6.06841e-16
covariance matrix quality: Not calculated at all
Status : MINIMIZE=-1 HESSE=302
When I am looking at the ROOT Version 6.32 Release Notes , it said
I f you experience unexpected problems related to the likelihood evaluation, you can revert back to the old backend by passing
RooFit::EvalBackend("legacy")toRooAbsPdf::fitTo()orRooAbsPdf::createNLL().
By adding the argument RooFit::EvalBackend("legacy"), the proble was fixed.
And the fit result agree with different root version.
Is that under the expectation?
Here is the working example, I think it could be reproduced.
MWE_argus.C (4.1 KB)
- platform: AlmaLinux9
- root version: 6.30.08 and 6.32.00 from LCG in cvmfs
Many thanks.