Make combine v9.1.0 the default, customize workspace performance flags
This PR contains two things:
- It makes combine v9.1.0 the default version as it is the recommended version since recently.
- Certain flags added to the workspace creation for performance reasons are optional now. More details below.
Details on performance flags
CreateWorkspace is running with 5 flags that increase the performance of limit and likelihood computations:
--optimize-simpdf-constraints cms, --X-pack-asympows, --X-optimizeMHDependency fixed, --use-histsum, and --no-wrappers`.
Observations:
- There are two things that make the limits fast:
--optimize-simpdf-constraints cmsand--use-histsum --no-wrappers. Each of them accounts for about 50% of the performance boost. - There is no issue with
--optimize-simpdf-constraints cmswhatsoever, so it should be always safe to use that one. -
--use-histsumand--no-wrappersalways have to be used together. When used alone, each of them leads to failures (either already in text2workspace.py or Segfaults in combine). -
--X-optimizeMHDependency fixedonly works when both--use-histsumand--no-wrappersare enabled, but it doesn't increase the performance on top of these two any further. -
--X-pack-asympowsworks when used alone, but not when--optimize-simpdf-constraints cmsis enabled, unless--use-histsumis set. -
But most importantly: when
--use-histsum --no-wrappersis set, the result of FitDiagnostics is unusable as it's missing all per-channel info and postfit histograms are collapsed to single bins.
Actions:
- We can safely add
--optimize-simpdf-constraints cms. It makes things faster and doesn't break anything. - Per default, none any of the other flags should be enabled as users will run into issues with FitDiagnostics, which they will most likely always need.
- However, there is an
--optimize-limitsflag in CreateWorkspace now that adds the additional four flags. - In the combination, we can always set this flag to True by default. This can also be done conveniently with an env variable DHI_WORKSPACE_OPTIMIZE_LIMITS=1 so that nothing changes for the workflows there.
- One should just keep in mind that FitDiagnostics won't work and in case it's needed, one needs to have a second set of workspaces created with
--optimize-limits False.