Roofit: RooChebychev.cxx:141 Assert error

Dear expert,

I’m doing a fit with a Gaussian and a Chebychev pdf with:
ROOFITSYS=/cvmfs/cms.cern.ch/slc6_amd64_gcc481/lcg/roofit/5.34.18-cms8/

Sometimes I got the following error:
[#1] INFO:Eval – RooRealVar::setRange(x) new range named ‘sobRange’ created with bounds [0.025551,0.199345]
cmsRun: roofit/src/RooChebychev.cxx:141: virtual Double_t RooChebychev::analyticalIntegral(Int_t, const char*) const: Assertion `xminfull <= _x.min(rangeName) && _x.min(rangeName) <= xmaxfull’ failed.
Abort

I runned this code several time and it is the first time I got this problem. Do you know why?

Thanks a lot,
Luca

Hello,

Recently a bug fix has been applied in the RooChebyshev class and it is related to fitting in different ranges.
Can you please try with one latest ROOT version (>= 5.34.22 ) ?

Best Regards

Lorenzo

Hello Lorenzo,

I tried with the version you suggest and I actually see the same problem!
It seems related to the range, but I never saw it before.

Thanks,
Luca

Hi Luca,

Can you then please post your workspace (model and data set) and a simple program reproducing this asset, so I can investigate it

Thank you

Lorenzo

Dear Lorenzo,
please find attached a macro where I pasted the part of the code that will reproduce the error.
(To launch it I load the roofit library
gROOT->ProcessLine(".include /afs/cern.ch/cms/slc6_amd64_gcc481/lcg/roofit/5.34.22-cms4/include/");
and I execute it with .x FitPi0.cc)

The input file I use is here:
dropbox.com/s/glmk57ez07z6z … .root?dl=0
I hope this can help you.

Thanks a lot,
Luca
FitPi0.cc (5.16 KB)

Hi,

Thank you for the code and the data. I have executed the code in the latest 5.34 and 6 version of ROOT, and they both seem to work fine. I did not get any Assert error.
Which version have you tried ?

Best Regards

Lorenzo

Hi,
when I run the macro I load at the beginning:
gROOT->ProcessLine(".include /afs/cern.ch/cms/slc6_amd64_gcc481/lcg/roofit/5.34.22-cms4/include/");
(but I tried different versions as 5.34.18-cms8, 5.34.07-cms3 etc…)
and my root is:
ROOTSYS=/cvmfs/cms.cern.ch/slc6_amd64_gcc481/lcg/root/5.34.18-cms9/
I don’t see any root 6 installed in my working area.

Thanks a lot,
Luca

Hi,

I see you have 6 versions of ROOT under

/afs/cern.ch/cms/slc6_amd64_gcc491/lcg/root

In principle 5.34.22 should be fine, but the fact that you observe the assert it is is not. Try then with the 6 version

Best Regards

Lorenzo

Dear Lorenzo,

I just tried with:
ROOFITSYS=/cvmfs/cms.cern.ch/slc6_amd64_gcc491/lcg/roofit/6.02.00-cms/
ROOTSYS=/cvmfs/cms.cern.ch/slc6_amd64_gcc491/lcg/root/6.02.00-cms4
and I see the same error.
Maybe I’am not setting correctly the right root version?

I’m setting the root version with
setenv ROOFITSYS /cvmfs/cms.cern.ch/slc6_amd64_gcc491/lcg/roofit/6.02.00-cms/
setenv ROOTSYS /cvmfs/cms.cern.ch/slc6_amd64_gcc491/lcg/root/6.02.00-cms4
plus in my rootLogon I have:
gROOT->ProcessLine(".include /afs/cern.ch/cms/slc6_amd64_gcc491/lcg/roofit/6.02.00-cms/include/");

But I still see the same error when running the macro.

Thanks,
Luca

Which version prints when you just type “root” ?

You need to set also the $PATH and $LD_LIBRARY_PATH to point to the right version

Dear Lorenzo,
You are right about the version.
In release CMSSW_7_4_0_pre6, where the root version used by default is 5.34.22-cms3 everything work without any problem.
In release CMSSW_7_2_0_pre7 the root version is 5.34.18 and give the error I reported.
If I change the root version in CMSSW_7_2_0_pre7 I got anyway the error, and this suggest me I’m not changing correctly the root version.
I explain you how I change it:
0) I type root and i get the 5.34.18 version

  1. I change the enviromental variables:
    setenv ROOTSYS /cvmfs/cms.cern.ch/slc6_amd64_gcc481/lcg/root/5.34.22-cms3
    setenv ROOFITSYS /cvmfs/cms.cern.ch/slc6_amd64_gcc481/lcg/roofit/5.34.22-cms3
    setenv PATH $ROOTSYS/bin:$PATH
    setenv LD_LIBRARY_PATH $ROOTSYS/bin:$LD_LIBRARY_PATH
  2. I type root and I get the 5.34.22-cms3 version (so it should be ok)

But then I got:

  1. A crash if I open root and do (see attached file):
    gROOT->ProcessLine(".include /afs/cern.ch/cms/slc6_amd64_gcc481/lcg/roofit/5.34.22-cms3/include/")
    .x macro
  2. The same error as before if running the actual code that does the fit

Thanks a lot,
Luca
crash.txt (8.02 KB)

Hi ,
I think you are mixing libraries, for this you get the crash. Since roofit is provided in a separate place,
you should add also $ROOFITSYS/lib in the LD_LIBRARY_PATH (and use $ROOTSYS/lib)

setenv LD_LIBRARY_PATH $ROOTSYS/lib:$ROOFITSYS/lib:$LD_LIBRARY_PATH

Otehrwise I think in Scram there is a way to change the ROOT and RooFit version of a CMSSW release. I did in the past, by changing the configuration files, but I can’t remember right now exactly how to do it

Lorenzo

If I do so I get:
----- Begin Fatal Exception 17-Feb-2015 17:58:40 CET-----------------------
An exception of category ‘FatalRootError’ occurred while
[0] Constructing the EventProcessor
[1] Constructing service of type InitRootHandlers
Additional Info:
[a] Fatal Root Error: @SUB=TUnixSystem::Load
version mismatch, /cvmfs/cms.cern.ch/slc6_amd64_gcc481/cms/cmssw/CMSSW_7_2_0_pre7/lib/slc6_amd64_gcc481/pluginDataFormatsWrappedStdDictionariesCapabilities.so = 53418, ROOT = 53422

Ok anyway I think now is just matter of selecting the right root version ina coherent way…

Thanks a lot,
Luca