Skip to content

CombineHarvester May 2015 Updates

Compare
Choose a tag to compare
@ajgilbert ajgilbert released this 30 May 15:54
· 148 commits to master since this release

Interface-breaking changes

  • CombineHarvester::ExtractPdfs and CombineHarvester::AddWorkspace arguments have changed (e9b672a) as part of a larger re-write of the RooFit workspace, pdf and parameter import code (see below). See the new arguments here.
  • The functions ParseTable and ScaleProcessRate used for scaling processes to the SM cross sections have been removed in favour of a simpler workflow using a new TGraphFromTable function that is also usable in python. See CombineTools/test/SMLegacyExample.cpp for the new usage.

New features

  • Now possible to add systematics in the python interface (aa72444). Interface is similar to the C++ version, see docs here for details.
    • With this, and a few other changes, the python interface is now mostly feature-complete. A version of SMLegacyExample.cpp is available as a python script in CombineTools/scripts/SMLegacyExample.py.
  • Moved bin-by-bin and merging code to a standalone class: ch::BinByBinFactory, to make it easier to extend in the future without having to mess around with CombineHarvester internals (fea10a7). Existing class methods will be removed in the future.
  • New CopyTools.h provides functions for cloning processes and systematics (e07aac2). Also available in the python interface.
  • Function ch::ParseCombineWorkspace can populate a CombineHarvester instance directly from a combine workspace (1ef74e5).
  • Added CombineHarvester methods to insert new objects directly (41f7fce)
    • InsertObservation, InsertProcess and InsertSystematic make a copy of the supplied object and adds it to the appropriate collection. The main purpose of the these functions is for building high-level tools such as BinByBinFactory that can create new entries.
  • Can now parse (and then write) datacards containing param lines that give a fixed parameter range (19d8499)
  • Better support for importing multiple workspaces with the same name, e.g. in the hzz cards (eb8b964, e9b672a). AddWorkspace now has an optional second argument, bool can_rename that allows CombineHarvester to rename the workspace on-the-fly if another with the same name has already been imported.

Bug fixes

  • Internal RooFit parameter<->pdf mapping was broken when the data and pdf were in separate workspaces, causing a large memory leak. This is now fixed by avoiding the RooAbsPdf::getParameters method (19d8499)
  • CombineHarvester::ParseDatacard is now smarter about opening the input root files, making it less likely to run into os limits on the number of open files (e9b672a)