Repository navigation
Conversation
A particle whose mass is a derived model parameter (MW from aEWM1, Gf and MZ in a G_mu-scheme
UFO) has no runtime slot, so set_model_parameters left its entry in particle_masses at the value
derived from the artifact defaults. Wavefunctions and propagators then used, e.g., MW = 80.419
while model_parameter_value("MW") reported the refreshed 80.369: the W polarisation sum was taken
on another mass shell than the momenta, and |M|^2 of u d~ > W+ H changed under a boost (by 5e-5 at
sqrt(s) = 500 GeV). Take the refreshed real component of the derived parameter instead.
The test needs a u d~ > W+ H artifact from the serialized sm UFO (RUSTICOL_DERIVED_MASS_ARTIFACT).
Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
This branch has not been deployed
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Summary
NativeRuntime::set_model_parametersdid not refresh particle masses that are derived model parameters.In a G_μ-scheme UFO (the serialized
sm), MW is derived from aEWM1, Gf and MZ, so it has no runtime slot. The loopover
particle_mass_parameter_namesonly read masses throughmodel_parameter_runtime_slots. A derived masstherefore kept the value derived from the artifact defaults:
model_parameter_value("MW")reported the refreshed value, e.g. 80.3692 GeV for aEWM1 = 132.1001485837534 andGf = 1.1663788e-5;
The polarisation sum was then taken on a different mass shell from the external momenta. As a result, |M|² of
u d~ > W+ Hwas not Lorentz invariant: it changed by 5.0e-5 under a z-boost at √s = 500 GeV.The fix applies to masses without a runtime slot. It takes the refreshed real component of the corresponding
derived_parameter_component, which is the value the derived-parameter evaluator has just written. Settable massesare unchanged.
Test
New test:
rust/crates/rusticol-core/tests/derived_particle_masses.rs. It runs only whenRUSTICOL_DERIVED_MASS_ARTIFACTpoints to an artifact generated withpyamplicol generate 'u d~ > W+ H' DIR --model models/json/sm/sm.json --restriction no_b_mass --execution-mode compiled(QED = 2).
The test:
along z with rapidities 0.5 and −1;
Both runs used the same generator and artifact. The "before" run is
loopat bae3b9e plus #26; the "after" run addsthis commit.
On
loopat 36f4325 plus this commit (the PR branch):cargo test --release --features symbolica-runtime --libgives 1132 passed, 0 failed, 1 ignored (withPYAMPLICOL_TEST_PYTHONset).Downstream, ROULETTE's pp → W±H LO cross section against MG5_aMC with the same G_μ inputs moved from −0.06 % to
+0.001 % (0.09σ) with this fix.
🤖 Generated with Claude Code