
(* description = "pp -> VV+jets|pp -> VV+jets|pp -> VVj|On-shell boson pair plus jet production (Photon, W, Z in all combinations). nf=6 and nf=5 included." *)

SelectInterference = {eQED -> 4};
OTFColourCorrelations = True;

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


(* ZZ *)

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

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

(* dddxdxzz *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[2], V[2], F[4,{1}],  F[4,{1}]}];
(* uuuxuxzz *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[2], V[2], F[3,{1}],  F[3,{1}]}];
(* uuxddxzz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2], F[3,{1}], -F[3,{1}]}];
(* ddxssxzz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2], F[4,{2}], -F[4,{2}]}];
(* uuxccxzz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2], F[3,{2}], -F[3,{2}]}];
(* ddxzzgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2], V[5]    ,  V[5]    }];
(* uuxzzgg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2], V[5]    ,  V[5]    }];

(* bbbxbxzz *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], V[2], F[4,{3}], -F[4,{3}]}];
(* uuxbbxzz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], V[2], F[4,{3}], -F[4,{3}]}];
(* ddxbbxzz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], V[2], F[4,{3}], -F[4,{3}]}];
(* bbxzzgg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], V[2], V[5]    ,  V[5]    }];

(* WW *)

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

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

(* dddxdxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> {-V[3],  V[3],  F[4,{1}],  F[4,{1}]}];
(* uuxddxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3],  V[3],  F[3,{1}], -F[3,{1}]}];
(* ddxssxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3],  V[3],  F[4,{2}], -F[4,{2}]}];
(* ccxddxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3],  V[3],  F[3,{2}], -F[3,{2}]}];
(* uuuxuxwwx  *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> {-V[3],  V[3],  F[3,{1}],  F[3,{1}]}];
(* uuxccxwwx  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3],  V[3],  F[3,{2}], -F[3,{2}]}];
(* uxcdsxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> {-V[3],  V[3],  F[4,{2}], -F[3,{2}]}];
(* ddxwwxgg   *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3],  V[3],  V[5]    ,  V[5]    }];
(* uuxwwxgg   *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3],  V[3],  V[5]    ,  V[5]    }];

(* ddxbbxwwx  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3],  V[3],  F[4,{3}], -F[4,{3}]}];
(* uuxbbxwwx  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> {-V[3],  V[3],  F[4,{3}], -F[4,{3}]}];
(* bbbxbxwwx  *) AddReal[FeynArtsProcess -> { F[4,{3}],  F[4,{3}]} -> {-V[3],  V[3],  F[4,{3}],  F[4,{3}]}];
(* bbxwwxgg   *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> {-V[3],  V[3],  V[5]    ,  V[5]    }];


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

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


(* W+ Z *)
(* uddxdxzw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], -V[3],  F[4,{1}], -F[3,{1}]}];
(* cddxsxzw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], -V[3],  F[4,{2}], -F[3,{2}]}];
(* uuuxdxzw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[2], -V[3],  F[3,{1}], -F[3,{1}]}];
(* uccxdxzw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[2], -V[3],  F[3,{2}], -F[3,{2}]}];
(* udxzwgg   *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[2], -V[3],  V[5]    ,  V[5]    }];
(* udxbbxzw  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[4,{1}]} -> { V[2], -V[3],  F[4,{3}], -F[4,{3}]}];

(* W- Z *)
(* uxdddxzwx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[2],  V[3],  F[4,{1}],  F[3,{1}]}];
(* cxddxszwx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2],  V[3],  F[3,{2}], -F[4,{2}]}];
(* uuxuxdzwx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[3,{1}]} -> { V[2],  V[3],  F[3,{1}],  F[3,{1}]}];
(* uxccxdzwx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[2],  V[3],  F[3,{2}], -F[3,{2}]}];
(* uxdzwxgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[2],  V[3],  V[5]    ,  V[5]    }];
(* uxdbbxzwx *) AddReal[FeynArtsProcess -> {-F[3,{1}],  F[4,{1}]} -> { V[2],  V[3],  F[4,{3}], -F[4,{3}]}];

(* ZA *)

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

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

