scikit-hep / cabinetry

design and steer profile likelihood fits
https://cabinetry.readthedocs.io/
BSD 3-Clause "New" or "Revised" License
26 stars 19 forks source link

Expanded normalization modifiers #434

Open ekourlit opened 10 months ago

ekourlit commented 10 months ago

This PR expands the usage and notion of normalization modifiers. Now normalization modifiers can also come from weight or tree variations. For example, a weight-based systematic can define a variation from which a normalization effect is calculated.

This PR also allows the symmetrization of normalization systematics.

Changes are mainly affecting src/cabinetry/workspace.py where the workspace is created. src/cabinetry/configuration.py has also being changed so additional needed histograms are now build for normalization modifiers.

As a side note, it would be good to add a safety check during the creation of the configuration file in order to not allow different properties of Up and Down variations. For example, we might not want to allow:

  - Name: "my_systematic"
    Up:
      Weight: "<up-weight-string>"
    Down:
      Normalization: <up-factor>
    Type: "Normalization"