
(* description = "pp -> VV+jets|pp -> Z/A(->ll)A+jets|gg -> llA|Loop-induced matrix elements for off-shell Z/A boson with leptonic decay (l+l- and nn) plus on-shell photon production in gluon fusion." *)

SelectInterference = {eQED -> 6};

loop2approx = {
  SelectLoopDiagrams -> (ContainsFermionLoop[##] && ParticlesOnLoop[V[1|2],1][##] &),
  SelectTreeDiagrams -> (False &),
  SelectCTDiagrams -> NFieldPropagators[V[5],1]
};

loop2approxnf5 = {
  SetParameters -> JoinOptions[{ME -> 0, MB -> 0, nf -> 5}],
  InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {F[3,{3}]}, NoQuarkMixing}},
  SelectLoopDiagrams -> (ContainsFermionLoop[##] && ParticlesOnLoop[V[1|2],1][##] &),
  SelectTreeDiagrams -> (False &),
  SelectCTDiagrams -> NFieldPropagators[V[5],1]
};


nf5 = {
        SetParameters -> JoinOptions[{ME -> 0, YE -> 0, MB -> 0, nf -> 5}]
};



(* ZA nf=6 *)

(* eexagg   *) AddProcess[FeynArtsProcess -> {V[5], V[5]} -> {F[2,{1}], -F[2,{1}], V[1]}];
(* nenexagg *) AddProcess[FeynArtsProcess -> {V[5], V[5]} -> {F[1,{1}], -F[1,{1}], V[1]}];


(* eexddxa   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2"];
(* eexuuxa   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2"];
(* eexbbxa   *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2"];

(* nenexddxa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2"];
(* nenexuuxa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2"];
(* nenexbbxa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2"];

(* ZA nf=6 *)

(* eexagg   *) AddProcess[FeynArtsProcess -> {V[5], V[5]} -> {F[2,{1}], -F[2,{1}], V[1]}, Sequence @@ nf5];
(* nenexagg *) AddProcess[FeynArtsProcess -> {V[5], V[5]} -> {F[1,{1}], -F[1,{1}], V[1]}, Sequence @@ nf5];


(* eexddxa   *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];
(* eexuuxa   *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];
(* eexbbxa   *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], F[2,{1}], -F[2,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];

(* nenexddxa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];
(* nenexuuxa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];
(* nenexbbxa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], F[1,{1}], -F[1,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];


(* WA nf=6 *)

(* nexeudxaw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -F[2,{1}],  F[1,{1}]}, Approximation -> "fulll2"];
(* neexuxdawx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  F[2,{1}], -F[1,{1}]}, Approximation -> "fulll2"];

(* WA nf=5 *)

(* nexeudxaw  *) AddProcess[FeynArtsProcess -> {-F[4,{1}],  F[3,{1}]} -> { V[1], -F[2,{1}],  F[1,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];
(* neexuxdawx *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[3,{1}]} -> { V[1],  F[2,{1}], -F[1,{1}]}, Approximation -> "fulll2", Sequence @@ nf5];




