Releases: cms-analysis/HiggsAnalysis-HiggsToTauTau
Releases · cms-analysis/HiggsAnalysis-HiggsToTauTau
CombineHarvester August 2015 Updates
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.
- In CombinePdfs you will find an example program
- 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
Interface-breaking changes
CombineHarvester::ExtractPdfs
andCombineHarvester::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
andScaleProcessRate
used for scaling processes to the SM cross sections have been removed in favour of a simpler workflow using a newTGraphFromTable
function that is also usable in python. SeeCombineTools/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
andInsertSystematic
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
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)