Skip to content

Commit 3c2faf8

Browse files
t-hahnVladyslav Shtabovenko
authored andcommitted
FeynArts 3.9; Last update: 4 May 15;
Added `Charge' quantum number to S[5] (charged Higgs) in MSSM.mod (MSSMCT.mod not affected).
1 parent 75b0ddc commit 3c2faf8

File tree

8 files changed

+5821
-57
lines changed

8 files changed

+5821
-57
lines changed

FeynArts.m

Lines changed: 8 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
33
This is FeynArts, Version 3.9
44
Copyright by Sepp Kueblbeck, Hagen Eck, and Thomas Hahn 1991-2014
5-
last modified 2 Dec 14 by Thomas Hahn
5+
last modified 4 Apr 15 by Thomas Hahn
66
77
Release notes:
88
@@ -46,7 +46,7 @@
4646
Print[""];
4747
Print["FeynArts 3.9"];
4848
Print["by Hagen Eck, Sepp Kueblbeck, and Thomas Hahn"];
49-
Print["last revised 2 Dec 14"]
49+
Print["last revised 4 Apr 15"]
5050

5151

5252
BeginPackage["FeynArts`"]
@@ -544,16 +544,6 @@ symbols which must (or must not, if preceded by \"!\") appear in the
544544
"Reinitialize is an option of InitializeModel. InitializeModel will
545545
reinitialize the current model only if Reinitialize is set to True."
546546

547-
TagCouplings::usage =
548-
"TagCouplings is an option of InitializeModel. If True, all couplings
549-
will be tagged by Coupling[i], where i is the coupling's position in
550-
M$CouplingMatrices, such that parts of the amplitude can be traced back
551-
to specific couplings later."
552-
553-
Coupling::usage =
554-
"Coupling[i...] is the identifier used to tag the coupling at
555-
M$CouplingMatrices[[i]]."
556-
557547
GenericModelEdit::usage =
558548
"GenericModelEdit is an option of InitializeModel. It specifies code
559549
that will be executed directly after loading the generic model, i.e.
@@ -1064,12 +1054,8 @@ as arguments the quantum numbers of the involved fields (times -1 for
10641054
to add graph information to the amplitude."
10651055

10661056
VertexDebug::usage =
1067-
"VertexDebug[info] is a function invoked whenever a vertex cannot be
1068-
resolved. It is used for debugging FeynArts."
1069-
1070-
VertexMonitor::usage =
1071-
"VertexMonitor[info] is a function invoked whenever a vertex is resolved.
1072-
It is used for debugging FeynArts."
1057+
"VertexDebug[debuginfo] is a function invoked whenever a vertex cannot
1058+
be resolved. It is used for debugging FeynArts."
10731059

10741060
VertexFunction::usage =
10751061
"VertexFunction[o][f1, f2, ...] represents the 1PI vertex function of
@@ -1362,7 +1348,9 @@ topologies where it specifies whether the field numbers (the n in
13621348
"P$Generic is the pattern for generic fields."
13631349

13641350
P$NonCommuting::usage =
1365-
"P$NonCommuting is the pattern for the non-commuting generic fields."
1351+
"P$NonCommuting is the pattern for the non-commuting generic fields.
1352+
A list {patt1, patt2, ...} (e.g. {F, U}) means that chains are built
1353+
first particles matching patt1, then for patt2, etc."
13661354

13671355
P$InsertionObjects::usage =
13681356
"P$InsertionObjects matches the objects in the generic amplitude that
@@ -1373,7 +1361,7 @@ topologies where it specifies whether the field numbers (the n in
13731361

13741362
P$Generic = F | S | V | T | U | _Mix | _Rev
13751363

1376-
P$NonCommuting = F | U
1364+
P$NonCommuting = {F, U}
13771365

13781366
P$InsertionObjects = G[_][_][__][__] | _Mass | _GaugeXi |
13791367
VertexFunction[_][__]

FeynArts/Analytic.m

Lines changed: 24 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@
22
Analytic.m
33
Translation of InsertFields output into
44
analytic expressions
5-
last modified 2 Dec 14 th
5+
last modified 4 Apr 15 th
66
*)
77

88
Begin["`Analytic`"]
@@ -56,7 +56,8 @@
5656

5757
CreateFeynAmp[ tops:TopologyList[info___][___], options___Rule ] :=
5858
Block[ {alevel, pref, next, gaugeru, truncru, momcons, graphinfo, toplist,
59-
amps, head, topnr = 1, opt = ActualOptions[CreateFeynAmp, options]},
59+
amps, head, topnr = 1, p$nc = Level[P$NonCommuting, {-1}, Alternatives],
60+
opt = ActualOptions[CreateFeynAmp, options]},
6061

6162
If[ (alevel = ResolveLevel[AmplitudeLevel /. opt /. {info} /.
6263
Options[InsertFields]]) === $Failed,
@@ -329,20 +330,31 @@ explicit spinor index with which it is possible (outside of FeynArts)
329330
e.g. when computing counter terms from the self energies *)
330331
Fixgmc[ c1:_[__, _?SelfConjugate], r___, c2:_[__, _?SelfConjugate] ] :=
331332
dot[c1, r, c2] /;
332-
OrderedQ[{c2[[0, 1]][ c2[[2, 1]] ], c1[[0, 1]][ c1[[1, 1]] ]}]
333+
OrderedQ[{c2[[0, 1]] @ c2[[2, 1]], c1[[0, 1]] @ c1[[1, 1]]}]
333334

334335
Fixgmc[ c__ ] := Reverse[ ReverseProp/@ dot[c] ]
335336

336337

337-
MakeFermionChains[ top_ ] := top /; FreeQ[top, P$NonCommuting]
338+
Chkgmc[ c_ ] := Chkgmc[Level[c, {2}][[{1, -2}]], c]
339+
340+
Chkgmc[ {v_, v_}, c_tr ] := c
341+
342+
Chkgmc[ {Vertex[1][_], Vertex[1][_]}, c_dot ] := c
343+
344+
Chkgmc[ _, c_ ] := List@@ c
345+
346+
347+
NCSelect[ top_, nc_ ] := (
348+
ch = {ch, BuildChain@@ gmc/@ Select[top, !FreeQ[#[[3]], nc]&]};
349+
Select[top, FreeQ[#[[3]], nc]&] )
350+
351+
352+
MakeFermionChains[ top_ ] := top /; FreeQ[top, p$nc]
338353

339354
MakeFermionChains[ top_ ] :=
340-
Block[ {res, ext},
341-
res = Append[
342-
Select[top, FreeQ[#[[3]], P$NonCommuting]&],
343-
BuildChain@@ gmc/@ Select[top, !FreeQ[#[[3]], P$NonCommuting]&] /.
344-
gmc -> Fixgmc
345-
] /. BuildChain -> Sequence;
355+
Block[ {ch = {}, res, ext},
356+
res = Fold[NCSelect, top, Flatten[{P$NonCommuting}]];
357+
res = Flatten[{res, Cases[ch, gmc[c__] :> Chkgmc[Fixgmc[c]], Infinity]}];
346358

347359
(* Since fermion chains are always traversed opposite to the
348360
fermion flow, we need the sign of the permutation that gets
@@ -403,7 +415,7 @@ need another (-1)^(Length[ext]/2).
403415
If[ perm === $Failed, Return[{}] ];
404416
v = v[[perm]];
405417
If[ cto < 0,
406-
I PV[ If[FreeQ[v, P$NonCommuting], Identity, NonCommutative][
418+
I PV[ If[FreeQ[v, p$nc], Identity, NonCommutative][
407419
VertexFunction[-cto]@@ v ] ],
408420
(* else *)
409421
AnalyticalCoupling[cto]@@ v ]
@@ -802,8 +814,7 @@ kinematical expression (for a G[-]). If neither method resolves TheC,
802814

803815
FermionRouting[ gr_:{}, top:P$Topology, ___ ] := Level[
804816
merge@@ Apply[ prop[ #1[[1]], #2[[1]] ]&,
805-
Select[AddFieldNo[top] /. List@@ gr, !FreeQ[#, P$NonCommuting]&],
806-
1 ],
817+
Select[AddFieldNo[top] /. List@@ gr, !FreeQ[#, p$nc]&], 1 ],
807818
{-1} ]
808819

809820

0 commit comments

Comments
 (0)