Skip to content

repeated modifiers #2558

Open
Open
@andrewfowlie

Description

@andrewfowlie

Summary

Consider this model. It applies two normfactors, one called mu and one called mu2, so the signal channel is scaled signal *= mu * mu2.

{
    "channels": [
        { "name": "singlechannel",
          "samples": [
            { "name": "signal",
              "data": [5.0, 10.0],
              "modifiers": [ { "name": "mu", "type": "normfactor", "data": null}, { "name": "mu2", "type": "normfactor", "data": null} ]
            }
          ]
        }
    ],
    "observations": [
        { "name": "singlechannel", "data": [50.0, 60.0] }
    ],
    "measurements": [
        { "name": "Measurement", "config": {"poi": "mu", "parameters": [{ "name":"mu", "fixed": false}]} }
    ],
    "version": "1.0.0"
}

Now consider correlating them by giving them the same name,

{
    "channels": [
        { "name": "singlechannel",
          "samples": [
            { "name": "signal",
              "data": [5.0, 10.0],
              "modifiers": [ { "name": "mu", "type": "normfactor", "data": null}, { "name": "mu", "type": "normfactor", "data": null} ]
            }
          ]
        }
    ],
    "observations": [
        { "name": "singlechannel", "data": [50.0, 60.0] }
    ],
    "measurements": [
        { "name": "Measurement", "config": {"poi": "mu", "parameters": [{ "name":"mu", "fixed": false}]} }
    ],
    "version": "1.0.0"
}

In this case, we just get signal *= mu, I expected signal *= mu * mu .
I guess that inside some dictionary somewhere, the second mu just overwrites the first one.

OS / Environment

PRETTY_NAME="Ubuntu 23.10"
NAME="Ubuntu"
VERSION_ID="23.10"
VERSION="23.10 (Mantic Minotaur)"
VERSION_CODENAME=mantic
ID=ubuntu
ID_LIKE=debian
HOME_URL="https://www.ubuntu.com/"
SUPPORT_URL="https://help.ubuntu.com/"
BUG_REPORT_URL="https://bugs.launchpad.net/ubuntu/"
PRIVACY_POLICY_URL="https://www.ubuntu.com/legal/terms-and-policies/privacy-policy"
UBUNTU_CODENAME=mantic
LOGO=ubuntu-logo

Steps to Reproduce

{
    "channels": [
        { "name": "singlechannel",
          "samples": [
            { "name": "signal",
              "data": [5.0, 10.0],
              "modifiers": [ { "name": "mu", "type": "normfactor", "data": null}, { "name": "mu", "type": "normfactor", "data": null} ]
            }
          ]
        }
    ],
    "observations": [
        { "name": "singlechannel", "data": [50.0, 60.0] }
    ],
    "measurements": [
        { "name": "Measurement", "config": {"poi": "mu", "parameters": [{ "name":"mu", "fixed": false}]} }
    ],
    "version": "1.0.0"
}

File Upload (optional)

No response

Expected Results

In this case, we just get signal *= mu, I expected signal *= mu * mu , or alternatively warning/exception that the model was not correctly specified & and that the second mu would be ignored.

Actual Results

The mu gets applied just once.

pyhf Version

pyhf, version 0.7.6

Code of Conduct

  • I agree to follow the Code of Conduct

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugSomething isn't workingneeds-triageNeeds a maintainer to categorize and assignuser requestRequest coming form a pyhf user

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions