Custom PDF class not loading using RooStats::ProofConfig

Hello experts,

I am trying to use RooStats::ProofConfig for hypothesis testing with many toys. My RooWorkspace has a few custom classes in it and when I run the code, the connection to the PROOF server opens successfully (lite or full PROOF), but I get errors. A look at the log file shows lines like:

13:28:50 10807 Wrk-0.0 | Error in TClass::Load: dictionary of class myDSCBPdf not found

What can I do to resolve this? Unfortunately, RooStats::ProofConfig provides no direct access to the the TProof object, so the other solutions I have found online will not work.

Thanks, in advance!

-Ben

Hi,
have you tried to import the class code in the RooWorkspace using RooWorkspace::importClassCode ?

Lorenzo

Hello,

I would like to revive this issue since I am facing the same problem. I am using ProofConfig with the FrequentistCalculator in RooStats, to calculate some upper limits. This works fine when I use classes that are built into ROOT, but when I try to use a fit where I have used a custom class (RooHypatia2), I run into the same issue as @kaplan above.

@Ganis had suggested using
gProof->Load("<full-path-to>/RooHypatia2_cpp.so");
but this does not work because ProofConfig does not have access to the gProof object. I also tried the solution @moneta suggested above while making the input workspace, but it still doesn’t work.

I have attached the .cpp and .h files for the custom class (RooHypatia2.cpp & RooHypatia2.h),
my input workspace (myWS.root), the log file from running StdHypoTestInvDemo and the PROOF log file (worker-0.0.txt), and the script that I use to run the Hypo Inverter (StandardHypoTestInvDemo_Hypatia.C). The script is just a modified version of the tutorial script.

The command I use to run the script is

root -l 'StandardHypoTestInvDemo_Hypatia.C+("myWS.root","w","ModelConfig","bkgOnlyModel","combData",0,3,true,20,0,500,100,false,0)'

I would appreciate any advice on getting PROOF to work with this custom class.
Thanks in advance,
Arvind.

RooHypatia2.cpp (6.0 KB) RooHypatia2.h (1.9 KB) StandardHypoTestInvDemo_Hypatia.C (43.4 KB)
myWS.root (728.6 KB)
testing.txt (39.9 KB)
worker-0.0.txt (12.9 KB)

Hi,

I think the only solution for this is providing access to the TProof object in order to load the dictionary. We are planning to not develop new features for proof and we will replace (in case of prooflite) for an alternative multi-process implementation.

I would suggest you either to patch your root to add this extra classes in your root build or patch ProofConfig to get access to gProof.

Can you also please open a JIRA item for this issue so we can try to fix it

Best

Lorenzo