FeldmanCousins too slow

Dear expert

I am new to RooFit/RooStats and trying to get a confidence interval from FeldmanCousins method. I did a 4D fit with my own complex PDF, with analytical integral. To get the upper limit of 3 interesting parameters, I tried FeldmanCousins and MCMCCalculator. The FeldmanCousins method is very slow, taking several days to process 20 steps over 1000. Is there any ways to make it faster.

Thanks,

Haofei

Hi,

The problem is in that every toy that is generated in the FC methods, needs to be fitted in order to compute the profile likelihood ratio. This can be very slow, especially if your model is complicated and requires complex normalisation integral to be computed.
It is possible, although not common, that in some cases some un-necessary computations are done and some simple model modifications might speed up the calculations.
If you send me your workspace, I could have a look to speed it up. Otherwise, the alternative is to use the asymptotic results, based on the likelihood. Are your 3 parameters of interests close to a boundary ? In that case the asymptotic formulae are maybe not valid or need to be corrected ?

Best Regards

Lorenzo

Hi Lorenzo

Thank you. The workspace is uploaded, as well as the code doing the hypothesis test.

    RooArgSet parameters(D0, Dpara, Dperp);
    RooArgSet myObservables(pipi, kk, plane, f0mass, phimass);
    RooArgSet allparameters = workspace->allVars();
    allparameters.remove(myObservables, kTRUE, kTRUE);
    allparameters.remove(parameters, kTRUE, kTRUE); 
    ModelConfig modelConfig;
    modelConfig.SetWorkspace(*workspace);
    modelConfig.SetPdf(limit);
    modelConfig.SetNuisanceParameters(allparameters);
    modelConfig.SetParametersOfInterest(parameters);
    RooStats::FeldmanCousins fc(*data,modelConfig);
    fc.SetConfidenceLevel(0.9);
    fc.UseAdaptiveSampling(true);
    fc.FluctuateNumDataEntries(false); // number counting analysis: dataset always has 1 entry with N events observed
    fc.SetNBins(10);

I can send you the whole code if you want.

Cheers!

Haofei
rho_limit.root (368 KB)

Hi ,

Thank you, but I would need all the code for trying it. The workspace contains some user-defined classes and I need their code

Best Regards

Lorenzo

Dear Lorenzo

Thank you! The files are larger than 2MB. Please find the FC.tar in my public workspace: /afs/cern.ch/work/h/hluo/public. Please try to complie the code first.

Cheers!

Haofei

Thank you for the link of the code.

It seems a bit complicated. Given the workspace you have published, can you please tell me which user-defined classes I need to use, in order to be able to read and run your workspace.
I can the use the standard tools from RooStats to test it.

Best Regards

Lorenzo

Hi Lorenzo

Thank you for your quick reply. The main code is the angular.C. The user-defined classes are in the src/ directory. You need the class Limit_Angular which inherited from the LimitPdf class.

Best wishes

Haofei