Skip to content

Reproducing Godfrey–Isgur ​

GIModel was built by reproducing S. Godfrey and N. Isgur, Phys. Rev. D 32, 189 (1985), table by table. This section describes that comparison: how it is organized, what agrees, where it differs, and why.

Two packages, one direction ​

The repository holds two Julia packages with a one-way dependency:

  • GIModel (with its submodule QuarkModelTransitions) is the physics. It knows nothing about the paper's tables. You give it quark flavors and quantum numbers; it returns states and amplitudes.

  • GIPaper (in GIPaper/) is the comparison. It holds the digitized paper data, maps each table row to a GIModel calculation, and writes the reports reproduced in this section.

GIPaper depends on GIModel, never the other way around. A reference row can therefore never steer a calculation: the model decides which state is which, and the comparison layer only assigns names.

Rules of the comparison ​

  • The paper is the authority. Every reference number is transcribed from the published article with its page and table; the raw extraction is kept separately from the cleaned data (GIPaper/data/provenance/). The article itself is not distributed with the repository.

  • No tuning toward the paper. The model uses the paper's Table II parameters and the literal Appendix A operators. Where the reproduction differs, the difference is reported, not fitted away.

  • Fitted quantities are labeled. Only the constants the paper itself fits are refitted, in the same way: the strong-decay strengths and from the same two decays, and the charge-radius exponent   from the .

  • Experimental inputs are pinned. Decay kinematics use a fixed table of PDG 2026 masses (GIPaper/data/mass_inputs/), with no fallback to model masses.

Running the comparison ​

From the repository root:

bash
julia --project=GIPaper -e 'using Pkg; Pkg.instantiate(); Pkg.test()'
julia GIPaper/checks/run_all_spectrum_checks.jl     # spectra, all sectors
julia GIPaper/checks/audit_mixing_angles.jl         # same-J mixing angles
julia GIPaper/checks/audit_table_iii_mixings.jl     # isoscalar mixing
julia GIPaper/checks/reproduce_table_v.jl           # strong decays
julia GIPaper/checks/audit_table_vi_photon_decays.jl
julia GIPaper/checks/audit_table_vii.jl             # annihilation, leptonic, radii

Each script writes a Markdown report to GIPaper/reports/, stamped with the solver settings that produced it. The pages under Recorded reports are copies of those files, made when this documentation was built. bash scripts/verify_project.sh runs the whole chain together with both test suites.

To use the comparison layer in your own code:

julia
using GIModel, GIPaper
params, mq = load_parameters_and_quark_masses(GIPaper.model_parameters_path())
reference = load_reference_spectrum(reference_spectrum_path("charmonium"))
rows = compare_reference(params, mq, reference; solver = OscillatorSolver())

Each row pairs a paper value with the model value and their residual.

What the paper computes, and where it is here ​

papercontentreproduced byreport
Figs. 4–9, Table IImeson spectra in all flavor sectorscompute_spectrumscorecard
Figs. 4, 7, 9 captionssame- mixing anglesspectroscopic mixingmixing angles
Table III, Fig. 5isoscalar annihilation mixingcompute_isoscalar_spectrumTable III
Tables IV–Vstrong decays  the paper's single-Gaussian reductionTable V
Table VIradiative transitionsPhotonEmission on solved wavesTable VI
Table VII, , , weak decay constants, charge radiiannihilation operators on solved wavesTable VII

Results at a glance summarizes each comparison. Equations to code maps each equation of the paper to the code that implements it.