
(* description = "pp -> VV+jets|pp -> VV+jets|pp -> VV|On-shell boson pair production (Photon, W, Z in all combinations)." *)

SelectInterference = {eQED -> 4};

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


(* ZZ *)

(* ddxzz *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2]}];
(* uuxzz *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2]}];
(* bbxzz *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], V[2]}];

(* ddxzz *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2]}, Sequence @@ nf5];
(* uuxzz *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2]}, Sequence @@ nf5];
(* bbxzz *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], V[2]}, Sequence @@ nf5];


(* ddxzzg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2], V[5]}];
(* uuxzzg *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2], V[5]}];
(* bbxzzg *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], V[2], V[5]}];

(* WW *)

(* ddxwwx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3], V[3]}];
(* uuxwwx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3], V[3]}];
(* bbxwwx *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {-V[3], V[3]}];

(* ddxwwx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3], V[3]}, Sequence @@ nf5];
(* uuxwwx *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3], V[3]}, Sequence @@ nf5];
(* bbxwwx *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {-V[3], V[3]}, Sequence @@ nf5];

(* ddxwwxg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3], V[3], V[5]}];
(* uuxwwxg *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3], V[3], V[5]}];
(* bbxwwxg *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {-V[3], V[3], V[5]}];

(* ZW *)

(* udxzw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[2], -V[3]}];
(* uxdzwx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[2],  V[3]}];

(* udxzw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[2], -V[3]}, Sequence @@ nf5];
(* uxdzwx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[2],  V[3]}, Sequence @@ nf5];

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


(* ZA *)

(* ddxaz *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2]}];
(* uuxaz *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2]}];
(* bbxaz *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[2]}];

(* ddxaz *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2]}, Sequence @@ nf5];
(* uuxaz *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2]}, Sequence @@ nf5];
(* bbxaz *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[2]}, Sequence @@ nf5];

(* ddxazg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2], V[5]}];
(* uuxazg *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2], V[5]}];
(* bbxazg *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[2], V[5]}];

(* WA *)

(* udxaw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3]}];
(* uxdawx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  V[3]}];

(* udxaw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3]}, Sequence @@ nf5];
(* uxdawx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  V[3]}, Sequence @@ nf5];

(* udxawg  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3], V[5]}];
(* uxdawxg *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  V[3], V[5]}];

(* AA *)

(* ddxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1]}];
(* uuxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1]}];
(* bbxaa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1]}];

(* ddxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1]}, Sequence @@ nf5];
(* uuxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1]}, Sequence @@ nf5];
(* bbxaa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1]}, Sequence @@ nf5];

(* ddxaag *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], V[5]}];
(* uuxaag *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], V[5]}];
(* bbxaag *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], V[5]}];

ChannelMap = {
  "bbxzz" -> "ddxzz MB=0",
  "bbxaz" -> "ddxaz MB=0",
  "bbxaa" -> "ddxaa MB=0",
  (* real *)
  "bbxzzg" -> "ddxzzg MB=0",
  "bbxazg" -> "ddxazg MB=0",
  "bbxaag" -> "ddxaag MB=0"
};
