
(* description = "ee -> VV+jets|ee -> VV+jets|ee -> VV|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 *)

(* eexzz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexwwx *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexaz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];
(* eexaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1]}, UnitaryGauge -> False, SetParameters -> JoinOptions[{ME -> 0, MM -> 0}]];

(* NLO EW with finite masses *)

(* eexzz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2]}, UnitaryGauge -> False, OpenLoopsModel -> "SM_yuksel",  SetParameters -> JoinOptions[{ME -> ME, MM -> MM, YE -> 0}]];
(* eexwwx *) AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3]}, UnitaryGauge -> False, OpenLoopsModel -> "SM_yuksel", SetParameters -> JoinOptions[{ME -> ME, MM -> MM, YE -> 0}]];
(* eexaz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2]}, UnitaryGauge -> False, OpenLoopsModel -> "SM_yuksel", SetParameters -> JoinOptions[{ME -> ME, MM -> MM, YE -> 0}]];
(* eexaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1]}, UnitaryGauge -> False, OpenLoopsModel -> "SM_yuksel", SetParameters -> JoinOptions[{ME -> ME, MM -> MM, YE -> 0}]];

(* NLO QED *)

(* eexzz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* eexaz *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* eexaa *)  AddProcess[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1]}, UnitaryGauge -> False, Sequence @@ qed1];

(* mmxzz *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[2], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* mmxaz *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[2]}, UnitaryGauge -> False, Sequence @@ qed1];
(* mmxaa *)  AddProcess[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[1]}, UnitaryGauge -> False, Sequence @@ qed1];


(* eexzza *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[2], V[2], V[1]}];
(* eexwwxa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> {-V[3], V[3], V[1]}];
(* eexaaa *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[1], V[1]}];
(* eexaza *) AddReal[FeynArtsProcess -> { F[2,{1}], -F[2,{1}]} -> { V[1], V[2], V[1]}];

(* mmxzza *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[2], V[2], V[1]}];
(* mmxwwxa *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> {-V[3], V[3], V[1]}];
(* mmxaaa *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[1], V[1]}];
(* mmxaza *) AddReal[FeynArtsProcess -> { F[2,{2}], -F[2,{2}]} -> { V[1], V[2], V[1]}];

