
(* description = "pp -> V+jets|pp -> Z/A(->ll)+jets|pp -> lljj|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]}};
SetParameters = JoinOptions[{ME -> 0}];

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

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

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

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


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

(* eexdddxdxg   *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5],  F[4,{1}],  F[4,{1}]}];
(* eexuuxddxg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5],  F[3,{1}], -F[3,{1}]}];
(* eexddxssxg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5],  F[4,{2}], -F[4,{2}]}];
(* eexuuuxuxg   *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5],  F[3,{1}],  F[3,{1}]}];
(* eexuuxccxg   *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5],  F[3,{2}], -F[3,{2}]}];
(* eexddxbbxg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], -F[4,{3}],  F[4,{3}]}];
(* eexuuxbbxg   *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[2,{1}], -F[2,{1}], V[5], -F[4,{3}],  F[4,{3}]}];
(* eexbbbxbxg   *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[2,{1}], -F[2,{1}], V[5], -F[4,{3}],  F[4,{3}]}];

(* nenexbbxggg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5], V[5]}];
(* nenexuuxggg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5], V[5]}];
(* nenexddxggg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], V[5], V[5]}];

(* nenexdddxdxg *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5],  F[4,{1}],  F[4,{1}]}];
(* nenexuuxddxg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5],  F[3,{1}], -F[3,{1}]}];
(* nenexddxssxg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5],  F[4,{2}], -F[4,{2}]}];
(* nenexuuuxuxg *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5],  F[3,{1}],  F[3,{1}]}];
(* nenexuuxccxg *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5],  F[3,{2}], -F[3,{2}]}];
(* nenexddxbbxg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], -F[4,{3}],  F[4,{3}]}];
(* nenexuuxbbxg *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {F[1,{1}], -F[1,{1}], V[5], -F[4,{3}],  F[4,{3}]}];
(* nenexbbbxbxg *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {F[1,{1}], -F[1,{1}], V[5], -F[4,{3}],  F[4,{3}]}];

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",
  (* reals *)
  "eexccxddxg"   -> "eexuuxddxg",
  "eexddxbbxg"   -> "eexddxssxg MB=0",
  "eexuuxbbxg"   -> "eexuuxddxg MB=0",
  "eexbbbxbxg"   -> "eexdddxdxg MB=0",
  "eexbbxggg"    -> "eexddxggg MB=0",
  "nenexccxddxg" -> "nenexuuxddxg",
  "nenexddxbbxg" -> "nenexddxssxg MB=0",
  "nenexuuxbbxg" -> "nenexuuxddxg MB=0",
  "nenexbbbxbxg" -> "nenexdddxdxg MB=0",
  "nenexbbxggg"  -> "nenexddxggg MB=0"
};
