Simultaneous Fit in presence of small event numbers


Trying to perform a fit of a RooSimultaneousPdf over a RooDataSet with a very low number of events I encountered a problem, which concerns the role of the categories that have no event in the dataset.

I have 3 categories: 1,2,3. In presence of, for example, 1 event, 2 categories of events must be empty. I noticed that calculating the value of the total negative loglikelihood on such a dataset is completely equivalent to calculate the value of the negative loglikelihood obtained with the simple pdf 1.
In other words, the information brought in by the fact that 2 categories of events are empty is not reflected in the total likelihood.

Is there a standard procedure to include this info?



I wrote a minimal macro to reproduce the problem.

// let's build a gaussian

RooRealVar x("x","",0,-10,10);
RooRealVar m("m","",0);
RooRealVar s("s","",1);

RooGaussian g("gaussian","",x,m,s);
RooRealVar n("norm","",1);
RooExtendPdf ge("gaussianext","",g,n);

// A catagory

RooCategory c("c","c");

RooArgList model_vars(x,c);

// Build dataset

RooDataHist data("datahist","",model_vars);

// the value of the Nll

RooNLLVar nll("nll","",ge,data,true);
cout << nll.getVal() << endl;

// the same but with a roosimultaneous

RooSimultaneous sim("sim","",ge,c);
RooNLLVar nll_sim("nll_sim","",sim,data,true);
cout << nll_sim.getVal() << endl;

the output is the following:

[#1] INFO:Optimization – RooAbsOptTestStatistic::ctor(nll) optimizing internal clone of p.d.f for likelihood evaluation.Lazy evaluation and associated change tracking will disabled for all nodes that depend on observables
[#1] INFO:Optimization – RooAbsArg::optimizeCacheMode(gaussianext) nodes (gaussianext,gaussian) depend on observables, changing cache operation mode from change tracking to unconditional evaluation
[#1] INFO:Fitting – RooAbsTestStatistic::initSimMode: state 0 has no data entries, no slave GOF calculator created

It seems to me that when the RooSimultaneous is in the game something happens. Can anybody help?



(Just for the record on this posting thread as there were later private mail exchanges)

This issue was traced back to a bug in RooAbsOptTestStatistic. A fix will be included in the first ROOT 5.21 release