
(* description = "ee -> VVV+jets|ee -> VVV+jets|ee -> VVV|On-shell boson pair production (Photon, W, Z in all combinations) in e+e- at NLO EW and NLO QED." *)

SelectInterference = {gQCD -> 0};

qed1 = {
  InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {V[3],U[3],S[3]}, NoQuarkMixing}},
  SelectLoopDiagrams -> ( Not[ContainsFermionLoop[##] && NLegsOnLoop[2][##]] && ParticlesInLoop[V[1]][##]  &),
  QED -> 1,
  SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]
  };


(* NLO EW *)

(* eexzza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexwwxa *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexaza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexaaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];

(* eexzzz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexwwxz *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexazz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexaaz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];

(* NLO EW with finite masses *)

(* eexzza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexwwxa *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexaza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexaaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];

(* eexzzz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexwwxz *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexazz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];
(* eexaaz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> ME, MM -> MM}]];


(* NLO QED *)

(* eexzza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[1]}, UnitaryGauge -> False, Sequence @@ qed1];
(* eexaza *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[1]}, UnitaryGauge -> False, Sequence @@ qed1];
(* eexaaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[1]}, UnitaryGauge -> False, Sequence @@ qed1];

(* mmxzzz *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[2], V[2], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* mmxazz *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[2], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* mmxaaz *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[1], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];


(* eexzzaa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[1], V[1]}];
(* eexwwxaa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[1], V[1]}];
(* eexaaaa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[1], V[1]}];
(* eexazaa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[1], V[1]}];

(* mmxzzza *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[2], V[2], V[1], V[2]}];
(* mmxwwxza *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> {-V[3], V[3], V[1], V[2]}];
(* mmxzaaa *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[1], V[1], V[2]}];
(* mmxzzaa *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[2], V[1], V[2]}];


