Skip to content

Releases: cms-analysis/HiggsAnalysis-HiggsToTauTau

CombineHarvester August 2015 Updates

01 Sep 14:44
Compare
Choose a tag to compare

New features

  • The CombinePdfs package is now enabled by default. This package will be our main area for code that works with and builds custom RooFit Pdfs into our datacards. The main use case right now is the RooMorphingPdf which has been added to the main combine package. As such, please make sure you update to the head of the default slc6-root5.34.17 branch in HiggsAnalysis/CombinedLimit.
    • In CombinePdfs you will find an example program bin/SMLegacyMorphing that will create a single set of datacards for the legacy analysis which use RooMorphingPdfs to cover all signal mass points in the range 110-145 GeV.
    • A second program bin/MorphingMSSM can build a single datacard encompassing an entire mA-tanb model.
    • A set of instructions for running these examples can be found in the data/New_CH_protocols.txt file. Note that validation of these new datacards against the legacy results is ongoing.
  • The BinByBinFactory now checks if a TH1 has a valid Sumw2 structure and if not skips that histogram when merging or when adding bin-by-bin uncertainties (a85b33a)
  • The CardWriter::WriteCards method now returns a map/dictionary with the names of the datacards it created as the keys and a CombineHarvester instance as the value (735af8c)
  • An under-the-hood improvement to speed up datacard writing with large numbers of processes (9a01bdc)
  • Added scripts used to modify legacy HTT datacards for the LHC Higgs combination:
    • CombineTools/scripts/scaleYR2ToYR3.py - scales signal cross sections to Yellow Report 3 values
    • CombineTools/scripts/scaleGGH.py - scales ggH rates in each category to account for agreed HRes 2.1 + dynamic scale x Njets weighting of the Higgs pT spectrum in ggH events
    • CombineTools/scripts/injectBBH.py - create the bbH signal process by cloning ggH and scaling yield for cross section and acceptance differences as appropriate. Also creates relevant theory systematics

Bug fixes

  • No longer use Clone() when importing a Workspace into CH. This was found to modify the workspace in some way that affects the values returned from RooHistFuncs. We use the standard copy constructor now instead (aea666d).

CombineHarvester May 2015 Updates

30 May 15:54
Compare
Choose a tag to compare

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)

CombineHarvester April Updates

10 Apr 11:09
Compare
Choose a tag to compare

Interface-breaking changes

  • Switch to simplified set-generating methods (7a7c716)
  • The CombineHarvester methods GenerateSetFromProcs, GenerateSetFromObs and GenerateSetFromSysts have been removed and replaced by SetFromProcs, SetFromObs and SetFromSysts
  • A new method SetFromAll has been added that acts on all Observation, Process and Systematic Objects
  • As for the old methods, the argument is a function or callable accepting a pointer of the appropriate type
  • Unlike the old methods, there is no need to specify a template parameter for the type of the returned set - this is now deduced automatically as the return type of the supplied function

New features

  • ch::CardWriter class for creating LIMITS directory structure more easily (4235e3b)
    • Can be tested in SMLegacyExample.cpp by uncommenting code at the end
    • Available in the python interface (f838968)
  • ch::FnTimer class for tracking number of function calls and measuring performance (4b821cb)
    • see example usage in CardWriter::Compile, enabled by compiling with make EXTRAFLAGS='-DTIME_FUNCTIONS'
  • New SetFrom.. methods above now available in the python interface (0fb9949)
  • git version information is now written as a comment at the top of the text datacards (8d9331b, b21cc2c)
  • The ch::SetStandardBinNames utility function function now has an optional second argument for a pattern string that should be used to build the new bin names (ae5dda7)
    • This accepts standard patterns of the form $ANALYSIS_$CHANNEL_$BINID_$ERA etc.
  • New ch::ValsFromRange utility function can be used to generate ranges of values that include negative values (i.e. which would cause ch::MassesFromRange to fail) (995b5fc)
    • Note the different syntax: MassesFromRange("110-145:5"), ValsFromRange("110:145|5")

Bug fixes

  • When writing datacards in which the observation has been replaced by an asimov dataset the yields will be non-integer, and we have to write the rate into the text datacard with more precision, otherwise text2workspace.py complains about a mismatch. Such a case is now detected and more precision is written if necessary (7ed1564)