Prooflite crash with StandardHypoTestInvDemo

Dear experts,
I’m using StandardHypoTestInvDemo to run limits, it works fine with asymptotic and also for toys. However when trying to run with toys with the useProof = True options I experience a crash.
I’m using Freq calculator (option 0) with Profile Likelihood one sided (option 3)

These are the other options I’m using:

bool plotHypoTestResult = true;          // plot test statistic result at each point
bool writeResult = true;                 // write HypoTestInverterResult in a file
TString resultFileName;                  // file with results (by default is built automatically using the workspace input file name)
bool optimize = true;                    // optmize evaluation of test statistic
bool useVectorStore = true;              // convert data to use new roofit data store
bool generateBinned = true;             // generate binned data sets
bool noSystematics = true;              // force all systematics to be off (i.e. set all nuisance parameters as constant to their nominal values)
double nToysRatio = 2;                   // ratio Ntoys S+b/ntoysB
double maxPOI = -1;                      // max value used of POI (in case of auto scan)
bool useProof = true;                    // use Proof Lite when using toys (for freq or hybrid)
int nworkers = 0;                        // number of worker for ProofLite (default use all available cores)
bool enableDetailedOutput = true;       // enable detailed output with all fit information for each toys (output will be written in result file)
bool rebuild = false;              // re-do extra toys for computing expected limits and rebuild test stat
                                         // distributions (N.B this requires much more CPU (factor is equivalent to nToyToRebuild)
int nToyToRebuild = 100;                 // number of toys used to rebuild
int rebuildParamValues=0;                // = 0   do a profile of all the parameters on the B (alt snapshot) before performing a rebuild operation (default)
                                         // = 1   use initial workspace parameters with B snapshot values
                                         // = 2   use all initial workspace parameters with B
                                         // Otherwise the rebuild will be performed using
int initialFit = 0;                     // do a first  fit to the model (-1 : default, 0 skip fit, 1 do always fit)
int randomSeed = -1;                     // random seed (if = -1: use default value, if = 0 always random )
                                         // NOTE: Proof uses automatically a random seed
int nAsimovBins = 0;                     // number of bins in observables used for Asimov data sets (0 is the default and it is given by workspace, typically is 100)

bool reuseAltToys = true;                // reuse same toys for alternate hypothesis (if set one gets more stable bands)
double confidenceLevel = 0.95;            // confidence level value
std::string massValue = "";              // extra string to tag output file of result
std::string  minimizerType = "";                  // minimizer type (default is what is in ROOT::Math::MinimizerOptions::DefaultMinimizerType()
int   printLevel = 0;                    // print level for debugging PL test statistics and calculators
bool useNLLOffset = true;               // use NLL offset when fitting (this increase stability of fits)

I experience this crash:

[#0] PROGRESS:Generation -- Test Statistic on data: 0
[#1] INFO:InputArguments -- Using a ToyMCSampler. Now configuring for Null.
[#0] PROGRESS:Generation -- RooStudyManager::runProof() opening PROOF session
 +++ Starting PROOF-Lite with 4 workers +++
Opening connections to workers: OK (4 workers)                 
Setting up worker servers: OK (4 workers)                 
PROOF set to parallel mode (4 workers)
[#0] PROGRESS:Generation -- RooStudyManager::runProof() sending work package to PROOF servers
[#0] PROGRESS:Generation -- RooStudyManager::runProof() starting PROOF processing of 4 experiments

 *** Break *** segmentation violation
Aborted (core dumped)

Full stack trace attached:
crash.txt (11.7 KB)



I could not reproduce the problem with the current ROOT master.
I am trying now with the 6.06 branch.
Could you please say which OS/gcc you are running on?
And also what root-6.06.02_withfix means?

G Ganis


And also what root-6.06.02_withfix means?

it is a local version of ROOT with a fix I’m using on my laptop, however I experience the same problem on a machine with ROOT setup from ATLAS cvmfs, I’ll send the info of that machine that is more standard.
The machine is (on my laptop I’ve ubuntu though):
LSB Version: :base-4.0-amd64:base-4.0-noarch:core-4.0-amd64:core-4.0-noarch
Distributor ID: Scientific
Description: Scientific Linux release 6.5 (Carbon)
Release: 6.5
Codename: Carbon

I’m using this root (6.04/14) which is localSetupROOT without options:

with this gcc (4.9.3):

the macro works with toys without using the prooflite option

full log:
crash.txt (158.0 KB)


On lxplus009 (Scientific Linux CERN SLC release 6.8 (Carbon)), using

$ source /cvmfs/
$ source /cvmfs/

and the attached version of StandardHypoTestInvDemo.C (which should have your settings), I do not get any crash (see output.txt).
How do you set your environment?

G Ganis

StandardHypoTestInvDemo.C (43.1 KB)
output.txt (28.9 KB)


How do you set your environment?

I just use localSetupROOT.
If I use the ws generated by the macro it works (just calling StandardHypoTestInvDemo()), but if I use the actual ws of the analysis it crashes (event though it works without prooflite). It is a workspace with some embedded class code. I can send the ws and the steering macro I’m using (via e-mail).



Sorry, I do not understand:

are you saying that the problem cannot be reproduced with StandardHypoTestInvDemo()?

Yes, please. At least a minimal reproducer.

G Ganis