Right. Contur.
After several posts of saying “we’ll get to Contur next”, I should probably actually get to Contur.
By this stage, I had a working Rivet analysis, simulated Higgs events, and a procedure for comparing signal and background. What I did not have was an FCC measurement.
Mainly because the collider has not been built yet. A slightly inconvenient detail.
The original plan had been to generate events with modified Higgs interactions and investigate how strongly they could be constrained. As explained in the previous post, I had not established a reliable event-generation workflow for that part.
There was still a useful question I could answer: could I connect my analysis to a statistical framework and test it using a controlled, simulated reference?
That became the next part of the project.
What does Contur actually do?
Contur stands for Constraints On New Theories Using Rivet.

Figure 1. The ship illustration used as the Contur logo. Illustration by Chris Wormell, from A Map of the Invisible, as credited in the Contur tutorial. Logo source: official Contur documentation.
Its usual starting point is an existing collider measurement. Even a measurement designed to study an ordinary Standard Model process can contain information about new physics: an additional contribution could change the measured distribution.
Contur uses measurements preserved in Rivet to test whether predictions from a proposed model are compatible with the data. The Contur toolkit paper explains the approach in detail.
In the extra-contribution setup I was studying, the question was:
How much could I add to an acceptable Standard Model prediction before it stopped agreeing with the reference?
That gives us something more informative than looking at two curves and deciding that one seems suspiciously enthusiastic.
Making a reference dataset
For my FCC study, I replaced the experimental reference with distributions constructed from simulated Standard Model events.
These are pseudo-measurements: a synthetic reference representing an assumed Standard Model world.
They let me test the analysis and interpretation machinery before a real measurement exists. Their usefulness depends on the assumptions behind them, including how their uncertainties are assigned.
My Rivet routine supplied the distributions. For example, a jet-mass histogram divides the mass range into bins and records the simulated contribution in each bin. This preserves information about the shape of the distribution, rather than reducing everything to one total event count.
That matters for a Higgs analysis. An additional contribution concentrated around the Higgs-candidate mass region can behave differently from one spread across the entire distribution.
Rivet stored these histograms in YODA files. Those became the inputs to the next stage.
Teaching the files to talk to each other
Unfortunately, producing a histogram and getting another program to recognise it are two separate achievements.
I came here to study Higgs physics and ended up negotiating with histogram names. Fair enough.
The custom analysis needed some adaptation before Contur could process it. I wrote helper code to prepare matching reference and theory objects, labelled /REF/ and /THY/, with consistent analysis names and histogram paths.
I also extended the Contur database with the entries needed for the custom analysis, including its grouping and luminosity information.
Finally, I defined which histograms should enter this statistical study. The Rivet output included empty objects and diagnostic plots, so I restricted the workflow to the selected observables with usable content.
These steps connected the custom FCC analysis to Contur’s interpretation machinery. They made the calculation operational; checking the statistical assumptions was still a separate job.
Turning up the extra contribution
The comparison can be written in plain English:
Total prediction = Standard Model baseline + μ × extra test contribution.
The symbol μ, pronounced “mu”, controls the size of the additional contribution:
- μ = 0 means the baseline alone.
- μ = 1 adds the test contribution at its nominal size.
- μ = 2 adds twice that test contribution.
Doubling μ doubles the added component, rather than necessarily doubling the whole prediction.
In my study, the test templates were derived from Standard Model simulation. This provided a controlled way to exercise the pipeline, but it did not replace a genuine prediction for modified Higgs interactions. A limit on this template’s size could not automatically become a limit on cH, cHW, or cHB.
For the statistical calculation, I used Contur with the Spey backend. Spey provides tools for likelihood-based hypothesis tests: assessing how well a prediction describes the reference within a specified statistical model.
Scanning μ then shows where the agreement is best and how it changes as the extra contribution grows.
First, check the obvious case
Before interpreting the FCC-like study, I ran a 13 TeV closure test using an SM-like reference and SM-derived predictions.
The expected behaviour was straightforward: the reference should not demand an additional contribution.
The best-fit μ was effectively zero, which was consistent with that expectation. It was a useful check that the connected workflow behaved sensibly in this test.
There were still unresolved questions about how the simulated uncertainties entered the calculation, especially those of the added template, and how correlations were handled. Those details affect how strongly a difference between curves should count as evidence.
By this point, I had a working chain:
Simulated events → Rivet distributions → pseudo-measurements → Contur/Spey statistical tests.
That was a substantial step beyond getting a Higgs tagger to run.
Next came the actual results at 13 and 85 TeV—and the important business of deciding how much confidence those numbers deserved.

