RooFit

New infrastructure for toy MC studies

A new class RooStudyManager has been added that is intended to replace the present RooMCStudy framework for toy MC studies on the time scale of ROOT release 5.26.

The present RooMCStudy is a small monolithic driver to execute 'generate-and-fit' style MC studies for a given pdf. It provides some room for customization, through modules inheriting from RooAbsMCStudyModule that can modify the standard behavior, but its design limits the amount of flexibility.

In the new RooStudyManager design, the functionality of RooMCStudy has been split into two classes: class RooStudyManager which manages the logistics of running repetitive studies and class RooGenFitStudy which implements the functionality of the 'generate-and-fit'-style study of RooMCStudy. The new design has two big advantages:

  1. Complete freedom in the design of studies, either by tailoring the behavior of RooGenFitStudy or by using another study module that inherits from RooAbsStudy, and the data that they return.
  2. More flexibility in the mode of execution. The new study manager can execute all study modules inlines, as was done in RooMCStudy), but also parallelized through PROOF (at present only PROOF-lite is support, as well as in batch
The code fragment below illustrates the use of the new study manager
  // Create workspace with p.d.f
  RooWorkspace* ww = new RooWorkspace("ww") ;
  ww->factory("Gaussian::g(x[-10,10],mean[-10,10],sigma[3,0.1,10])") ;

  RooGenFitStudy gfs ;
  gfs.setGenConfig("g","x",NumEvents(1000)) ;
  gfs.setFitConfig("g","x",PrintLevel(-1)) ;

  RooStudyManager mgr(*ww,gfs) ;

  mgr.run(1000) ; // execute 1000 toys inline
  mgr.runProof(10000,"") ; // execute 10000 toys through PROOF-lite

  gfs.summaryData()->Print() ;

Workspace and factory improvements

The workspace class RooWorkspace has been augmented with several new features

Improvements to functions and pdfs

Miscellaneous improvements data classes

Miscellaneous improvements other

RooStats

This release contains significant bug fixes and it is strongly reccomended to update to this version if using older ones.

Major Changes in LimitCalculator and HypoTestCalculator classes: usage of ModelConfig class

ProfileLikelihoodCalculator, LikelihoodInterval

HybridCalculator

new class HypoTestInverter

New class BayesianCalculator

MCMCCalculator

Improvements and Bug fixes