Skip to content

Releases: cms-analysis/CombineHarvester

v3.0.0

22 Jul 15:22
75e7c7d
Compare
Choose a tag to compare

What's Changed

Full Changelog: v2.1.0...v3.0.0

New pre-release v3.0.0-pre1 for CMSSW_14_1_X

19 Jun 11:32
5144fd6
Compare
Choose a tag to compare

This release brings compatibility with the CMSSW_14_1_X series and several fixes and improvements for datacard parsing.

Known issues

  • Datacards using RooDataHist objects might not be parsable with root v6.30. Please report any issues.

What's Changed

Full Changelog: v2.1.0...v3.0.0-pre1

New release v2.1.0

26 Jul 15:09
f8dbbb2
Compare
Choose a tag to compare
  • Replace ROOT.Double with ctypes.c_double in #300
  • Update plotting.py in #302
  • Updates in post-fit plotting: add the mean yield calculation in post-fit sampling in #298
  • Impacts update: add help message for --redefineSignalPOIs option in #304

v2.0.0 for CMSSW_11_3_X

25 Jan 12:15
Compare
Choose a tag to compare
  • boost.python replaced with cppyy (python interface to CombineHarvester and related classes remains the same)
  • Support for python3
  • Improved impacts plotting: proper pull definition now shown by default, options for sorting by pull, constraint or impact, optional summary page (--summary)

February Updates

09 Feb 16:38
Compare
Choose a tag to compare

