
(* description = "pp -> jets|pp -> jets|pp -> jj|Production of two jets." *)

SelectInterference = {eQED -> 0};

nf5 = {
        SetParameters -> JoinOptions[{ME -> 0, MB -> 0, nf -> 5}],
        InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {F[3,{3}]}, NoQuarkMixing}}
};

nf0 = {
        SetParameters -> JoinOptions[{nf -> 0}],
        InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {F}, NoQuarkMixing}}
};

nf0lc = {
        SetParameters -> JoinOptions[{nf -> 0, LeadingColour -> 1}],
        InsertFieldsOptions -> {Restrictions -> {ExcludeParticles -> {F[3],F[4]}, NoQuarkMixing}}
};


(* dddxdx *) AddProcess[FeynArtsProcess -> {F[4,{1}],  F[4,{1}]} -> {F[4,{1}],  F[4,{1}]}];
(* uuxddx *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[3,{1}], -F[3,{1}]}];
(* ddxgg  *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {V[5]    ,  V[5]    }];
(* gggg   *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    }];

(* bbbxbx *) AddProcess[FeynArtsProcess -> {F[4,{3}],  F[4,{3}]} -> {F[4,{3}],  F[4,{3}]}];
(* ddxbbx *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {F[4,{1}], -F[4,{1}]}];
(* bbxgg  *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {V[5]    ,  V[5]    }];

(* dddxdx *) AddProcess[FeynArtsProcess -> {F[4,{1}],  F[4,{1}]} -> {F[4,{1}],  F[4,{1}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* uuxddx *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[3,{1}], -F[3,{1}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ddxgg  *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {V[5]    ,  V[5]    }, SetParameters -> JoinOptions[{MC -> MC}]];
(* gggg   *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    }, SetParameters -> JoinOptions[{MC -> MC}]];
(* bbbxbx *) AddProcess[FeynArtsProcess -> {F[4,{3}],  F[4,{3}]} -> {F[4,{3}],  F[4,{3}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ddxbbx *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {F[4,{1}], -F[4,{1}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* bbxgg  *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {V[5]    ,  V[5]    }, SetParameters -> JoinOptions[{MC -> MC}]];

(* cccxcx *) AddProcess[FeynArtsProcess -> {F[3,{2}],  F[3,{2}]} -> {F[3,{2}],  F[3,{2}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ddxccx *) AddProcess[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {F[4,{1}], -F[4,{1}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* uuxccx *) AddProcess[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {F[3,{1}], -F[3,{1}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ccxgg  *) AddProcess[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {V[5]    ,  V[5]    }, SetParameters -> JoinOptions[{MC -> MC}]];
(* ccxssx *) AddProcess[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {F[4,{2}], -F[4,{2}]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ccxbbx *) AddProcess[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {F[4,{3}], -F[4,{3}]}, SetParameters -> JoinOptions[{MC -> MC}]];

(* dddxdx *) AddProcess[FeynArtsProcess -> {F[4,{1}],  F[4,{1}]} -> {F[4,{1}],  F[4,{1}]}, Sequence @@ nf5];
(* uuxddx *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[3,{1}], -F[3,{1}]}, Sequence @@ nf5];
(* ddxgg  *) AddProcess[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {V[5]    ,  V[5]    }, Sequence @@ nf5];
(* gggg   *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    }, Sequence @@ nf5];

(* bbbxbx *) AddProcess[FeynArtsProcess -> {F[4,{3}],  F[4,{3}]} -> {F[4,{3}],  F[4,{3}]}, Sequence @@ nf5];
(* ddxbbx *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {F[4,{1}], -F[4,{1}]}, Sequence @@ nf5];
(* bbxgg  *) AddProcess[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {V[5]    ,  V[5]    }, Sequence @@ nf5];

(* dddxdxg *) AddReal[FeynArtsProcess -> {F[4,{1}],  F[4,{1}]} -> {F[4,{1}],  F[4,{1}], V[5]}];
(* uuxddxg *) AddReal[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {F[3,{1}], -F[3,{1}], V[5]}];
(* ddxggg  *) AddReal[FeynArtsProcess -> {F[4,{1}], -F[4,{1}]} -> {V[5]    ,  V[5]    , V[5]}];
(* ggggg   *) AddReal[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    , V[5]}];

(* bbbxbxg *) AddReal[FeynArtsProcess -> {F[4,{3}],  F[4,{3}]} -> {F[4,{3}],  F[4,{3}], V[5]}];
(* ddxbbxg *) AddReal[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {F[4,{1}], -F[4,{1}], V[5]}];
(* bbxggg  *) AddReal[FeynArtsProcess -> {F[4,{3}], -F[4,{3}]} -> {V[5]    ,  V[5]    , V[5]}];

(* cccxcxg *) AddReal[FeynArtsProcess -> {F[3,{2}],  F[3,{2}]} -> {F[3,{2}],  F[3,{2}], V[5]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ddxccxg *) AddReal[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {F[4,{1}], -F[4,{1}], V[5]}, SetParameters -> JoinOptions[{MC -> MC}]];
(* ccxggg  *) AddReal[FeynArtsProcess -> {F[3,{2}], -F[3,{2}]} -> {V[5]    ,  V[5]    , V[5]}, SetParameters -> JoinOptions[{MC -> MC}]];


(* gggg   *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    }, Sequence @@ nf0];
(* gggg   *) AddProcess[FeynArtsProcess -> {V[5]    ,  V[5]    } -> {V[5]    ,  V[5]    }, Sequence @@ nf0lc];


ChannelMap = {
  "ddxbbx" -> "uuxddx MB=0",
  "bbbxbx" -> "dddxdx MB=0",
  "bbxgg"  -> "ddxgg MB=0",
  "ddxssx" -> "uuxddx",
  "uuuxux" -> "dddxdx",
  "uuxccx" -> "uuxddx MC=0",
  "ccxddx" -> "uuxddx MC=0",
  "uuxgg"  -> "ddxgg",
  "uuxbbx" -> "ddxbbx",
  (* ssx *)
  "ddxssx" -> "uuxddx",
  "sssxsx" -> "dddxdx",
  "ssxgg"  -> "ddxgg",
  "ddxssx" -> "uuxddx",
  "uuxssx" -> "uuxddx",
  "ssxbbx" -> "ddxbbx",
  (* reals *)
  "ddxbbxg" -> "uuxddxg MB=0",
  "bbbxbxg" -> "dddxdxg MB=0",
  "bbxggg"  -> "ddxggg MB=0",
  "ddxssxg" -> "uuxddxg",
  "uuuxuxg" -> "dddxdxg",
  "uuxccxg" -> "uuxddxg MC=0",
  "ccxddxg" -> "uuxddxg MC=0",
  "uuxggg"  -> "ddxggg",
  "uuxbbxg" -> "ddxbbxg"
};