(* dddxdxaz *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1], V[2], F[4,{1}],  F[4,{1}]}];
(* uuuxuxaz *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1], V[2], F[3,{1}],  F[3,{1}]}];
(* uuxddxaz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2], F[3,{1}], -F[3,{1}]}];
(* ddxssxaz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2], F[4,{2}], -F[4,{2}]}];
(* uuxccxaz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2], F[3,{2}], -F[3,{2}]}];
(* ddxazgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2], V[5]    ,  V[5]    }];
(* uuxazgg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2], V[5]    ,  V[5]    }];

(* bbbxbxaz *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[2], F[4,{3}], -F[4,{3}]}];
(* uuxbbxaz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[2], F[4,{3}], -F[4,{3}]}];
(* ddxbbxaz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[2], F[4,{3}], -F[4,{3}]}];
(* bbxazgg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[2], V[5]    ,  V[5]    }];


(* WA *)

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

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

(* W+ A *)
(* uddxdxaw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], -V[3],  F[4,{1}], -F[3,{1}]}];
(* cddxsxaw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], -V[3],  F[4,{2}], -F[3,{2}]}];
(* uuuxdxaw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3],  F[3,{1}], -F[3,{1}]}];
(* uccxdxaw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3],  F[3,{2}], -F[3,{2}]}];
(* udxawgg   *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -V[3],  V[5]    ,  V[5]    }];
(* udxbbxaw  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[4,{1}]} -> { V[1], -V[3],  F[4,{3}], -F[4,{3}]}];

(* W- A *)
(* uxdddxawx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1],  V[3],  F[4,{1}],  F[3,{1}]}];
(* cxddxsawx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1],  V[3],  F[3,{2}], -F[4,{2}]}];
(* uuxuxdawx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[3,{1}]} -> { V[1],  V[3],  F[3,{1}],  F[3,{1}]}];
(* uxccxdawx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  V[3],  F[3,{2}], -F[3,{2}]}];
(* uxdawxgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  V[3],  V[5]    ,  V[5]    }];
(* uxdbbxawx *) AddReal[FeynArtsProcess -> {-F[3,{1}],  F[4,{1}]} -> { V[1],  V[3],  F[4,{3}], -F[4,{3}]}];


(* AA *)

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

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

(* dddxdxaa *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1], V[1], F[4,{1}],  F[4,{1}]}];
(* uuuxuxaa *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1], V[1], F[3,{1}],  F[3,{1}]}];
(* uuxddxaa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[3,{1}], -F[3,{1}]}];
(* ddxssxaa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{2}], -F[4,{2}]}];
(* uuxccxaa *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[3,{2}], -F[3,{2}]}];
(* ddxaagg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }];
(* uuxaagg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }];

(* bbbxbxaa *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* uuxbbxaa *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* ddxbbxaa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* bbxaagg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], V[5]    ,  V[5]    }];




ChannelMap = {
  (* ZZ *)
  "bbxzzg" -> "ddxzzg MB=0",
  (* reals *)
  "ccxddxzz" -> "uuxddxzz",
  "ddxbbxzz" -> "ddxssxzz MB=0",
  "uuxbbxzz" -> "uuxddxzz MB=0",
  "bbbxbxzz" -> "dddxdxzz MB=0",
  "bbxzzgg"  -> "ddxzzgg MB=0",
  (* ZW *)
  (* reals *)
  "udxbbxzw"  -> "cddxsxzw[1,4,2,3,5,6] MB=0",
  "uxdbbxzwx" -> "cxddxszwx[1,4,2,3,5,6] MB=0",
  (* ZA *)
  "bbxazg" -> "ddxazg MB=0",
  (* reals *)
  "ccxddxaz" -> "uuxddxaz",
  "ddxbbxaz" -> "ddxssxaz MB=0",
  "uuxbbxaz" -> "uuxddxaz MB=0",
  "bbbxbxaz" -> "dddxdxaz MB=0",
  "bbxazgg"  -> "ddxazgg MB=0",
  (* WA *)
  (* reals *)
  "udxbbxaw"  -> "cddxsxaw[1,4,2,3,5,6] MB=0",
  "uxdbbxawx" -> "cxddxsawx[1,4,2,3,5,6] MB=0",
  (* AA *) 
  "bbxaag" -> "ddxaag MB=0",
  (* reals *)
  "ccxddxaa" -> "uuxddxaa",
  "ddxbbxaa" -> "ddxssxaa MB=0",
  "uuxbbxaa" -> "uuxddxaa MB=0",
  "bbbxbxaa" -> "dddxdxaa MB=0",
  "bbxaagg"  -> "ddxaagg MB=0"
};

