
(* description = "pp -> V+jets|pp -> V+jets|pp -> V(j)|On-shell vector boson (Z/W/Photon) production plus zero or one jet" *)


SelectInterference = {eQED -> 2};

(* Z *)

(* ddxz *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2]}];
(* uuxz *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2]}];
(* bbxz *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2]}];

(* W *)

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

(* Zj *)

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

(* dddxdxz *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[2],  F[4,{1}],  F[4,{1}]}];
(* uuxddxz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2],  F[3,{1}], -F[3,{1}]}];
(* ddxssxz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2],  F[4,{2}], -F[4,{2}]}];
(* ddxzgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2],  V[5]    ,  V[5]    }];
(* uuxzgg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2],  V[5]    ,  V[5]    }];
(* uuuxuxz *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[2],  F[3,{1}],  F[3,{1}]}];
(* uuxccxz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2],  F[3,{2}], -F[3,{2}]}];

(* ddxbbxz *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[2], -F[4,{3}],  F[4,{3}]}];
(* uuxbbxz *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[2], -F[4,{3}],  F[4,{3}]}];
(* bbbxbxz *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2], -F[4,{3}],  F[4,{3}]}];
(* bbxzgg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[2],  V[5]    ,  V[5]    }];


(* Wj *)

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

(* udxwgg   *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> {-V[3], V[5], V[5]}];
(* uddxdxw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3], F[4,{1}], -F[3,{1}]}];
(* cddxsxw  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> {-V[3], F[4,{2}], -F[3,{2}]}];
(* uuuxdxw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> {-V[3], F[3,{1}], -F[3,{1}]}];
(* udxbbxw  *) AddReal[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> {-V[3], F[4,{3}], -F[4,{3}]}];

(* uxdwxgg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[3], V[5], V[5]}];
(* uxdddxwx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[3], F[4,{1}],  F[3,{1}]}];
(* cxddxswx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[3], F[3,{2}], -F[4,{2}]}];
(* uuxuxdwx *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[3,{1}]} -> { V[3], F[3,{1}],  F[3,{1}]}];
(* uxdbbxwx *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[3], F[4,{3}], -F[4,{3}]}];

(* Aj *)

(* ddxag *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[5]}];
(* uuxag *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[5]}];
(* bbxag *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[5]}];

(* dddxdxa *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1],  F[4,{1}],  F[4,{1}]}];
(* uuxddxa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1],  F[3,{1}], -F[3,{1}]}];
(* ddxssxa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1],  F[4,{2}], -F[4,{2}]}];
(* ddxagg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1],  V[5]    ,  V[5]    }];
(* uuxagg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1],  V[5]    ,  V[5]    }];
(* uuuxuxa *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1],  F[3,{1}],  F[3,{1}]}];
(* uuxccxa *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1],  F[3,{2}], -F[3,{2}]}];

(* ddxbbxa *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], -F[4,{3}],  F[4,{3}]}];
(* uuxbbxa *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], -F[4,{3}],  F[4,{3}]}];
(* bbbxbxa *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], -F[4,{3}],  F[4,{3}]}];
(* bbxagg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1],  V[5]    ,  V[5]    }];



ChannelMap = {
  "bbxz" -> "ddxz MB=0",
  "bbxzg" -> "ddxzg MB=0",
  "ccxddxz" -> "uuxddxz",
  "ddxbbxz" -> "ddxssxz MB=0",
  "uuxbbxz" -> "uuxddxz MB=0",
  "bbbxbxz" -> "dddxdxz MB=0",
  "bbxzgg"  -> "ddxzgg MB=0",
  "uccxdxw"  -> "cddxsxw",
  "udxbbxw"  -> "cddxsxw[1,4,2,3,5] MB=0",
  "uxccxdwx" -> "cxddxswx",
  "uxdbbxwx" -> "cxddxswx[1,4,2,3,5] MB=0",
  (* Aj *)
  "bbxag" -> "ddxag MB=0",
  (* reals *)
  "ccxddxa" -> "uuxddxa",
  "ddxbbxa" -> "ddxssxa MB=0",
  "uuxbbxa" -> "uuxddxa MB=0",
  "bbbxbxa" -> "dddxdxa MB=0",
  "bbxagg"  -> "ddxagg MB=0"
};