New features

  • AutoRebin class. Modifies the binning of the shapes in a CH instance using pre-defined algorithms and thresholds on the minimum bin content and uncertainty. For usage and available algorithms see the documentation here. Note that this has only been tested in the context of the MSSM analysis and will likely evolve in the future. Can be used in both the C++ and python interfaces.
  • The reading and writing of counting experiment datacards is now supported, and a new overloaded WriteDatacard method has been added which requires only the name of the text file and not a ROOT file. (#23)
  • The reading, writing and creation of rateParam datacard directives is now supported. These make it simple to introduce new floating parameters for scaling the backgrounds, and in particular for tying together the normalisations of processes in different categories. These terms can also be written as functions of other parameters. A new example script has been added to illustrate the usage in CH. See the combine twiki for more information on these rateParam terms. (#24)
  • Nuisance parameter groups are now supported in CombineHarvester. These are special lines in the datacard which group sets of parameters under a common label, which can then be used to freeze/unfreeze the whole group in combine. See further details on the combine twiki. Group information in the datacards is parsed and written automatically, and the methods SetGroup and RemoveGroup have been added for creating new groups or removing parameters from groups using lists of regular expressions. (#25).
  • Several updates to the combineTool.py script, mostly to support operating on multiple datacards/workspaces in one go. A new documentation page has been added to explain these features in more detail (link).
    • New T2W method that can do the combineCards.py and text2workspace.py steps and infer the mass value from the name of the enclosing directory.
    • Support for multiple datacards in the EnhancedCombine mode combineTool.py, again with the -m option set automatically.
    • CollectLimits can create multiple output files based on the directory structure of the combine output files
  • Large rewrite of plotLimits.py to support traditional green/yellow band expected limits as well as individual limit comparisons. Basic usage is covered in the new documentation page linked in the previous item.
  • Added an example script for the usage of the ParseCombineWorkspace function, CombineTools/scripts/parseCombineWorkspaceExample.py (2222e09)

Bug fixes

  • Histograms written into TFiles by CombineHarvester and PostFitShapes would often have a different TObject name than the key used to write the object into the directory. The function doing the writing now ensures the key and object name are the same. (c56242b)

December Updates

05 Jan 22:10
Compare
Choose a tag to compare

The main changes in this update are improvements to the combineTool.py script, new programs to recreate datacards for run 1 analyses utilising the RooMorphingPdf, and the development of the MSSM physics model to support the corresponding signal processes. More details are given below:

New features

  • Set of programs to recreate or modify run 1 datacards for BSM Higgs analyses. These have been added to a new Run1BSMComb sub-package.
    • MorphingMSSMUpdate.cpp: MSSM H->tautau update analysis
    • MorphingMSSMLegacy.cpp: MSSM H->tautau legacy publication (mu-tau only, just for testing)
    • MorphingHhh.cpp and MorphingAZh.cpp: H->hh and A->Zh analyses from HIG-14-034
    • AdaptHbb.cpp: modifies existing MSSM H->bb cards to conform to standard process naming and normalisation conventions
    • AdaptChargedHiggs.cpp: modifies existing H+->tau nu cards to conform to standard process naming and normalisation conventions
    • Non-morphing versions of some of the cards can also be created with separate programs
  • The MSSM.py physics model is now largely complete for building workspaces for the Run 1 analyses. The model files to use are specified as command line options and multiple data-taking periods can be combined. Theory uncertainties, as a function of mA and tan(beta), are also created within the physics model.
  • Example plotting scripts for the combine/combineTool.py output:
    • plotMultiDimFit.py: plotting 2D likelihood scans
    • plotLimitGrid.py: for the asymptotic limits calculated for a 2D grid of values using either the AsymptoticGrid or HybridNewGrid methods implemented in combineTool.py
    • limitCompare.py: generic limit plotting and comparison script
  • New program PostFitShapesFromWorkspace.cpp with a similar interface to PostFitShapes.cpp but evaluates the shapes using the pdfs in the combine workspace instead of the datacard inputs.
  • Preliminary datacard configuration for the first run 2 MSSM analysis in dedicated sub-package MSSM_13TeV
  • New sub-package HIG15002 containing scripts used to produce LHC Higgs combination results
  • Updated documentation covering the construction of RooMorphingPdfs in CombineHarvester and the reproduction of legacy datacards using the programs listed above.
  • ch::Parameter values can now be frozen such that setting a new value does not actually change the value that is stored. This is useful for doing the uncertainty propagation from a covariance matrix restricted to the effect of a subset of parameters.
  • Some parts of the ch::CombineHarvester behaviour is now controlled by flags that can be set with the SetFlag/GetFlag methods. At the moment there is no change to the existing behaviour and so the possible flags are not yet documented.
  • Significant development of the HybridNewGrid combineTool.py module. Implemented criteria that terminate the toy generation automatically at each point.

Bug fixes:

  • plotImpacts.py: the POI uncertainty drawn at the top of the frame was incorrect, giving roughly half of the true value. Note that this is a plotting issue only, the value calculated by the combineTool.py Impacts method is correct.
  • BuildRooMorphing: Fixed a couple of issues in the way the FastVerticalInterpHistPdf2 pdfs were being created that was out of sync with the way it's done in text2workspace. This affects datacards with shape systematics having a scale factor != 1.0.

October/November Updates

17 Nov 16:16
Compare
Choose a tag to compare

New features

  • Large amount of work in developing various legacy analyses within the CH framework and building workspaces with RooMorphingPdfs.
  • To go along with this, MSSM physics models can now be built using the combine PhysicsModel infrastructure at the text2workspace step. This will scale process rates and masses according to mA and tanb using the cross sections and BRs that will be loaded from the LHCXSWG model files
  • Development of combineTool.py script for calculating Impacts, calculating Asymptotic and toy-based limits on a grid
  • These areas are still under heavy development and will be documented for more general use in a subsequent update
  • No longer required that signal processes have a numeric mass() value when writing a datacard. When the value in non-numeric, the datacard will use the same shape directive as for the backgrounds, i.e. without the $MASS pattern (4dd1c8b).

Bug fixes

  • It was previously possible to cause a segfault when CH tried to evaluate the effect of a systematic uncertainty that did not have a corresponding parameter value. This is now fixed, and an exception will be thrown instead (a68fe6e).
  • BuildRooMorphing now checks if the full set of shape systematics is present for each mass points, and throws an exception if not - otherwise would lead to a segfault when trying to access the missing Systematic objects (99bc6ca)

September Update

04 Oct 20:06
Compare
Choose a tag to compare

New features

  • CombineHarvester package now in a standalone repository and behaves like a normal CMSSW package that compiles with scram - no need to run make
  • First functioning version of combineTool.py script for job generation and submission. Documentation to be added at a later date, but some help available by running combineTool.py -h. Use the option --dry-run to preview the combine commands that will be run. (b2e418a)
  • Demonstration of the H->hh and MSSM H->tautau datacard combination using the RooMorphingPdf (2255878)
  • Added a preliminary combine PhysicsModel, for use in the text2workspace.py step, that constructs the MSSM model instead of having to pre-bake this into the datacard. The corresponding program MorphingMSSM-NoModel can be used to make datacards that contain three floating-mass h, H and A signal processes scaled by efficiency x acceptance only (ce69cf5).
  • The performance of the ParseCombineWorkspace function is improved and is now available in the python interface (7f42263)
  • Possible to set new TH1 objects in the Observation, Process and Systematic classes via the python interface (12c9023)

See Htautau working group presentation here for more details on current developments.