
(* description = "pp -> VV+jets|pp -> llll+jets|gg -> llllj|Loop-induced production of four leptons (all combinations of leptons and neutrinos) in gluon fusion (+qq~ splitting), i.e. ggllllg and qqllllg." *)

OpenLoopsModel = "SM_yuksel";
SelectCoupling = (Exponent[#1, gQCD] == 3 &);
SelectInterference = {eQED -> 8};
CreateTopologiesOptions = {ExcludeTopologies -> {Snails, WFCorrectionCTs, TadpoleCTs, Loops[6|7]}};

SelectTreeDiagrams = (False &);
SelectLoopDiagrams = (ContainsFermionLoop[##] &);

(* eeexexuuxg     *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[2,{1}],  F[2,{1}], -F[2,{1}], -F[2,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* eexmmxuuxg     *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[2,{1}],  F[2,{2}], -F[2,{1}], -F[2,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenenexnexuuxg *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[1,{1}],  F[1,{1}], -F[1,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenexnmnmxuuxg *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[1,{1}],  F[1,{2}], -F[1,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nmnmxeexuuxg   *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[2,{1}],  F[1,{2}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenexeexuuxg   *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[2,{1}],  F[1,{1}], -F[2,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nexnmemxuuxg   *) AddProcess[FeynArtsProcess -> {F[3,{1}], -F[3,{1}]} -> {F[2,{2}],  F[1,{1}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];

(* eeexexddxg     *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[2,{1}],  F[2,{1}], -F[2,{1}], -F[2,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* eexmmxddxg     *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[2,{1}],  F[2,{2}], -F[2,{1}], -F[2,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenenexnexddxg *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[1,{1}],  F[1,{1}], -F[1,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenexnmnmxddxg *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[1,{1}],  F[1,{2}], -F[1,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nmnmxeexddxg   *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[2,{1}],  F[1,{2}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nenexeexddxg   *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[2,{1}],  F[1,{1}], -F[2,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> NFieldPropagators[V[5],1]];
(* nexnmemxddxg   *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[2,{2}],  F[1,{1}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> NFieldPropagators[V[5],1]];

(* eeexexggg      *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[2,{1}],  F[2,{1}], -F[2,{1}], -F[2,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> (True &)];
(* eexmmxggg      *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[2,{1}],  F[2,{2}], -F[2,{1}], -F[2,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> (True &)];
(* nenenexnexggg  *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[1,{1}],  F[1,{1}], -F[1,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> (True &)];
(* nenexnmnmxggg  *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[1,{1}],  F[1,{2}], -F[1,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> (True &)];
(* nmnmxeexggg    *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[2,{1}],  F[1,{2}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> (True &)];
(* nenexeexggg    *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[2,{1}],  F[1,{1}], -F[2,{1}], -F[1,{1}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0}]                  , SelectCTDiagrams -> (True &)];
(* nexnmemxggg    *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {F[2,{2}],  F[1,{1}], -F[2,{1}], -F[1,{2}], V[5]}, SetParameters -> JoinOptions[{YukB -> 1, YukT -> 1, ME -> 0, YE -> 0, MM -> 0, YM -> 0}], SelectCTDiagrams -> (True &)];

ChannelMap = {
  "eeexexbbxg"     -> "eeexexddxg MB=0",
  "eexmmxbbxg"     -> "eexmmxddxg MB=0",
  "nenexeexbbxg"   -> "nenexeexddxg MB=0",
  "nmnmxeexbbxg"   -> "nmnmxeexddxg MB=0",
  "nenmxexmbbxg"   -> "nenmxexmddxg MB=0",
  "nenenexnexbbxg" -> "nenenexnexddxg MB=0",
  "nenexnmnmxbbxg" -> "nenexnmnmxddxg MB=0",
  "nexnmemxbbxg"   -> "nexnmemxddxg MB=0"
};
