
(* description = "pp -> VV+jets|pp -> AA+jets|pp -> AAjj|Photon pair plus two jets production" *)

SelectInterference = {eQED -> 4};

(* dddxdxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1], V[1], F[4,{1}],  F[4,{1}]}];
(* uuuxuxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1], V[1], F[3,{1}],  F[3,{1}]}];
(* uuxddxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[3,{1}], -F[3,{1}]}];
(* ddxssxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{2}], -F[4,{2}]}];
(* uuxccxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[3,{2}], -F[3,{2}]}];
(* ddxaagg  *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }];
(* uuxaagg  *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }];

(* bbbxbxaa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* uuxbbxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* ddxbbxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}];
(* bbxaagg  *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], V[5]    ,  V[5]    }];

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


(* dddxdxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1], V[1], F[4,{1}],  F[4,{1}]}, Sequence @@ nf5];
(* uuuxuxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1], V[1], F[3,{1}],  F[3,{1}]}, Sequence @@ nf5];
(* uuxddxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[3,{1}], -F[3,{1}]}, Sequence @@ nf5];
(* ddxssxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{2}], -F[4,{2}]}, Sequence @@ nf5];
(* uuxccxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[3,{2}], -F[3,{2}]}, Sequence @@ nf5];
(* ddxaagg  *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }, Sequence @@ nf5];
(* uuxaagg  *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    }, Sequence @@ nf5];

(* bbbxbxaa *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}, Sequence @@ nf5];
(* uuxbbxaa *) AddProcess[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}, Sequence @@ nf5];
(* ddxbbxaa *) AddProcess[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}]}, Sequence @@ nf5];
(* bbxaagg  *) AddProcess[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], V[5]    ,  V[5]    }, Sequence @@ nf5];


(* dddxdxaag *) AddReal[FeynArtsProcess -> { F[4,{1}],  F[4,{1}]} -> { V[1], V[1], F[4,{1}],  F[4,{1}], V[5]}];
(* uuuxuxaag *) AddReal[FeynArtsProcess -> { F[3,{1}],  F[3,{1}]} -> { V[1], V[1], F[3,{1}],  F[3,{1}], V[5]}];
(* uuxddxaag *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[3,{1}], -F[3,{1}], V[5]}];
(* ddxssxaag *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{2}], -F[4,{2}], V[5]}];
(* uuxccxaag *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[3,{2}], -F[3,{2}], V[5]}];
(* ddxaaggg  *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    , V[5]}];
(* uuxaaggg  *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], V[5]    ,  V[5]    , V[5]}];

(* bbbxbxaag *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}], V[5]}];
(* uuxbbxaag *) AddReal[FeynArtsProcess -> { F[3,{1}], -F[3,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}], V[5]}];
(* ddxbbxaag *) AddReal[FeynArtsProcess -> { F[4,{1}], -F[4,{1}]} -> { V[1], V[1], F[4,{3}], -F[4,{3}], V[5]}];
(* bbxaaggg  *) AddReal[FeynArtsProcess -> { F[4,{3}], -F[4,{3}]} -> { V[1], V[1], V[5]    ,  V[5]    , V[5]}];

ChannelMap = {
  "ccxddxaa" -> "uuxddxaa",
  "ddxbbxaa" -> "ddxssxaa MB=0",
  "uuxbbxaa" -> "uuxddxaa MB=0",
  "bbbxbxaa" -> "dddxdxaa MB=0",
  "bbxaagg"  -> "ddxaagg MB=0",
  (* reals *)
  "ccxddxaag" -> "uuxddxaag",
  "ddxbbxaag" -> "ddxssxaag MB=0",
  "uuxbbxaag" -> "uuxddxaag MB=0",
  "bbbxbxaag" -> "dddxdxaag MB=0",
  "bbxaaggg"  -> "ddxaaggg MB=0"
};
