RooGenericPdf verbosity

Hi

I was requiring a continuous Poisson PDF and since the classical RooPoisson generates only integer I implemented the following RooGenericPdf:
RooGenericPdf SbGL2_prior( “SbGL2_prior”,“SbGL2Prior” , “TMath::Poisson( SbGL2,SbGL2mean )” ,RooArgList(SbGL2,SbGL2mean));

It works perfectly fine except that if I generated 1000 entries I got 1000 times the following message:

[#1] INFO:NumericIntegration – RooRealIntegral::init(SbGL2_prior_Int[SbGL2]) using numeric integrator RooIntegrator1D to calculate Int(SbGL2)

which slows drastically down the program execution.

I tried to include “TError.h” and then
gROOT->ProcessLine(“gErrorIgnoreLevel = 1;”);

but it still print the message.

I have to run several thousand of toys with these PDF and it would help a lot if I could get rid of this output.

Many thanks,

Mathieu

Hello,

you can control the RooFit verbosity through:

RooFit::PrintLevel(int code);

not sure, but I think the codes are:

enum MsgLevel { DEBUG=0, INFO=1, PROGRESS=2, WARNING=3, ERROR=4, FATAL=5 } ;

Regards,

– Gregory

Hi,

Thanks for your reply.
Unfortunatly it didn’t solved the problem. I tried to add this line at the beginning of my code RooFit::PrintLevel(code); and I get the same problem with all the values of “code” I tried (1,2,3,4,5).

Any other idea?
regards,
Mathieu

does it improve the speed if you run in compiled mode and redirect the errors in a logfile or /dev/null?

I run in compiled mode and redirect the output to a log file but the verbosity keeps making the code very slow.
Any idea would really help me a lot,
Thanks,

Mathieu

Hello,

  1. If not already, try:

model->generate(*observable,RooFit::Extended(),Verbose(false));

  1. try (change probably to RooFit::FATAL)

RooFitGlobalKillSentry silence(verbose <= 1 ? RooFit::WARNING : RooFit::DEBUG);

  1. the only other solution I see you could apply yourself would then involve an edit to the source code and recompile the ROOT package (or at least just the one class you are interrested in)

Maybe Wouter could comment further on the issue otherwise.

Cheers,

– Gregory

Hi Did you try putting “RooMsgService::instance().setGlobalKillBelow(RooFit::FATAL);” into the code?

Hi

I included the RooGenericPdf that was returning all this messages in a class I wrote myself from RooHybridCalculatorOriginal and the RooHybridCalculatorOriginal get rid of the verbosity ( I couldn’t find how).
So my problem is solved.
Nevertheless I’ll try to include the line you proposed in the former version of my code and see if it kills the verbosity.

I’ll keep you updated of the results,

Mathieu