Releases: cms-analysis/CombineHarvester
Releases · cms-analysis/CombineHarvester
v3.0.0
What's Changed
- Add the variables for param NP to the datacard parsing and writing methods by @anigamova in #308
- Root 6.26 compatibility by @nsmith- in #309
- Adding fix for case where param and rateParam have same name by @jonathon-langford in #310
- Update WriteDatacard by @anigamova in #312
- Add new method for extArg import to reduce memory consumption by @anigamova in #313
- More fixes for extArg parsing by @anigamova in #314
- Add some help description to FastScan by @ajgilbert in #315
- rooconstvar backcompatibility problem by @amarini in #316
- Correct counting of toys for F-C in LimitGrid.py by @ajgilbert in #319
- plot1DScan.py to be compiled with python3 by @jonathon-langford in #323
- Move scripts to combine by @pkausw in #318
- ROOT v6.30: Update RooWorkspace::Clone by @anigamova in #325
- Replace soon to be deprecated iterators by @anigamova in #324
- update docs by @ajgilbert in #326
- Fix seg fault for workspaces with RooDataHist objects by @anigamova in #328
- Add 2D plotting script PostFit2DShapesFromWorkspace.cpp by @mroguljic in #327
Full Changelog: v2.1.0...v3.0.0
New pre-release v3.0.0-pre1 for CMSSW_14_1_X
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
- Add the variables for param NP to the datacard parsing and writing methods by @anigamova in #308
- Root 6.26 compatibility by @nsmith- in #309
- Adding fix for case where param and rateParam have same name by @jonathon-langford in #310
- Update WriteDatacard by @anigamova in #312
- Add new method for extArg import to reduce memory consumption by @anigamova in #313
- More fixes for extArg parsing by @anigamova in #314
- Add some help description to FastScan by @ajgilbert in #315
- rooconstvar backcompatibility problem by @amarini in #316
- Correct counting of toys for F-C in LimitGrid.py by @ajgilbert in #319
- plot1DScan.py to be compiled with python3 by @jonathon-langford in #323
- Move scripts to combine by @pkausw in #318
- ROOT v6.30: Update RooWorkspace::Clone by @anigamova in #325
- Replace soon to be deprecated iterators by @anigamova in #324
Full Changelog: v2.1.0...v3.0.0-pre1
New release v2.1.0
v2.0.0 for CMSSW_11_3_X
- 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
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
andRemoveGroup
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
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 toPostFitShapes.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 theSetFlag/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
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
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 runningcombineTool.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.