•Generation of topologies and insertion of fields

This FeynArts filter discards topologies with more than one odd vertex:

$ExcludeTopologies[SeveralOddVertices] = ((Length[Union[Cases[#, Vertex[_ ? (OddQ[#] &), ___][_], Infinity]]] < 5) &) ;

Construction of topologies:

mesonstop = TopologyList @@ Union[Flatten[{#, List @@ AddExternalLegs[#, ExternalPropagators -> 1], List @@ AddExternalLegs[#, ExternalPropagators -> 2]} &[CreateTopologies[1, 2 -> 1, Adjacencies -> {3, 4, 5, 6}, ExcludeTopologies -> {(* SelfEnergyCTs, WFCorrections, *) SeveralOddVertices}]]]] ;

Length[mesonstop]

47

Paint[Take[mesonstop, {1, -1}], AutoEdit -> False, SheetHeader -> False, Numbering -> True, ColumnsXRows -> {3, 1}] ;

Field insertion:

$VerticesSpecifications = {{VertexFields -> {PseudoScalar[0][0], PhiMeson[0]}, PhiModel -> ChPT3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PseudoScalar[0][0], PhiMeson[0], Scalar[1][0]}, PhiModel -> ChPTW3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PhiMeson[0], PhiMeson[0], Scalar[1][0]}, PhiModel -> ChPTW3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PseudoScalar[0][0], PhiMeson[0], PhiMeson[0], PhiMeson[0]}, PhiModel -> ChPT3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PhiMeson[0], PhiMeson[0], PhiMeson[0], PhiMeson[0]}, PhiModel -> ChPT3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PhiMeson[0], PhiMeson[0], PhiMeson[0], Scalar[1][0]}, PhiModel -> ChPTW3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PhiMeson[0], PhiMeson[0], PhiMeson[0], PhiMeson[0], Scalar[1][0]}, PhiModel -> ChPTW3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> Automatic}, {VertexFields -> {PseudoScalar[0][0], PhiMeson[0], PhiMeson[0], PhiMeson[0], Scalar[1][0]}, PhiModel -> ChPTW3, PerturbationOrder -> {2}, CouplingSign -> 1, XFileName -> {"ChPTW3P00P10P10P10o2"}}} ;

InitializeModel["Automatic", GenericModel -> "Automatic", Reinitialize -> True] ;

mesonins = InsertFields[mesonstop, {PseudoScalar[0][0, {i1}], Scalar[1][0]} -> {PseudoScalar[0][0, {i3}]}, Model -> "Automatic", GenericModel -> "Automatic", InsertionLevel -> Classes] ;

mesonins // Length

10

Making things look nice (may not work with newer versions of FeynArts):

(* Odd internal vertices *) boxrules1 = {Propagator[Internal][Vertex[l_ ? OddQ][n_], v2 : Vertex[__][_], f_] -> Propagator[Internal][Vertex[l, 1][n], v2, f], Propagator[Internal][v2 : Vertex[__][_], Vertex[l_ ? OddQ][n_], f_] -> Propagator[Internal][v2, Vertex[l, 1][n], f]} ;

(* Odd vertices attaching to a vertex with more than 2 legs *) boxrules2 = {Propagator[ty_][Vertex[l_ ? OddQ][n_], v2 : Vertex[__][_], f_] /; l > 2 -> Propagator[ty][Vertex[l, 1][n], v2, f], Propagator[ty_][v2 : Vertex[__][_], Vertex[l_ ? OddQ][n_], f_] /; l > 2 -> Propagator[ty][v2, Vertex[l, 1][n], f]} ;

(* Vertices with a scalar leg *) (* boxrules3 = {Propagator[ty_][Vertex[l_][n_], v2 : Vertex[__][_], Field[2]] /; l > 1 -> Propagator[ty][Vertex[l, 1][n], v2, Field[2]], Propagator[ty_][v2 : Vertex[__][_], Vertex[l_][n_], Field[2]] /; l > 1 -> Propagator[ty][v2, Vertex[l, 1][n], Field[2]]} ; *)

(* Vertices with a scalar leg *) boxrules3 = {t : (Topology[_][__] -> _) :> (sverts = Select[List @@ t[[1]], (! FreeQ[#, Field[2], Infinity] &)] /. {Vertex[1][_] -> Sequence[], _Field -> Sequence[], _Propagator -> Sequence} ; rul = (Rule[#, #[[0, 0]][#[[0, 1]], 1][#[[1]]]] & /@ sverts) ; t /. rul)} ;

Clear[FeynArts`Graphics`VertexGraphics]

FeynArts`Graphics`VertexGraphics[FeynArts`Graphics`e_][FeynArts`Graphics`n_] := Point[Vertex[FeynArts`Graphics`e][FeynArts`Graphics`n]]

rect[p_List, r_] := Rectangle[p - {r, r}, p + {r, r}] ;

FeynArts`Graphics`VertexGraphics[e_, c_][n_] := {Array[rect[Vertex[e, c][n], 0.4 * FeynArts`Graphics`CrossDiameter * #] &, c]}

Graphical representation of the process:

Paint[mesonins /. boxrules1 //. boxrules2 /. boxrules3, PaintLevel -> {Classes}, AutoEdit -> False, SheetHeader -> False, Numbering -> False, ColumnsXRows -> {3, 1}] ;

[Graphics:../HTMLFiles/index_208.gif]

[Graphics:../HTMLFiles/index_209.gif]

[Graphics:../HTMLFiles/index_210.gif]

[Graphics:../HTMLFiles/index_211.gif]


Converted by Mathematica  (July 10, 2003)