diff --git a/FeynCalcBookDev/Extra/FeynCalc.html b/FeynCalcBookDev/Extra/FeynCalc.html index b1a84a7b..579c098e 100644 --- a/FeynCalcBookDev/Extra/FeynCalc.html +++ b/FeynCalcBookDev/Extra/FeynCalc.html @@ -965,6 +965,10 @@

Loop integrals

- removes specific propagators from given FCTopologys or GLIs
  • FCLoopReplaceQuadraticEikonalPropagators +- tries to eliminate quadratic-eikonal propagators by completing the +square
  • +
  • FCLoopSamePropagatorHeadsQ - checks if the integral contains different types of propagators
  • FeynCalc manual (development version)

    +

    FCLoopFindMomentumShifts

    FCLoopFindMomentumShifts[source, target, {p1, p2, ...}] finds loop momentum shifts that bring loop integrals or topologies in the list source to the form specified in target. The @@ -123,7 +124,9 @@

    FeynCalc manual (development version)

    For topologies involving kinematic constraints some mappings may require shifts not only in the loop but also in the external momenta. Such shifts are disabled by default but can be activated by setting the -option Momentum to All.

    +option Momentum to All. This option can be +dangerous, because the amplitude does not necessarily have to be +symmetric under shifts of external momenta!

    Normally, FCLoopFindMomentumShifts will abort the evaluation if it fails to find any suitable shifts. Setting the option Abort to False will force the function to @@ -157,15 +160,14 @@

    Examples

    FCLoopFindMomentumShifts[source, target, {p1, p3, p4}]

    \{\{\text{p1}\to -\;\text{p1}+\text{p4}+\text{q1},\text{p3}\to \;\text{p3},\text{p4}\to -\;\text{p4}\}\}

    +\;\text{p1}+\text{p4}+\text{q1}\}\}

    FCLoopFindMomentumShifts[{{FAD[r4], FAD[r1], FAD[r1 - p3 - r4], 
         FAD[{r1 - r4, m1}], FAD[{p3, m1}], FAD[p3 + q1], FAD[r1 + q1]}}, 
       {FAD[p4], FAD[p1 + p4 + q1], FAD[p1 - p3 + q1], FAD[{p1 + q1, m1}], 
        FAD[{p3, m1}], FAD[p3 + q1], FAD[p1 + p4 + 2 q1]}, {p1, p3, p4, r4,r1}]
    -

    \{\{\text{p3}\to \;\text{p3},\text{r4}\to -\;\text{p4},\text{r1}\to \;\text{p1}+\text{p4}+\text{q1}\}\}

    +

    \{\{\text{r4}\to \;\text{p4},\text{r1}\to +\;\text{p1}+\text{p4}+\text{q1}\}\}

    source1 = {FCTopology[
         fctopology3, {SFAD[{{p1, 0}, {0, 1}, 1}], 
    @@ -222,8 +224,8 @@ 

    Examples

    FCLoopFindMomentumShifts[source1, target1]

    \{\{\text{p1}\to --\text{p1}-\text{p3}+Q,\text{p2}\to -\text{p2}-\text{p3}+Q,\text{p3}\to -\;\text{p3}\},\{\text{p1}\to Q-\text{p2},\text{p2}\to +-\text{p1}-\text{p3}+Q,\text{p2}\to +-\text{p2}-\text{p3}+Q\},\{\text{p1}\to Q-\text{p2},\text{p2}\to Q-\text{p1},\text{p3}\to -\text{p3}\}\}

    source2 = {FCTopology[topo1, {
    @@ -263,12 +265,146 @@ 

    Examples

    external momenta

    Quiet[FCLoopFindMomentumShifts[source2, target2, Abort -> False]]
    +

    \text{FCLoopFindMomentumShifts: +}\;\text{Failed to derive the momentum shifts between topologies topo1 +and topo2. This can be due to the presence of nonquadratic propagators +or because shifts in external momenta are also necessary.}

    \{\{\}\}

    Once we allow such shifts, everything works as expected

    FCLoopFindMomentumShifts[source2, target2, Momentum -> All]

    \{\{\text{l1}\to -\;\text{l1}-\text{l2}-\text{q2},\text{l2}\to -\text{l2},\text{q1}\to -\;\text{q2},\text{q2}\to \;\text{q1}\}\}

    +-\text{l1}+\text{l2}+\text{q2},\text{q1}\to -\text{q2},\text{q2}\to +-\text{q1}\}\}

    +

    For equivalent topologies containing mixed quadratic-eikonal +propagators it’s often not possible to find suitable shifts because the +function cannot reconstruct the correct momentum flow through such +propagators

    +
    source3 = {FCTopology["pfrTopo303", {SFAD[{{k2, -2 gkin meta k2 . n + meta u0b k2 . nb}, 
    +       {2 gkin meta^2 u0b, 1}, 1}], SFAD[{{k1 - k2, meta u0b (-k1 + k2) . nb}, {0, 1}, 1}], 
    +     SFAD[{{k1, -2 gkin meta k1 . n}, {0, 1}, 1}], SFAD[{{k1, -meta u0b k1 . nb}, {0, 1}, 1}], 
    +     SFAD[{{0, -k2 . nb}, {0, 1}, 1}], SFAD[{{0, -k1 . nb}, {0, 1}, 1}]}, {k1, k2}, {n, nb}, 
    +    {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]}
    +

    \left\{\text{FCTopology}\left(\text{pfrTopo303},\left\{\frac{1}{(\text{k2}^2+\text{meta} +\;\text{u0b} (\text{k2}\cdot \;\text{nb})-2 \;\text{gkin} \;\text{meta} +(\text{k2}\cdot n)-2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{((\text{k1}-\text{k2})^2+\text{meta} \;\text{u0b} +((\text{k2}-\text{k1})\cdot \;\text{nb})+i \eta +)},\frac{1}{(\text{k1}^2-2 \;\text{gkin} \;\text{meta} (\text{k1}\cdot +n)+i \eta )},\frac{1}{(\text{k1}^2-\text{meta} \;\text{u0b} +(\text{k1}\cdot \;\text{nb})+i \eta )},\frac{1}{(-\text{k2}\cdot +\;\text{nb}+i \eta )},\frac{1}{(-\text{k1}\cdot \;\text{nb}+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to +2\},\{\}\right)\right\}

    +
    target3 = FCTopology["pfrTopo267", {SFAD[{{k2, 0}, {0, 1}, 1}], SFAD[{{k1 - k2, 2 gkin meta k1 . n - 2 gkin meta u0b k1 . n - 2 gkin meta k2 . n + 2 gkin meta u0b k2 . n + meta u0b (-k1 + k2) . nb}, {2 gkin meta^2 u0b - 2 gkin meta^2 u0b^2, 1}, 1}], SFAD[{{k1, 2 gkin meta k1 . n - 2 gkin meta u0b k1 . n - meta u0b k1 . nb}, {2 gkin meta^2 u0b - 2 gkin meta^2 u0b^2, 1}, 1}], SFAD[{{k1, -2 gkin meta u0b k1 . n}, {0, 1}, 1}], SFAD[{{0, k2 . nb}, {2 gkin meta, 1}, 1}], SFAD[{{0, k1 . nb}, {2 gkin meta u0b, 1}, 1}]}, {k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]
    +

    \text{FCTopology}\left(\text{pfrTopo267},\left\{\frac{1}{(\text{k2}^2+i +\eta )},1\left/\left(((\text{k1}-\text{k2})^2+2 \;\text{gkin} +\;\text{meta} (\text{k1}\cdot n)-2 \;\text{gkin} \;\text{meta} +\;\text{u0b} (\text{k1}\cdot n)-2 \;\text{gkin} \;\text{meta} +(\text{k2}\cdot n)+2 \;\text{gkin} \;\text{meta} \;\text{u0b} +(\text{k2}\cdot n)+\text{meta} \;\text{u0b} ((\text{k2}-\text{k1})\cdot +\;\text{nb})+2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2-2 +\;\text{gkin} \;\text{meta}^2 \;\text{u0b}+i \eta +)\right)\right.,\frac{1}{(\text{k1}^2+2 \;\text{gkin} \;\text{meta} +(\text{k1}\cdot n)-2 \;\text{gkin} \;\text{meta} \;\text{u0b} +(\text{k1}\cdot n)-\text{meta} \;\text{u0b} (\text{k1}\cdot +\;\text{nb})+2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2-2 +\;\text{gkin} \;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{(\text{k1}^2-2 \;\text{gkin} \;\text{meta} \;\text{u0b} +(\text{k1}\cdot n)+i \eta )},\frac{1}{(\text{k2}\cdot \;\text{nb}-2 +\;\text{gkin} \;\text{meta}+i \eta )},\frac{1}{(\text{k1}\cdot +\;\text{nb}-2 \;\text{gkin} \;\text{meta} \;\text{u0b}+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to 2\},\{\}\right)

    +

    (\text{DataType}[\#,\text{FCVariable}]=\text{True})\&\text{/@}\{\text{gkin},\text{meta},\text{u0b}\};

    +
    FCLoopFindMomentumShifts[source3, target3]
    +

    \text{FCLoopFindMomentumShifts: +}\;\text{The topologies contain following mixed quadratic-eikonal +propagators that complicate the determination of the shifts: +}\left\{\frac{1}{(\text{k1}^2-2 \;\text{gkin} \;\text{meta} +(\text{k1}\cdot n)+i \eta )},\frac{1}{(\text{k1}^2-2 \;\text{gkin} +\;\text{meta} \;\text{u0b} (\text{k1}\cdot n)+i \eta +)},\frac{1}{(\text{k1}^2-\text{meta} \;\text{u0b} (\text{k1}\cdot +\;\text{nb})+i \eta )},\frac{1}{(\text{k1}^2+n\cdot (2 \;\text{gkin} +\;\text{meta} \;\text{k1}-2 \;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{k1})-\text{meta} \;\text{u0b} (\text{k1}\cdot \;\text{nb})+2 +\;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2-2 \;\text{gkin} +\;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{((\text{k1}-\text{k2})^2+\text{meta} \;\text{u0b} +((\text{k2}-\text{k1})\cdot \;\text{nb})+i \eta +)},\frac{1}{((\text{k1}-\text{k2})^2+\text{meta} \;\text{u0b} +((\text{k2}-\text{k1})\cdot \;\text{nb})+n\cdot (2 \;\text{gkin} +\;\text{meta} \;\text{k1}-2 \;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{k1}-2 \;\text{gkin} \;\text{meta} \;\text{k2}+2 \;\text{gkin} +\;\text{meta} \;\text{u0b} \;\text{k2})+2 \;\text{gkin} \;\text{meta}^2 +\;\text{u0b}^2-2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{(\text{k2}^2+\text{k2}\cdot (\text{meta} \;\text{u0b} +\;\text{nb}-2 \;\text{gkin} \;\text{meta} n)-2 \;\text{gkin} +\;\text{meta}^2 \;\text{u0b}+i \eta )}\right\}

    +

    \text{FCLoopFindMomentumShifts: +}\;\text{You can try to trade them for purely quadratic propagators +using FCLoopReplaceQuadraticEikonalPropagators.}

    +

    189bbth1nyc1e

    +

    \text{FCLoopFindMomentumShifts: +}\;\text{Failed to derive the momentum shifts between topologies +pfrTopo303 and pfrTopo267. This can be due to the presence of +nonquadratic propagators or because shifts in external momenta are also +necessary.}

    +

    \text{\$Aborted}

    +

    To this aim one can try converting those mixed propagators to purely +quadratic ones using +FCLoopReplaceQuadraticEikonalPropagators

    +
    source3New = FCLoopReplaceQuadraticEikonalPropagators[source3, LoopMomenta -> {k1, k2}, 
    +   InitialSubstitutions -> {ExpandScalarProduct[SPD[k1 - k2]] -> SPD[k1 - k2]}, 
    +   IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 2}]
    +

    \left\{\text{FCTopology}\left(\text{pfrTopo303},\left\{\frac{1}{((\text{k2}-\text{gkin} +\;\text{meta} n+\frac{\text{meta} \;\text{u0b} \;\text{nb}}{2})^2+i \eta +)},\frac{1}{((\text{k1}-\text{k2}-\frac{\text{meta} \;\text{u0b} +\;\text{nb}}{2})^2+i \eta )},\frac{1}{((\text{k1}-\text{gkin} +\;\text{meta} n)^2+i \eta )},\frac{1}{((\text{k1}-\frac{\text{meta} +\;\text{u0b} \;\text{nb}}{2})^2+i \eta )},\frac{1}{(-\text{k2}\cdot +\;\text{nb}+i \eta )},\frac{1}{(-\text{k1}\cdot \;\text{nb}+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to +2\},\{\}\right)\right\}

    +
    target3New = FCLoopReplaceQuadraticEikonalPropagators[target3, LoopMomenta -> {k1, k2}, 
    +    InitialSubstitutions -> {ExpandScalarProduct[SPD[k1 - k2]] -> SPD[k1 - k2]}, 
    +    IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 2}] // First
    +

    \text{FCTopology}\left(\text{pfrTopo267},\left\{\frac{1}{(\text{k2}^2+i +\eta )},\frac{1}{((\text{k1}-\text{k2}+\text{gkin} \;\text{meta} +n-\text{gkin} \;\text{meta} \;\text{u0b} n-\frac{\text{meta} +\;\text{u0b} \;\text{nb}}{2})^2+i \eta +)},\frac{1}{((\text{k1}+\text{gkin} \;\text{meta} n-\text{gkin} +\;\text{meta} \;\text{u0b} n-\frac{\text{meta} \;\text{u0b} +\;\text{nb}}{2})^2+i \eta )},\frac{1}{((\text{k1}-\text{gkin} +\;\text{meta} \;\text{u0b} n)^2+i \eta )},\frac{1}{(\text{k2}\cdot +\;\text{nb}-2 \;\text{gkin} \;\text{meta}+i \eta +)},\frac{1}{(\text{k1}\cdot \;\text{nb}-2 \;\text{gkin} \;\text{meta} +\;\text{u0b}+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to 2\},\{\}\right)

    +

    With the new topologies everything works as expected

    +
    FCLoopFindMomentumShifts[source3New, target3New]
    +

    \left\{\left\{\text{k1}\to \;\text{gkin} +\;\text{meta} n \;\text{u0b}-\text{k1}+\frac{\text{meta} \;\text{nb} +\;\text{u0b}}{2},\text{k2}\to \frac{1}{2} (2 \;\text{gkin} \;\text{meta} +n-2 \;\text{k2}-\text{meta} \;\text{nb} +\;\text{u0b})\right\}\right\}

    diff --git a/FeynCalcBookDev/FCLoopFindTopologyMappings.html b/FeynCalcBookDev/FCLoopFindTopologyMappings.html index 2ad3fb96..019ec5dd 100644 --- a/FeynCalcBookDev/FCLoopFindTopologyMappings.html +++ b/FeynCalcBookDev/FCLoopFindTopologyMappings.html @@ -176,7 +176,7 @@

    Examples

    )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) & \{\text{p1}\to -\text{p1}-\text{p3}+Q,\text{p2}\to --\text{p2}-\text{p3}+Q,\text{p3}\to \;\text{p3}\} & +-\text{p2}-\text{p3}+Q\} & G^{\text{fctopology3}}(\text{n1$\_$},\text{n7$\_$},\text{n8$\_$},\text{n5$\_$},\text{n6$\_$},\text{n4$\_$},\text{n2$\_$},\text{n3$\_$},\text{n9$\_$}):\to G^{\text{fctopology1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ @@ -201,8 +201,7 @@

    Examples

    )},\frac{1}{((\text{p1}+\text{p2}-Q)^2+i \eta )},\frac{1}{((\text{p1}+\text{p2}+\text{p3}-Q)^2+i \eta )}\right\},\{\text{p1},\text{p2},\text{p3}\},\{Q\},\{\},\{\}\right) -& \{\text{p1}\to \;\text{p2},\text{p2}\to \;\text{p1},\text{p3}\to -\;\text{p3}\} & +& \{\text{p1}\to \;\text{p2},\text{p2}\to \;\text{p1}\} & G^{\text{fctopology5}}(\text{n1$\_$},\text{n3$\_$},\text{n2$\_$},\text{n4$\_$},\text{n6$\_$},\text{n5$\_$},\text{n7$\_$},\text{n8$\_$},\text{n9$\_$}):\to G^{\text{fctopology2}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7},\text{n8},\text{n9}) \\ @@ -445,8 +444,8 @@

    Examples

    )}\right\},\{\text{l1},\text{l2}\},\{\text{q1},\text{q2}\},\left\{\text{q1}^2\to 0,\text{q2}^2\to 0,\text{q1}\cdot \;\text{q2}\to \frac{s}{2}\right\},\{\}\right) & \{\text{l1}\to --\text{l1}+\text{l2}-\text{q1},\text{l2}\to \;\text{l2},\text{q1}\to --\text{q2},\text{q2}\to -\text{q1}\} & +-\text{l1}+\text{l2}-\text{q1},\text{q1}\to -\text{q2},\text{q2}\to +-\text{q1}\} & G^{\text{topo2}}(\text{n1$\_$},\text{n2$\_$},\text{n3$\_$},\text{n4$\_$},\text{n5$\_$}):\to G^{\text{topo1}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5}) \\ \end{array} @@ -454,6 +453,10 @@

    Examples

    Otherwise no mappings exist

    FCLoopFindTopologyMappings[topos4][[1]]
    +

    \text{FCLoopFindMomentumShifts: +}\;\text{Failed to derive the momentum shifts between topologies topo2 +and topo1. This can be due to the presence of nonquadratic propagators +or because shifts in external momenta are also necessary.}

    \text{FCLoopFindTopologyMappings: }\;\text{Found }0\text{ mapping relations }

    \text{FCLoopFindTopologyMappings: @@ -478,12 +481,39 @@

    Examples

    {2 gkin meta^2 u0b^2, 1}, 1}]}, {k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}];
    DataType[meta, FCVariable] = True;
    -DataType[u0b, FCVariable] = True;
    +class="sourceCode mathematica">DataType[gkin, FCVariable] = True; +DataType[meta, FCVariable] = True; +DataType[u0b, FCVariable] = True;

    At first sight these two topologies are independent from each other

    FCLoopFindTopologyMappings[{topoEik1, topoEik2}];
    +

    \text{FCLoopFindMomentumShifts: +}\;\text{The topologies contain following mixed quadratic-eikonal +propagators that complicate the determination of the shifts: +}\left\{\frac{1}{(\text{k1}^2+\text{k1}\cdot (2 \;\text{gkin} +\;\text{meta} n-\text{meta} \;\text{u0b} \;\text{nb})-2 \;\text{gkin} +\;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{(\text{k1}^2+\text{k1}\cdot (\text{meta} \;\text{u0b} +\;\text{nb}-2 \;\text{gkin} \;\text{meta} n)-2 \;\text{gkin} +\;\text{meta}^2 \;\text{u0b}+i \eta )},\frac{1}{(\text{k2}^2-\text{meta} +\;\text{u0b} (\text{k2}\cdot \;\text{nb})+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2-2 \;\text{gkin} \;\text{meta} +\;\text{u0b} ((\text{k1}+\text{k2})\cdot n)+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2-\text{meta} \;\text{u0b} +((\text{k1}+\text{k2})\cdot \;\text{nb})+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2+(\text{k1}+\text{k2})\cdot (2 +\;\text{gkin} \;\text{meta} \;\text{u0b} n-\text{meta} \;\text{u0b} +\;\text{nb})-2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2+i \eta +)}\right\}

    +

    \text{FCLoopFindMomentumShifts: +}\;\text{You can try to trade them for purely quadratic propagators +using FCLoopReplaceQuadraticEikonalPropagators.}

    +

    \text{FCLoopFindMomentumShifts: +}\;\text{Failed to derive the momentum shifts between topologies +mytopo79 and mytopo67. This can be due to the presence of nonquadratic +propagators or because shifts in external momenta are also +necessary.}

    \text{FCLoopFindTopologyMappings: }\;\text{Found }0\text{ mapping relations }

    \text{FCLoopFindTopologyMappings: @@ -491,24 +521,18 @@

    Examples

    However, if we tell the code how some eikonal propagators can be brought into a quadratic form, then an explicit mapping can be found

    eikRule = {SFAD[{{k2, -meta u0b k2 . nb}, {0, 1}, 1}] -> SFAD[k2 - meta u0b/2 nb]}
    -

    \left\{\frac{1}{(\text{k2}^2-\text{meta} -\;\text{u0b} (\text{k2}\cdot \;\text{nb})+i \eta )}\to -\frac{1}{((\text{k2}-\frac{\text{meta} \;\text{u0b} \;\text{nb}}{2})^2+i -\eta )}\right\}

    -
    eikMappings = FCLoopFindTopologyMappings[{topoEik1, topoEik2}, 
    -    InitialSubstitutions -> eikRule];
    +class="sourceCode mathematica">toposNew = FCLoopReplaceQuadraticEikonalPropagators[{topoEik1, topoEik2}, + LoopMomenta -> {k1, k2}, + InitialSubstitutions -> { + ExpandScalarProduct[SPD[k1 - k2]] -> SPD[k1 - k2], + ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]}, + IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 2}]; +

    ```mathematica eikMappings = +FCLoopFindTopologyMappings[toposNew];

    +

    ```mathematica

    \text{FCLoopFindTopologyMappings: }\;\text{Found }1\text{ mapping relations }

    \text{FCLoopFindTopologyMappings: }\;\text{Final number of independent topologies: }1

    -
    eikMappings[[1]][[1]][[2 ;;]]
    -

    \left\{\left\{\text{k1}\to --\text{k1},\text{k2}\to \frac{1}{2} (\text{meta} \;\text{nb} -\;\text{u0b}-2 -\;\text{k2})\right\},G^{\text{mytopo79}}(\text{n5$\_$},\text{n2$\_$},\text{n4$\_$},\text{n1$\_$},\text{n3$\_$},\text{n7$\_$},\text{n6$\_$}):\to -G^{\text{mytopo67}}(\text{n1},\text{n2},\text{n3},\text{n4},\text{n5},\text{n6},\text{n7})\right\}

    diff --git a/FeynCalcBookDev/FCLoopReplaceQuadraticEikonalPropagators.html b/FeynCalcBookDev/FCLoopReplaceQuadraticEikonalPropagators.html new file mode 100644 index 00000000..aa7fad58 --- /dev/null +++ b/FeynCalcBookDev/FCLoopReplaceQuadraticEikonalPropagators.html @@ -0,0 +1,186 @@ + + + + + + + FeynCalc manual (development version) + + + + + + + + +
    +

    FeynCalc manual (development version)

    +
    +

    FCLoopReplaceQuadraticEikonalPropagators

    +

    FCLoopReplaceQuadraticEikonalPropagators[topologies] +identifies SFADs and CFADs in +topologies that represent mixed quadratic-eikonal +propagators, e.g. [p^2 - 2 p \cdot q]. +Using the information on loop momenta provided by the user the routine +will try to rewrite those denominators by completing the square, e.g. as +in [(p-q)^2 - q^2].

    +

    This procedure is useful because one cannot easily determine the +momentum flow from looking at quadratic-eikonal propagators as it is +possible in the case of purely quadratic ones.

    +

    For this to work it is crucial to specify the loop momenta via the +LoopMomenta option as well as the kinematics +(IntermediateSubstitutions) and the rules for completing +the square (InitialSubstitutions) on the purely +loop-momentum dependent piece of the propagator (e.g. p_1^2 - 2 p_1 \cdot p_2 + p_2^2 goes to (p_1+p_2)^2.

    +

    Internally this routine uses ToGFAD and +FromGFAD.

    +

    See also

    +

    Overview, FCTopology, GFAD, FromGFAD, ToGFAD.

    +

    Examples

    +

    (\text{DataType}[\#,\text{FCVariable}]=\text{True})\&\text{/@}\{\text{gkin},\text{meta},\text{u0b}\};

    +
    topos = {FCTopology[preTopoDia1, {SFAD[{{k2, 0}, {0, 1}, 1}], SFAD[{{k1, 0}, {0, 1}, 1}], 
    +     SFAD[{{k1 + k2, 0}, {0, 1}, 1}], SFAD[{{0, -k1 . nb}, {0, 1}, 1}], SFAD[{{k2, -(meta*u0b*k2 . nb)}, {0, 1}, 1}], 
    +     SFAD[{{k1 + k2, -2*gkin*meta*u0b*(k1 + k2) . n}, {0, 1}, 1}], SFAD[{{k1, -2*gkin*meta*k1 . n + meta*u0b*k1 . nb}, 
    +       {2*gkin*meta^2*u0b, 1}, 1}], SFAD[{{k1, -2*gkin*meta*u0b*k1 . n + meta*u0b*k1 . nb}, {2*gkin*meta^2*u0b^2, 1}, 1}]}, 
    +    {k1, k2}, {n, nb}, {Hold[SPD][n] -> 0, Hold[SPD][nb] -> 0, Hold[SPD][n, nb] -> 2}, {}]}
    +

    \left\{\text{FCTopology}\left(\text{preTopoDia1},\left\{\frac{1}{(\text{k2}^2+i +\eta )},\frac{1}{(\text{k1}^2+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2+i \eta )},\frac{1}{(-\text{k1}\cdot +\;\text{nb}+i \eta )},\frac{1}{(\text{k2}^2-\text{meta} \;\text{u0b} +(\text{k2}\cdot \;\text{nb})+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2-2 \;\text{gkin} \;\text{meta} +\;\text{u0b} ((\text{k1}+\text{k2})\cdot n)+i \eta +)},\frac{1}{(\text{k1}^2+\text{meta} \;\text{u0b} (\text{k1}\cdot +\;\text{nb})-2 \;\text{gkin} \;\text{meta} (\text{k1}\cdot n)-2 +\;\text{gkin} \;\text{meta}^2 \;\text{u0b}+i \eta +)},\frac{1}{(\text{k1}^2+\text{meta} \;\text{u0b} (\text{k1}\cdot +\;\text{nb})-2 \;\text{gkin} \;\text{meta} \;\text{u0b} (\text{k1}\cdot +n)-2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to +2\},\{\}\right)\right\}

    +
    FCLoopReplaceQuadraticEikonalPropagators[topos, LoopMomenta -> {k1, k2}, 
    +  InitialSubstitutions -> {
    +    ExpandScalarProduct[SPD[k1 - k2]] -> SPD[k1 - k2], 
    +    ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]}, 
    +  IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 0}]
    +

    \left\{\text{FCTopology}\left(\text{preTopoDia1},\left\{\frac{1}{(\text{k2}^2+i +\eta )},\frac{1}{(\text{k1}^2+i \eta +)},\frac{1}{((\text{k1}+\text{k2})^2+i \eta )},\frac{1}{(-\text{k1}\cdot +\;\text{nb}+i \eta )},\frac{1}{((\text{k2}-\frac{\text{meta} +\;\text{u0b} \;\text{nb}}{2})^2+i \eta +)},\frac{1}{((\text{k1}+\text{k2}-\text{gkin} \;\text{meta} \;\text{u0b} +n)^2+i \eta )},\frac{1}{((\text{k1}-\text{gkin} \;\text{meta} +n+\frac{\text{meta} \;\text{u0b} \;\text{nb}}{2})^2-2 \;\text{gkin} +\;\text{meta}^2 \;\text{u0b}+i \eta )},\frac{1}{((\text{k1}-\text{gkin} +\;\text{meta} \;\text{u0b} n+\frac{\text{meta} \;\text{u0b} +\;\text{nb}}{2})^2-2 \;\text{gkin} \;\text{meta}^2 \;\text{u0b}^2+i \eta +)}\right\},\{\text{k1},\text{k2}\},\{n,\text{nb}\},\{\text{Hold}[\text{SPD}][n]\to +0,\text{Hold}[\text{SPD}][\text{nb}]\to +0,\text{Hold}[\text{SPD}][n,\text{nb}]\to +2\},\{\}\right)\right\}

    + + diff --git a/FeynCalcBookDev/FromGFAD.html b/FeynCalcBookDev/FromGFAD.html index 7d145700..b74821e4 100644 --- a/FeynCalcBookDev/FromGFAD.html +++ b/FeynCalcBookDev/FromGFAD.html @@ -113,12 +113,20 @@

    FromGFAD

    denominators into standard and Cartesian propagator denominators.

    The options InitialSubstitutions and IntermediateSubstitutions can be used to help the function -handle nontrivial propagators.

    +handle nontrivial propagators. In particular, +InitialSubstitutions can define rules for completing the +square in the loop momenta of the propagator, while +IntermediateSubstitutions contains relations for scalar +products appearing in those rules.

    +

    Another useful option is LoopMomenta which is +particularly helpful when converting mixed quadratic-eikonal propagators +to quadratic ones.

    For propagators containing symbolic variables it might be necessary to tell the function that those are larger than zero (if applicable), so that expressions such as \sqrt{\lambda^2} can be simplified -accordingly.

    +accordingly. To that aim one should use the option +PowerExpand.

    See also

    Overview, GFAD, SFAD, Examples class="sourceCode mathematica">GFAD[SPD[p1]] ex = FromGFAD[%] -

    \frac{1}{(\text{p1}^2+i \eta )}

    -

    \frac{1}{(\text{p1}^2+i \eta )}

    +

    \text{GFAD}(\text{SPD}(\text{p1}))

    +

    \text{FromGFAD}(\text{GFAD}(\text{SPD}(\text{p1})))

    ex // StandardForm
     
    -(*FeynAmpDenominator[StandardPropagatorDenominator[Momentum[p1, D], 0, 0, {1, 1}]]*)
    +(*FromGFAD[GFAD[SPD[p1]]]*)
    GFAD[SPD[p1] + 2 SPD[p1, p2]] 
    - 
    -ex = FromGFAD[%]
    -

    \frac{1}{(\text{p1}^2+2 (\text{p1}\cdot -\;\text{p2})+i \eta )}

    -

    \frac{1}{(\text{p1}^2+2 (\text{p1}\cdot -\;\text{p2})+i \eta )}

    +class="sourceCode mathematica">ex = GFAD[SPD[p1] + 2 SPD[p1, p2]] +

    \text{GFAD}(2 +\;\text{SPD}(\text{p1},\text{p2})+\text{SPD}(\text{p1}))

    ex // StandardForm
    -
    -(*FeynAmpDenominator[StandardPropagatorDenominator[Momentum[p1, D], 2 Pair[Momentum[p1, D], Momentum[p2, D]], 0, {1, 1}]]*)
    +class="sourceCode mathematica">FromGFAD[ex] +

    \text{FromGFAD}(\text{GFAD}(2 +\;\text{SPD}(\text{p1},\text{p2})+\text{SPD}(\text{p1})))

    +

    We can get a proper conversion into a quadratic propagator using the +option LoopMomenta. Notice that here p2.p2 is +being put into the mass slot

    GFAD[{{CSPD[p1] + 2 CSPD[p1, p2] + m^2, -1}, 2}] 
    - 
    -ex = FromGFAD[%]
    -

    \frac{1}{(m^2+\text{p1}^2+2 -(\text{p1}\cdot \;\text{p2})-i \eta )^2}

    -

    \frac{1}{(\text{p1}^2+2 (\text{p1}\cdot -\;\text{p2})+m^2-i \eta )^2}

    +class="sourceCode mathematica">FromGFAD[ex, LoopMomenta -> {p1}] +

    \text{FromGFAD}(\text{GFAD}(2 +\;\text{SPD}(\text{p1},\text{p2})+\text{SPD}(\text{p1})),\text{LoopMomenta}\to +\{\text{p1}\})

    ex // StandardForm
     
    -(*FeynAmpDenominator[CartesianPropagatorDenominator[0, CartesianPair[CartesianMomentum[p1, -1 + D], CartesianMomentum[p1, -1 + D]] + 2 CartesianPair[CartesianMomentum[p1, -1 + D], CartesianMomentum[p2, -1 + D]], m^2, {2, -1}]]*)
    +(*GFAD[SPD[p1] + 2 SPD[p1, p2]]*)
    prop = FeynAmpDenominator[GenericPropagatorDenominator[-la Pair[Momentum[p1, D], 
    -       Momentum[p1, D]] + 2 Pair[Momentum[p1, D], Momentum[q, D]], {1,1}]]
    -

    \frac{1}{(2 (\text{p1}\cdot q)-\text{la} -\;\text{p1}^2+i \eta )}

    +class="sourceCode mathematica">GFAD[{{CSPD[p1] + 2 CSPD[p1, p2] + m^2, -1}, 2}] + +ex = FromGFAD[%] +

    \text{GFAD}\left(\left\{\left\{2 +\;\text{CSPD}(\text{p1},\text{p2})+\text{CSPD}(\text{p1})+m^2,-1\right\},2\right\}\right)

    +

    \text{FromGFAD}\left(\text{GFAD}\left(\left\{\left\{2 +\;\text{CSPD}(\text{p1},\text{p2})+\text{CSPD}(\text{p1})+m^2,-1\right\},2\right\}\right)\right)

    ex = FromGFAD[prop]
    -

    \frac{1}{(-\text{la} \;\text{p1}^2+2 -(\text{p1}\cdot q)+i \eta )}

    +class="sourceCode mathematica">ex // StandardForm + +(*FromGFAD[GFAD[{{m^2 + CSPD[p1] + 2 CSPD[p1, p2], -1}, 2}]]*)
    ex // StandardForm
    +class="sourceCode mathematica">DataType[la, FCVariable] = True; +prop = FeynAmpDenominator[GenericPropagatorDenominator[-la Pair[Momentum[p1, D], + Momentum[p1, D]] + 2 Pair[Momentum[p1, D], Momentum[q, D]], {1,1}]]

    \text{FeynAmpDenominator}\left[\text{StandardPropagatorDenominator}\left[\sqrt{-\text{la}} -\;\text{Momentum}[\text{p1},D],2 -\;\text{Pair}[\text{Momentum}[\text{p1},D],\text{Momentum}[q,D]],0,\{1,1\}\right]\right]

    +class="math display">\text{FeynAmpDenominator}(\text{GenericPropagatorDenominator}(2 +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(q,D))-\text{la} +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(\text{p1},D)),\{1,1\}))

    ex = FromGFAD[prop, PowerExpand -> {la}]
    -

    \frac{1}{(-\text{la} \;\text{p1}^2+2 -(\text{p1}\cdot q)+i \eta )}

    +class="sourceCode mathematica">ex = FromGFAD[prop] +

    \text{FromGFAD}(\text{FeynAmpDenominator}(\text{GenericPropagatorDenominator}(2 +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(q,D))-\text{la} +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(\text{p1},D)),\{1,1\})))

    ex // StandardForm
    +class="sourceCode mathematica">ex = FromGFAD[prop, LoopMomenta -> {p1}]

    \text{FeynAmpDenominator}\left[\text{StandardPropagatorDenominator}\left[i -\sqrt{\text{la}} \;\text{Momentum}[\text{p1},D],2 -\;\text{Pair}[\text{Momentum}[\text{p1},D],\text{Momentum}[q,D]],0,\{1,1\}\right]\right]

    +class="math display">\text{FromGFAD}(\text{FeynAmpDenominator}(\text{GenericPropagatorDenominator}(2 +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(q,D))-\text{la} +\;\text{Pair}(\text{Momentum}(\text{p1},D),\text{Momentum}(\text{p1},D)),\{1,1\})),\text{LoopMomenta}\to +\{\text{p1}\})

    ex = GFAD[{{-SPD[p1, p1], 1}, 1}]*GFAD[{{SPD[p1, -p1 + 2*p3] - SPD[p3, p3], 1}, 1}]*
         GFAD[{{-SPD[p3, p3], 1}, 1}]*SFAD[{{I*(p1 + q), 0}, {-mb^2, 1}, 1}]*
    @@ -196,58 +211,201 @@ 

    Examples

    1}]*GFAD[{{SPD[p1, -p1 + 2*p3] - SPD[p3, p3], 1}, 1}]*GFAD[{{-SPD[p3, p3], 1}, 2}]*SFAD[{{I*(p1 + q), 0}, {-mb^2, 1}, 1}]*SFAD[{{I*(p3 + q), 0}, {-mb^2, 1}, 1}])/2
    -

    \frac{1}{2} \left(-\frac{2 -\;\text{mg}^2}{(-\text{p1}^2+i \eta )^2 (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (\text{p1}\cdot (2 \;\text{p3}-\text{p1})-\text{p3}^2+i \eta -)}-\frac{2 \;\text{mg}^2}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (\text{p1}\cdot (2 \;\text{p3}-\text{p1})-\text{p3}^2+i \eta -)^2}-\frac{2 \;\text{mg}^2}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta -)^2 (-(\text{p1}+q)^2+\text{mb}^2+i \eta ) -(-(\text{p3}+q)^2+\text{mb}^2+i \eta ) (\text{p1}\cdot (2 -\;\text{p3}-\text{p1})-\text{p3}^2+i \eta -)}\right)+\frac{1}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (\text{p1}\cdot (2 \;\text{p3}-\text{p1})-\text{p3}^2+i \eta -)}

    +

    \frac{1}{2} \left(-2 \;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},2\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)\right)+\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)

    +

    Notice that FromGFAD does not expand scalar products in +the propagators before trying to convert them to SFADs or +CFADs. If this is needed, the user should better apply +ExpandScalarProduct to the expression by hand.

    FromGFAD[ex]
    -

    \frac{1}{2} \left(-\frac{2 -\;\text{mg}^2}{(-\text{p1}^2+i \eta )^2 (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (-\text{p3}^2+2 (\text{p1}\cdot \;\text{p3})-\text{p1}^2+i \eta -)}-\frac{2 \;\text{mg}^2}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta -)^2 (-(\text{p1}+q)^2+\text{mb}^2+i \eta ) -(-(\text{p3}+q)^2+\text{mb}^2+i \eta ) (-\text{p3}^2+2 (\text{p1}\cdot -\;\text{p3})-\text{p1}^2+i \eta )}-\frac{2 -\;\text{mg}^2}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (-\text{p3}^2+2 (\text{p1}\cdot \;\text{p3})-\text{p1}^2+i \eta -)^2}\right)+\frac{1}{(-\text{p1}^2+i \eta ) (-\text{p3}^2+i \eta ) -(-(\text{p1}+q)^2+\text{mb}^2+i \eta ) (-(\text{p3}+q)^2+\text{mb}^2+i -\eta ) (-\text{p3}^2+2 (\text{p1}\cdot \;\text{p3})-\text{p1}^2+i \eta -)}

    -

    Using the option InitialSubstitutions one can perform -certain replacement that might not be found automatically

    +

    \text{FromGFAD}\left(\frac{1}{2} \left(-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},2\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)\right)+\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)\right)

    ex = GFAD[SPD[k1] + 2 SPD[k1, k2] + SPD[k2] + SPD[k1, n]]
    -

    \frac{1}{(\text{k1}^2+2 (\text{k1}\cdot -\;\text{k2})+\text{k1}\cdot n+\text{k2}^2+i \eta )}

    +class="sourceCode mathematica">FromGFAD[ExpandScalarProduct[ex]] +

    \text{FromGFAD}\left(\text{ExpandScalarProduct}\left(\frac{1}{2} +\left(-2 \;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},2\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)-2 +\;\text{mg}^2 +\;\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},2\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)\right)+\text{GFAD}(\{\{-\text{SPD}(\text{p1},\text{p1}),1\},1\}) +\;\text{GFAD}(\{\{-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{GFAD}(\{\{\text{SPD}(\text{p1},2 +\;\text{p3}-\text{p1})-\text{SPD}(\text{p3},\text{p3}),1\},1\}) +\;\text{SFAD}\left(\left\{\{i +(\text{p1}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right) +\;\text{SFAD}\left(\left\{\{i +(\text{p3}+q),0\},\left\{-\text{mb}^2,1\right\},1\right\}\right)\right)\right)

    +

    Using the option InitialSubstitutions one can perform +certain replacement that might not be found automatically. The values of +scalar products can be set using +IntermediateSubstitutions

    FromGFAD[ex, FCE -> True]
    -% // InputForm
    -

    \frac{1}{(\text{k1}^2+\text{k1}\cdot (2 -\;\text{k2}+n)+\text{k2}^2+i \eta )}

    +class="sourceCode mathematica">ex = GFAD[{{SPD[k1, k1] - 2*gkin*meta*u0b*SPD[k1, n], 1}, 1}]; +

    Notice that we need to declare the appearing variables as +FCVariables

    SFAD[{{k1, k1 . (2*k2 + n) + k2 . k2}, {0, 1}, 1}]
    +class="sourceCode mathematica">(DataType[#, FCVariable] = True) & /@ {gkin, meta, u0b}; +

    Without these options we get a mixed quadratic-eikonal propagator +that will cause us troubles when doing topology minimizations.

    FromGFAD[ex, FCE -> True, InitialSubstitutions -> {ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]}]
    +class="sourceCode mathematica">FromGFAD[ex, FCE -> True]
     % // InputForm

    \frac{1}{((\text{k1}+\text{k2})^2+\text{k1}\cdot -n+i \eta )}

    +class="math display">\text{FromGFAD}(\text{GFAD}(\{\{\text{SPD}(\text{k1},\text{k1})-2 +\;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{SPD}(\text{k1},n),1\},1\}),\text{FCE}\to +\;\text{True})

    SFAD[{{k1 + k2, k1 . n}, {0, 1}, 1}]
    +class="sourceCode mathematica">FromGFAD[GFAD[{{SPD[k1, k1] - 2*gkin*meta*u0b*SPD[k1, n], 1}, 1}], + FCE -> True] +

    But when doing everything right we end up with a purely quadratic +propagator

    +
    FromGFAD[ex, InitialSubstitutions -> {ExpandScalarProduct[SPD[k1 - gkin meta u0b n]] -> SPD[k1 - gkin meta u0b n]}, 
    +  IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 2}]
    +

    \text{FromGFAD}(\text{GFAD}(\{\{\text{SPD}(\text{k1},\text{k1})-2 +\;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{SPD}(\text{k1},n),1\},1\}),\text{InitialSubstitutions}\to +\{\text{ExpandScalarProduct}(\text{SPD}(\text{k1}-\text{gkin} +\;\text{meta} n \;\text{u0b}))\to \;\text{SPD}(\text{k1}-\text{gkin} +\;\text{meta} n \;\text{u0b})\},\text{IntermediateSubstitutions}\to +\{\text{SPD}(n)\to 0,\text{SPD}(\text{nb})\to +0,\text{SPD}(n,\text{nb})\to 2\})

    +

    However, in this case the function can also figure out the necessary +square completion on its own if we tell it that k1 is a +momentum w.r.t which the square should be completed. In this case the +option IntermediateSubstitutions is not really needed

    +
    FromGFAD[ex, LoopMomenta -> {k1}]
    +

    \text{FromGFAD}(\text{GFAD}(\{\{\text{SPD}(\text{k1},\text{k1})-2 +\;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{SPD}(\text{k1},n),1\},1\}),\text{LoopMomenta}\to +\{\text{k1}\})

    +

    It is still helpful, though

    +
    FromGFAD[ex, LoopMomenta -> {k1}, IntermediateSubstitutions -> {SPD[n] -> 0, SPD[nb] -> 0, SPD[n, nb] -> 2}]
    +

    \text{FromGFAD}(\text{GFAD}(\{\{\text{SPD}(\text{k1},\text{k1})-2 +\;\text{gkin} \;\text{meta} \;\text{u0b} +\;\text{SPD}(\text{k1},n),1\},1\}),\text{LoopMomenta}\to +\{\text{k1}\},\text{IntermediateSubstitutions}\to \{\text{SPD}(n)\to +0,\text{SPD}(\text{nb})\to 0,\text{SPD}(n,\text{nb})\to 2\})

    +

    If we have multiple loop momenta, we need to first complete the +square with respect to them before handling the full expression

    +
    ex = GFAD[{{SPD[k1, k1] + 2 SPD[k1, k2] + SPD[k2, k2] + 2 gkin meta (SPD[k1, n] + SPD[k2, n]), 1}, 1}]
    +

    \text{GFAD}(\{\{2 \;\text{gkin} +\;\text{meta} (\text{SPD}(\text{k1},n)+\text{SPD}(\text{k2},n))+2 +\;\text{SPD}(\text{k1},\text{k2})+\text{SPD}(\text{k1},\text{k1})+\text{SPD}(\text{k2},\text{k2}),1\},1\})

    +
    FromGFAD[ex, LoopMomenta -> {k1, k2}]
    +

    \text{FromGFAD}(\text{GFAD}(\{\{2 +\;\text{gkin} \;\text{meta} +(\text{SPD}(\text{k1},n)+\text{SPD}(\text{k2},n))+2 +\;\text{SPD}(\text{k1},\text{k2})+\text{SPD}(\text{k1},\text{k1})+\text{SPD}(\text{k2},\text{k2}),1\},1\}),\text{LoopMomenta}\to +\{\text{k1},\text{k2}\})

    +
    FromGFAD[ex, LoopMomenta -> {k1, k2}, 
    +  InitialSubstitutions -> {ExpandScalarProduct[SPD[k1 + k2]] -> SPD[k1 + k2]}, 
    +  IntermediateSubstitutions -> {SPD[n] -> 0}]
    +

    \text{FromGFAD}(\text{GFAD}(\{\{2 +\;\text{gkin} \;\text{meta} +(\text{SPD}(\text{k1},n)+\text{SPD}(\text{k2},n))+2 +\;\text{SPD}(\text{k1},\text{k2})+\text{SPD}(\text{k1},\text{k1})+\text{SPD}(\text{k2},\text{k2}),1\},1\}),\text{LoopMomenta}\to +\{\text{k1},\text{k2}\},\text{InitialSubstitutions}\to +\{\text{ExpandScalarProduct}(\text{SPD}(\text{k1}+\text{k2}))\to +\;\text{SPD}(\text{k1}+\text{k2})\},\text{IntermediateSubstitutions}\to +\{\text{SPD}(n)\to 0\})

    diff --git a/FeynCalcBookDev/MomentumCombine.html b/FeynCalcBookDev/MomentumCombine.html index a6c67775..c84cf77b 100644 --- a/FeynCalcBookDev/MomentumCombine.html +++ b/FeynCalcBookDev/MomentumCombine.html @@ -111,7 +111,29 @@

    FeynCalc manual (development version)

    MomentumCombine

    MomentumCombine[expr] is the inverse operation to MomentumExpand and ExpandScalarProduct. -MomentumCombine combines also Pairs.

    +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, Examples class="sourceCode mathematica">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

    diff --git a/FeynCalcBookDev/ToGFAD.html b/FeynCalcBookDev/ToGFAD.html index f15e6780..4bc474d5 100644 --- a/FeynCalcBookDev/ToGFAD.html +++ b/FeynCalcBookDev/ToGFAD.html @@ -115,7 +115,12 @@

    ToGFAD

    kinematic invariants, where e.g. scalar products may not be appear explicitly when using FAD- or SFAD-notation.

    -

    ToGFAD is the inverse operation to FromGFAD.

    +

    ToGFAD is the inverse operation to +FromGFAD.

    +

    Using the option “OnlyMixedQuadraticEikonalPropagators” one can limit +the conversion to a particular type of standard and Cartesian propagator +denominators that contain both quadratic and eikonal pieces. Those are +the ones that usually cause issues when doing topology minimization

    See also

    Overview, GFAD, SFAD, Examples class="sourceCode mathematica">ToGFAD[SFAD[{p + q, m^2}], FinalSubstitutions -> {SPD[q] -> 0}] // StandardForm (*FeynAmpDenominator[GenericPropagatorDenominator[-m^2 + Pair[Momentum[p, D], Momentum[p, D]] + 2 Pair[Momentum[p, D], Momentum[q, D]], {1, 1}]]*) +

    This is not a mixed quadratic-eikonal propagator so it remains +unchanged

    +
    ToGFAD[SFAD[{{k2, 0}, {0, 1}, 1}], "OnlyMixedQuadraticEikonalPropagators" -> True, 
    +   FCE -> True] // StandardForm
    +
    +(*SFAD[{{k2, 0}, {0, 1}, 1}]*)
    +

    This is a mixed propagator that will be converted to a +GFAD

    +
    ToGFAD[SFAD[{{k1, 2 gkin meta k1 . n - 2 gkin meta u0b k1 . n - meta u0b k1 . nb}, 
    +     {2 gkin meta^2 u0b - 2 gkin meta^2 u0b^2, 1}, 1}], 
    +   "OnlyMixedQuadraticEikonalPropagators" -> True, FCE -> True] // StandardForm
    +
    +(*GFAD[{{-2 gkin meta^2 u0b + 2 gkin meta^2 u0b^2 + SPD[k1, k1] + 2 gkin meta SPD[k1, n] - 2 gkin meta u0b SPD[k1, n] - meta u0b SPD[k1, nb], 1}, 1}]*)
    diff --git a/FeynCalcBookDev/img/189bbth1nyc1e.svg b/FeynCalcBookDev/img/189bbth1nyc1e.svg new file mode 100644 index 00000000..025402c7 --- /dev/null +++ b/FeynCalcBookDev/img/189bbth1nyc1e.svg @@ -0,0 +1,77 @@ + + + + + + + + + + + + + + + + + + + +