Skip to content

Option for non-normalized Blatt–Weisskopf form factors #520

Description

@redeboer

FormFactor returns the square root of BlattWeisskopfSquared, which AmpForm normalizes such that $B_L^2(1)=1$. With $z = (qR)^2$:

$$B_0^2(z) = 1, \qquad B_1^2(z) = \frac{2z}{z+1}, \qquad B_2^2(z) = \frac{13z^2}{z^2+3z+9}.$$

The PDG 2026 review on resonances (p. 12–13) uses non-normalized Blatt–Weisskopf factors with a unity numerator, Equation (50.34), where $z = q/q_0$ is not squared:

$$F_0^2(z) = 1, \qquad F_1^2(z) = \frac{1}{1+z^2}, \qquad F_2^2(z) = \frac{1}{9+3z^2+z^4},$$

and combines them with the threshold factor into the vertex factor of Equation (50.33):

$$n_a(s) = \left(\frac{q_a}{q_0}\right)^{l_a} F_{l_a}\left(\frac{q_a}{q_0}\right).$$

With $R = 1/q_0$, the two conventions differ only by the constant $\lvert h_L^{(1)}(1)\rvert$, that is $1$, $\sqrt{2}$, and $\sqrt{13}$ for $L=0,1,2$:

$$n_L = \frac{B_L}{\lvert h_L^{(1)}(1)\rvert}.$$

The constant cancels in the ratio inside EnergyDependentWidth, but not when FormFactor is used as a production or decay vertex factor, where it rescales the couplings for $L>0$ (see #261). Models that follow the PDG convention, such as the serialized amplitude models, currently divide by this constant by hand; ampform_dpd.io.serialization.dynamics does so in a private _blatt_weisskopf_normalization function.

Proposal

Add a keyword-only normalize: bool = True argument to BlattWeisskopfSquared and FormFactor, rather than exposing the constant as a separate function. The default keeps the current output, while normalize=False omits $\lvert h_L^{(1)}(1)\rvert^2$, so that FormFactor returns the PDG factor $n_L$:

BlattWeisskopfSquared(z, angular_momentum=2, normalize=False).doit()
# z**2/(z**2 + 3*z + 9)

The LaTeX rendering should distinguish the two conventions: $\hat{B}_L^2$ and $\hat{\mathcal{F}}_L$ for the normalized functions, $B_L^2$ and $\mathcal{F}_L$ for the non-normalized ones.

Related issues

No activity

Activity on this issue will appear here.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

⚙️ EnhancementImprovements and optimizations of existing features

Projects

No projects

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions