FeynCalc manual (development version)

MomentumCombine

MomentumCombine[expr] is the inverse operation to MomentumExpand and ExpandScalarProduct. MomentumCombine combines also Pairs. Notice, that MomentumCombine cannot complete squares. It can, however, bring expressions containing scalar products to a suitable form that allows for a square completion using other means.

This function offers multiple options.

The option NumberQ (default is True) specifies whether one should only merge quantities with numerical prefactors or not. Setting it to False allows for symbolic prefactors.

Setting the option "Quadratic" to False (default is True) effectively means that momenta squared will not be combined with anything else.

With the option "ExcludeScalarProducts" we can ensure that scalar products containing any of the momenta listed are not merged with anything else. So a.x + a.y can be merged either if a contains no such momenta, or if both x and y are free of them.

The option Except forbids merging the listed momenta with anything else. It is much more restrictive than "ExcludeScalarProducts" that allows for merging terms linear in the listed momenta.

The option Select allows for gathering all terms linear in the given momenta before applying any other combining rules.

See also

Overview, ExpandScalarProduct, Momentum, MomentumExpand.

Examples

Momentum[p] - 2 Momentum[q] // MomentumCombine // StandardForm

(*Momentum[p - 2 q]*)
FV[p, \[Mu]] + 2 FV[q, \[Mu]] 
 
ex = MomentumCombine[%]

\overline{p}^{\mu }+2 \overline{q}^{\mu }

\left(\overline{p}+2 \overline{q}\right)^{\mu }

ex // StandardForm

(*Pair[LorentzIndex[\[Mu]], Momentum[p + 2 q]]*)
ex // ExpandScalarProduct

\overline{p}^{\mu }+2 \overline{q}^{\mu }

3 Pair[LorentzIndex[\[Mu]], Momentum[p]] + 2 Pair[LorentzIndex[\[Mu]], Momentum[q]] 
 
ex = MomentumCombine[%]

3 \overline{p}^{\mu }+2 \overline{q}^{\mu }

\left(3 \overline{p}+2 \overline{q}\right)^{\mu }

ex // StandardForm

(*Pair[LorentzIndex[\[Mu]], Momentum[3 p + 2 q]]*)

In some cases one might need a better control over the types of expressions getting combined. For example, the following expression will not be combined by default, since the coefficients of scalar products are not numbers

DataType[a1, FCVariable] = True;
DataType[a2, FCVariable] = True;
ex = SPD[a1 p, n] + SPD[a2 p, nb]

\text{a1} (n\cdot p)+\text{a2} (\text{nb}\cdot p)

MomentumCombine[ex]

\text{a1} (n\cdot p)+\text{a2} (\text{nb}\cdot p)

Setting the option NumberQ to False we can still achieve the desired form

MomentumCombine[ex, NumberQ -> False]

(\text{a1} n+\text{a2} \;\text{nb})\cdot p

However, in the following case combing p^2 with the other two scalar products is not useful

ex = SPD[p] + SPD[a1 p, n] + SPD[a2 p, nb]

\text{a1} (n\cdot p)+\text{a2} (\text{nb}\cdot p)+p^2

MomentumCombine[ex, NumberQ -> False]

p\cdot (\text{a1} n+\text{a2} \;\text{nb}+p)

To prevent this from happening there is a somewhat hidden option "Quadratic" that can be set to False

MomentumCombine[ex, NumberQ -> False, "Quadratic" -> False]

(\text{a1} n+\text{a2} \;\text{nb})\cdot p+p^2

ex = SPD[p] + SPD[a1 p, n] + SPD[a2 p, nb] + SPD[p, l] + SPD[p, k]

\text{a1} (n\cdot p)+\text{a2} (\text{nb}\cdot p)+k\cdot p+l\cdot p+p^2

In this case we we would like to prevent the scalar products involving l and k from being combined with the rest. To that end we need to use the option Except

MomentumCombine[ex, NumberQ -> False, "Quadratic" -> False, Except -> {k, l}]

(\text{a1} n+\text{a2} \;\text{nb})\cdot p+k\cdot p+l\cdot p+p^2

Suppose that we have an expression that can be written as a square. To achieve the desired combination of momenta we need to

(DataType[#, FCVariable] = True) & /@ {gkin, meta, u0b};
ex = SPD[k1, k1] - 2 SPD[k1, k2] + 2 gkin meta SPD[k1, n] - 2 gkin meta u0b SPD[k1, n] - meta u0b SPD[k1, nb] + 
   SPD[k2, k2] - 2 gkin meta SPD[k2, n] + 2 gkin meta u0b SPD[k2, n] +meta u0b SPD[k2, nb]

-2 \;\text{gkin} \;\text{meta} \;\text{u0b} (\text{k1}\cdot n)+2 \;\text{gkin} \;\text{meta} (\text{k1}\cdot n)+2 \;\text{gkin} \;\text{meta} \;\text{u0b} (\text{k2}\cdot n)-2 \;\text{gkin} \;\text{meta} (\text{k2}\cdot n)-2 (\text{k1}\cdot \;\text{k2})-\text{meta} \;\text{u0b} (\text{k1}\cdot \;\text{nb})+\text{k1}^2+\text{meta} \;\text{u0b} (\text{k2}\cdot \;\text{nb})+\text{k2}^2

The naive application of MomentumCombine doesn’t return anything useful

MomentumCombine[ex]

\text{meta} \;\text{u0b} ((\text{k2}-\text{k1})\cdot \;\text{nb})+\text{k1}\cdot (\text{k1}-2 \;\text{k2})-2 \;\text{gkin} \;\text{meta} \;\text{u0b} (\text{k1}\cdot n)+2 \;\text{gkin} \;\text{meta} (\text{k1}\cdot n)+2 \;\text{gkin} \;\text{meta} \;\text{u0b} (\text{k2}\cdot n)-2 \;\text{gkin} \;\text{meta} (\text{k2}\cdot n)+\text{k2}^2

Here we actually want to gather terms linear in k1 and k2first before trying to combine them together. To that aim we can use the option Select. Employing the options "Quadratic" and "ExcludeScalarProducts" we can prevent k1 and k2 from getting combined with anything containing those momenta. Furthermore, we enable symbolical prefactor by setting NumberQ to false

MomentumCombine[ex, Select -> {k1, k2}, "Quadratic" -> False, "ExcludeScalarProducts" -> {k1, k2}, NumberQ -> False]

\text{k1}\cdot (-2 \;\text{gkin} \;\text{meta} n \;\text{u0b}+2 \;\text{gkin} \;\text{meta} n-\text{meta} \;\text{nb} \;\text{u0b})+\text{k2}\cdot (2 \;\text{gkin} \;\text{meta} n \;\text{u0b}-2 \;\text{gkin} \;\text{meta} n+\text{meta} \;\text{nb} \;\text{u0b})-2 (\text{k1}\cdot \;\text{k2})+\text{k1}^2+\text{k2}^2

This result looks very good, but k1 and k2 were not combined because they are contracted to long linear combinations of 4-momenta that were not properly factorized. The option Factoring solves this issue

res = MomentumCombine[ex, Select -> {k1, k2}, "Quadratic" -> False, "ExcludeScalarProducts" -> {k1, k2}, NumberQ -> False, Factoring -> Factor2]

\text{meta} ((\text{k1}-\text{k2})\cdot (-2 \;\text{gkin} n \;\text{u0b}+2 \;\text{gkin} n-\text{nb} \;\text{u0b}))-2 (\text{k1}\cdot \;\text{k2})+\text{k1}^2+\text{k2}^2