ERROR:Eval -- RooAbsReal::logEvalError() evaluation error when passing a PDF product

Hello experts,

I am a newbie and I am trying to test a zero counting experiment using a Bayesian Calculator from RooStats to evaluate an upper limit. The data are collected in eight measurement campaigns, so I have eight pdfs (called Model_i; i=0,…,8), obtained by multiplying three gaussian distributions, a poissonian likelihood and a uniform distribution assumed as Prior Pdf.

Model_i= background_Model_i * exposure_Model_i * efficiency_Model_i * likelihood * prior

I also plotted the distributions individually to check if they are correct.

The final pdf to be passed to Bayesian Calculator is the product of the 8 pdfs and I called it TotalModel=[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7].

When I try to perform a bayesian analysis, the output is an error deriving from a division between two zero values (NaN) as reported below, but I do not know how to fix it.

I’ve also read the other related topic, but their solution did not fix my issue.
I will be very grateful if you can help me.

Thank you,

DM

[#0] ERROR:Eval -- RooAbsReal::logEvalError([Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]) evaluation error, 
 origin       : RooGenProdProj::[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed][ compSetN=(Model_0,Model_1,Model_2,Model_3,Model_4,Model_5,Model_6,Model_7,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator_Int[]) compSetD=(Model_0,Model_1,Model_2,Model_3,Model_4,Model_5,Model_6,Model_7,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator_Int[observed]) intList=([Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator_Int[],[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator_Int[observed]) ]
 message      : function value is NAN
 server values: compSetN=(Model_0 = 0,Model_1 = 0,Model_2 = 0,Model_3 = 0,Model_4 = 0,Model_5 = 0,Model_6 = 0,Model_7 = 0,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator = 0,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator_Int[] = 0), compSetD=(Model_0 = 0,Model_1 = 0,Model_2 = 0,Model_3 = 0,Model_4 = 0,Model_5 = 0,Model_6 = 0,Model_7 = 0,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator = 0,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator_Int[observed] = 0), intList=([Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_numerator_Int[] = 0,[Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator_Int[observed] = 0)
[#0] ERROR:Eval -- RooAbsReal::logEvalError(total) evaluation error, 
 origin       : RooProdPdf::total[ Model_0 * Model_1 * Model_2 * Model_3 * Model_4 * Model_5 * Model_6 * Model_7 ]
 message      : p.d.f value is Not-a-Number
 server values: !pdfs=(Model_0 = 0,Model_1 = 0,Model_2 = 0,Model_3 = 0,Model_4 = 0,Model_5 = 0,Model_6 = 0,Model_7 = 0)
[#0] ERROR:Eval -- RooAbsReal::logEvalError(total) evaluation error, 
 origin       : RooProdPdf::total[ Model_0 * Model_1 * Model_2 * Model_3 * Model_4 * Model_5 * Model_6 * Model_7 ]
 message      : getLogVal() top-level p.d.f evaluates to NaN
 server values: !pdfs=(Model_0 = 0,Model_1 = 0,Model_2 = 0,Model_3 = 0,Model_4 = 0,Model_5 = 0,Model_6 = 0,Model_7 = 0)
[#0] ERROR:Eval -- RooAbsReal::logEvalError(nll_total_data) evaluation error, 
 origin       : RooNLLVar::nll_total_data[ paramSet=(Gamma,background mean,background sigma,efficiency mean,efficiency sigma,exp,exposure mean,exposure sigma,x_bkg,x_eff,x_expo) ]
 message      : function value is NAN
 server values: paramSet=(Gamma = 1e-31,background mean = 0.03,background sigma = 0.00936,efficiency mean = 0.18,efficiency sigma = 0.00342,exp = 91.91,exposure mean = 91.7,exposure sigma = 9.17,x_bkg = 0,x_eff = 0,x_expo = 0)
[#0] ERROR:Eval -- RooAbsReal::logEvalError(efficiency_Model_0) evaluation error, 
 origin       : RooGaussian::efficiency_Model_0[ x=x_eff mean=efficiency mean sigma=efficiency sigma ]
 message      : getLogVal() top-level p.d.f evaluates to zero
 server values: x=x_eff=0, mean=efficiency mean=0.18, sigma=efficiency sigma=0.00342
[#0] ERROR:Eval -- RooAbsReal::logEvalError(nll_total_data_with_constr) evaluation error, 
 origin       : RooAddition::nll_total_data_with_constr[ nll_total_data + nll_total_data_constr ]
 message      : function value is NAN
 server values: !set=(nll_total_data = nan,nll_total_data_constr = inf)
[#0] ERROR:Eval -- RooAbsReal::logEvalError(efficiency_Model_0) evaluation error, 
 origin       : RooGaussian::efficiency_Model_0[ x=x_eff mean=efficiency mean sigma=efficiency sigma ]
 message      : getLogVal() top-level p.d.f evaluates to zero
 server values: x=x_eff=0, mean=efficiency mean=0.18, sigma=efficiency sigma=0.00342
[#0] ERROR:Eval -- RooAbsReal::logEvalError(nll_total_data_with_constr) evaluation error, 
 origin       : RooAddition::nll_total_data_with_constr[ nll_total_data + nll_total_data_constr ]
 message      : function value is NAN
 server values: !set=(nll_total_data = nan,nll_total_data_constr = inf)
[#1] INFO:Eval -- BayesianCalculator::GetPosteriorFunction :  nll value nan poi value = 1e-31
[#1] INFO:Eval -- BayesianCalculator::GetPosteriorFunction : minimum of NLL vs POI for POI =  0 min NLL = nan
[#1] INFO:Minimization --  Including the following constraint terms in minimization: (prior,background_Model_0,exposure_Model_0,efficiency_Model_0)
[#1] INFO:Minimization -- The following global observables have been defined and their values are taken from the model: ()
[#1] INFO:NumericIntegration -- RooRealIntegral::init([Model_0_X_Model_1_X_Model_2_X_Model_3_X_Model_4_X_Model_5_X_Model_6_X_Model_7]_Norm[observed]_denominator_Int[observed]) using numeric integrator RooIntegrator1D to calculate Int(observed)
input_line_55:2:82: error: initializer list cannot be used on the right hand side of operator '+'
Double_t TFormula____id11703902407787631387(Double_t *x){ return TMath::Exp(-x[0]+{nan}) ; }
                                                                                 ^~~~~~
input_line_56:2:82: error: initializer list cannot be used on the right hand side of operator '+'
Double_t TFormula____id11703902407787631387(Double_t *x){ return TMath::Exp(-x[0]+{nan}) ; }
                                                                                 ^~~~~~
Error in <prepareMethod>: Can't compile function TFormula____id11703902407787631387 prototype with arguments Double_t*
Error in <TFormula::InputFormulaIntoCling>: Error compiling formula expression in Cling
Error in <TFormula::ProcessFormula>: "nan" has not been matched in the formula expression
Error in <TFormula::ProcessFormula>: Formula "exp(-x[0]+nan)" is invalid !
[#0] FATAL:InputArguments -- RooFormula 'likelihood_times_prior_product_total_prior' did not compile or is invalid.
Input:
	exp(-@0+nan)
Passed over to TFormula:
	exp(-x[0]+nan)
libc++abi: terminating due to uncaught exception of type std::runtime_error: RooFormula 'likelihood_times_prior_product_total_prior' did not compile or is invalid.
Input:
	exp(-@0+nan)
Passed over to TFormula:
	exp(-x[0]+nan)

May be @Jonas can help.

Just as update, the issue was fixed adjusting the range of x variable for each model. In this way, the total model is not zero.

This topic was automatically closed 14 days after the last reply. New replies are no longer allowed.