(* description = "pp -> V+jets|pp -> Z/A(->ll)+jets|pp -> lljj|Loop-squared off-shell Z/A boson plus two jets production with leptonic decays (l+l- and nn)" *)

SelectInterference = {eQED -> 4};
CreateTopologiesOptions = {ExcludeTopologies -> {Snails, WFCorrectionCTs, TadpoleCTs, Loops[6]}};
ColourCorrelations = True;
OTFColourCorrelations = False;

(* eexuuxgg    *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexddxgg    *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexbbxgg    *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];

(* eexdddxdx   *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[4,{1}],  F[4,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexuuxddx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{1}], -F[3,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexddxssx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[4,{2}], -F[4,{2}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexuuuxux   *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{1}],  F[3,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexuuxccx   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{2}], -F[3,{2}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexddxbbx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexuuxbbx   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexbbbxbx   *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];

(* nenexuuxgg  *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexddxgg  *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexbbxgg  *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];

(* nenexdddxdx *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[4,{1}],  F[4,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexuuxddx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{1}], -F[3,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexddxssx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[4,{2}], -F[4,{2}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexuuuxux *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{1}],  F[3,{1}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexuuxccx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{2}], -F[3,{2}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexddxbbx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexuuxbbx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* nenexbbbxbx *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{ME -> 0}]];

(* eexuuxggg   *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexddxggg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];
(* eexbbxggg   *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, SetParameters -> JoinOptions[{ME -> 0}]];


nf5 = {
        SetParameters -> JoinOptions[{ME -> 0, MB -> 0, nf -> 5}],
        InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {F[3,{3}]}, NoQuarkMixing}}
};

(* eexuuxgg    *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, Sequence @@ nf5];
(* eexddxgg    *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, Sequence @@ nf5];
(* eexbbxgg    *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5]}, Sequence @@ nf5];

(* eexdddxdx   *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[4,{1}],  F[4,{1}]}, Sequence @@ nf5];
(* eexuuxddx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{1}], -F[3,{1}]}, Sequence @@ nf5];
(* eexddxssx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}],  F[4,{2}], -F[4,{2}]}, Sequence @@ nf5];
(* eexuuuxux   *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{1}],  F[3,{1}]}, Sequence @@ nf5];
(* eexuuxccx   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}],  F[3,{2}], -F[3,{2}]}, Sequence @@ nf5];
(* eexddxbbx   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];
(* eexuuxbbx   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];
(* eexbbbxbx   *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];

(* nenexuuxgg  *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, Sequence @@ nf5];
(* nenexddxgg  *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, Sequence @@ nf5];
(* nenexbbxgg  *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5]}, Sequence @@ nf5];

(* nenexdddxdx *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[4,{1}],  F[4,{1}]}, Sequence @@ nf5];
(* nenexuuxddx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{1}], -F[3,{1}]}, Sequence @@ nf5];
(* nenexddxssx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}],  F[4,{2}], -F[4,{2}]}, Sequence @@ nf5];
(* nenexuuuxux *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{1}],  F[3,{1}]}, Sequence @@ nf5];
(* nenexuuxccx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}],  F[3,{2}], -F[3,{2}]}, Sequence @@ nf5];
(* nenexddxbbx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];
(* nenexuuxbbx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];
(* nenexbbbxbx *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], -F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];

(* eexuuxggg   *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, Sequence @@ nf5];
(* eexddxggg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, Sequence @@ nf5];
(* eexbbxggg   *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], V[5], V[5], V[5]}, Sequence @@ nf5];


ChannelMap = {
  "eexccxddx"   -> "eexuuxddx",
  "eexddxbbx"   -> "eexddxssx MB=0",
  "eexuuxbbx"   -> "eexuuxddx MB=0",
  "eexbbbxbx"   -> "eexdddxdx MB=0",
  "eexbbxgg"    -> "eexddxgg MB=0",
  "nenexccxddx" -> "nenexuuxddx",
  "nenexddxbbx" -> "nenexddxssx MB=0",
  "nenexuuxbbx" -> "nenexuuxddx MB=0",
  "nenexbbbxbx" -> "nenexdddxdx MB=0",
  "nenexbbxgg"  -> "nenexddxgg MB=0"
};
