whizard is hosted by Hepforge, IPPP Durham

Ticket #310: fr_sm_test_mdl.ml

File fr_sm_test_mdl.ml, 31.1 KB (added by Christian Speckner, 14 years ago)

SM with emulated TGCs, WO2

Line 
1(* --------------------------------------------------------------------------------
2   Autogenerated by the preliminary FeynRules <-> WHIZARD automaton on 4/24/2010 , 15:46:53
3   FeynRules version: $Revision: 119 $
4   WHIZARD interface svn revision info: $Id: WhizardOmegaInterface.m 137 2010-04-23 23:22:18Z ChristianSpeckner $
5   Code generated for WHIZARD / O'Mega version 2.0
6   Model: Standard_Model
7   Short model name: fr_sm_test
8   Gauge: Unitarity
9   Maximum number of couplings per FORTRAN module: 500
10   -------------------------------------------------------------------------------- *)
11
12type gauge = Unitarity | Feynman | Rxi
13
14module type Frules_options =
15sig
16   val gauge: gauge
17   val color: bool
18end
19
20module Implementation (Opts: Frules_options) =
21struct
22
23   open Coupling
24
25   (* The FeynRules classes with their members *)
26
27   type f1_Vl =
28      | Ve | Ve_bar | Vm | Vm_bar | Vt | Vt_bar
29   type f2_L =
30      | E_minus | E_plus | M_minus | M_plus | Tt_minus | Tt_plus
31   type f3_Uq =
32      | U | U_bar | C | C_bar | T | T_bar
33   type f4_Dq =
34      | D | D_bar | S | S_bar | B | B_bar
35   type v1_A =
36      | A_1
37   type v2_Z =
38      | Z_1
39   type v3_W =
40      | W_plus | W_minus
41   type v4_G =
42      | G_1
43   type s1_H =
44      | H_1
45   type s2_Phi =
46      | Phi0
47   type s3_Phi2 =
48      | Phi_plus | Phi_minus
49
50   (* The FeynRules lorentz types with the corresponding classes *)
51
52   type scalar =
53      | S1_H of s1_H | S2_Phi of s2_Phi | S3_Phi2 of s3_Phi2
54   type fermion =
55      | F1_Vl of f1_Vl | F2_L of f2_L | F3_Uq of f3_Uq | F4_Dq of f4_Dq
56   type vector =
57      | V1_A of v1_A | V2_Z of v2_Z | V3_W of v3_W | V4_G of v4_G
58
59   (* The actual flavor type *)
60
61   type flavor =
62      | FRS of scalar | FRF of fermion | FRV of vector
63
64   (* Trampoline functions *)
65
66   let fermion_of_f1_Vl c = F1_Vl c
67   let fermion_of_f2_L c = F2_L c
68   let fermion_of_f3_Uq c = F3_Uq c
69   let fermion_of_f4_Dq c = F4_Dq c
70   let vector_of_v1_A c = V1_A c
71   let vector_of_v2_Z c = V2_Z c
72   let vector_of_v3_W c = V3_W c
73   let vector_of_v4_G c = V4_G c
74   let scalar_of_s1_H c = S1_H c
75   let scalar_of_s2_Phi c = S2_Phi c
76   let scalar_of_s3_Phi2 c = S3_Phi2 c
77   let flavor_of_scalar lt = FRS lt
78   let flavor_of_fermion lt = FRF lt
79   let flavor_of_vector lt = FRV lt
80
81   (* Particle lists *)
82
83   let f1_Vl_members =
84      [Ve; Ve_bar; Vm; Vm_bar; Vt; Vt_bar;]
85   let f2_L_members =
86      [E_minus; E_plus; M_minus; M_plus; Tt_minus; Tt_plus;]
87   let f3_Uq_members =
88      [U; U_bar; C; C_bar; T; T_bar;]
89   let f4_Dq_members =
90      [D; D_bar; S; S_bar; B; B_bar;]
91   let v1_A_members =
92      [A_1;]
93   let v2_Z_members =
94      [Z_1;]
95   let v3_W_members =
96      [W_plus; W_minus;]
97   let v4_G_members =
98      [G_1;]
99   let s1_H_members =
100      [H_1;]
101   let s2_Phi_members =
102      [Phi0;]
103   let s3_Phi2_members =
104      [Phi_plus; Phi_minus;]
105   let all_scalars = []
106      @ (List.map scalar_of_s1_H s1_H_members)
107      @ (List.map scalar_of_s2_Phi s2_Phi_members)
108      @ (List.map scalar_of_s3_Phi2 s3_Phi2_members)
109   let all_fermions = []
110      @ (List.map fermion_of_f1_Vl f1_Vl_members)
111      @ (List.map fermion_of_f2_L f2_L_members)
112      @ (List.map fermion_of_f3_Uq f3_Uq_members)
113      @ (List.map fermion_of_f4_Dq f4_Dq_members)
114   let all_vectors = []
115      @ (List.map vector_of_v1_A v1_A_members)
116      @ (List.map vector_of_v2_Z v2_Z_members)
117      @ (List.map vector_of_v3_W v3_W_members)
118      @ (List.map vector_of_v4_G v4_G_members)
119
120   (* The conjugation operation on a single class *)
121
122   let conjugate_f1_Vl = function 
123      | Ve -> Ve_bar | Ve_bar -> Ve | Vm -> Vm_bar | Vm_bar -> Vm | Vt -> Vt_bar
124      | Vt_bar -> Vt
125   let conjugate_f2_L = function 
126      | E_minus -> E_plus | E_plus -> E_minus | M_minus -> M_plus | M_plus -> M_minus
127      | Tt_minus -> Tt_plus | Tt_plus -> Tt_minus
128   let conjugate_f3_Uq = function 
129      | U -> U_bar | U_bar -> U | C -> C_bar | C_bar -> C | T -> T_bar | T_bar -> T
130   let conjugate_f4_Dq = function 
131      | D -> D_bar | D_bar -> D | S -> S_bar | S_bar -> S | B -> B_bar | B_bar -> B
132   let conjugate_v1_A = function 
133      | x -> x
134   let conjugate_v2_Z = function 
135      | x -> x
136   let conjugate_v3_W = function 
137      | W_plus -> W_minus | W_minus -> W_plus
138   let conjugate_v4_G = function 
139      | x -> x
140   let conjugate_s1_H = function 
141      | x -> x
142   let conjugate_s2_Phi = function 
143      | x -> x
144   let conjugate_s3_Phi2 = function 
145      | Phi_plus -> Phi_minus | Phi_minus -> Phi_plus
146
147   (* The conjugation operation on a lorentz type *)
148
149   let conjugate_scalar = function 
150      | S1_H x -> S1_H (conjugate_s1_H x)
151      | S2_Phi x -> S2_Phi (conjugate_s2_Phi x)
152      | S3_Phi2 x -> S3_Phi2 (conjugate_s3_Phi2 x)
153   let conjugate_fermion = function 
154      | F1_Vl x -> F1_Vl (conjugate_f1_Vl x)
155      | F2_L x -> F2_L (conjugate_f2_L x)
156      | F3_Uq x -> F3_Uq (conjugate_f3_Uq x)
157      | F4_Dq x -> F4_Dq (conjugate_f4_Dq x)
158   let conjugate_vector = function 
159      | V1_A x -> V1_A (conjugate_v1_A x)
160      | V2_Z x -> V2_Z (conjugate_v2_Z x)
161      | V3_W x -> V3_W (conjugate_v3_W x)
162      | V4_G x -> V4_G (conjugate_v4_G x)
163
164   (* Conjugation for the masses *)
165
166   let conjugate = function
167      | FRS x -> FRS (conjugate_scalar x)
168      | FRF x -> FRF (conjugate_fermion x)
169      | FRV x -> FRV (conjugate_vector x)
170
171   let color = function
172      | FRS _ -> Color.Singlet
173      | FRF x -> (match x with 
174         | F1_Vl _ -> Color.Singlet
175         | F2_L _ -> Color.Singlet
176         | F3_Uq x -> (match x with 
177            | U | C | T -> Color.SUN 3 | U_bar | C_bar | T_bar -> Color.SUN (-3))
178         | F4_Dq x -> (match x with 
179            | D | S | B -> Color.SUN 3 | D_bar | S_bar | B_bar -> Color.SUN (-3)))
180      | FRV x -> (match x with 
181         | V1_A _ -> Color.Singlet
182         | V2_Z _ -> Color.Singlet
183         | V3_W _ -> Color.Singlet
184         | V4_G G_1 -> Color.AdjSUN 3)
185
186   let pdg = function
187      | FRS x -> (match x with 
188         | S1_H H_1 -> 25
189         | S2_Phi Phi0 -> 250
190         | S3_Phi2 x -> (match x with 
191            | Phi_plus -> 251 | Phi_minus -> -251))
192      | FRF x -> (match x with 
193         | F1_Vl x -> (match x with 
194            | Ve -> 12 | Ve_bar -> -12 | Vm -> 14 | Vm_bar -> -14 | Vt -> 16 | Vt_bar -> -16)
195
196         | F2_L x -> (match x with 
197            | E_minus -> 11 | E_plus -> -11 | M_minus -> 13 | M_plus -> -13 | Tt_minus -> 15
198            | Tt_plus -> -15)
199         | F3_Uq x -> (match x with 
200            | U -> 2 | U_bar -> -2 | C -> 4 | C_bar -> -4 | T -> 6 | T_bar -> -6)
201         | F4_Dq x -> (match x with 
202            | D -> 1 | D_bar -> -1 | S -> 3 | S_bar -> -3 | B -> 5 | B_bar -> -5))
203      | FRV x -> (match x with 
204         | V1_A A_1 -> 22
205         | V2_Z Z_1 -> 23
206         | V3_W x -> (match x with 
207            | W_plus -> 24 | W_minus -> -24)
208         | V4_G G_1 -> 21)
209
210   let lorentz = function
211      | FRF x -> (match x with 
212         | F1_Vl x -> (match x with 
213            | Ve | Vm | Vt -> Spinor | Ve_bar | Vm_bar | Vt_bar -> ConjSpinor)
214         | F2_L x -> (match x with 
215            | E_minus | M_minus | Tt_minus -> Spinor | E_plus | M_plus | Tt_plus -> ConjSpinor)
216
217         | F3_Uq x -> (match x with 
218            | U | C | T -> Spinor | U_bar | C_bar | T_bar -> ConjSpinor)
219         | F4_Dq x -> (match x with 
220            | D | S | B -> Spinor | D_bar | S_bar | B_bar -> ConjSpinor))
221      | FRV x -> (match x with 
222         | V1_A A_1 -> Vector
223         | V2_Z Z_1 -> Massive_Vector
224         | V3_W x -> (match x with 
225            | W_plus | W_minus -> Massive_Vector)
226         | V4_G G_1 -> Vector)
227      | FRS _ -> Scalar
228
229   type gauge = Xi
230
231   let propagator = 
232      let msg = "fr_sm_test.Implementation: invalid lorentz rep in propagator" in function
233      | FRS _ -> Prop_Scalar
234      | FRF x -> (match lorentz (FRF x) with
235         | Spinor -> Prop_Spinor
236         | ConjSpinor -> Prop_ConjSpinor
237         | Majorana -> Prop_Majorana
238         | _ -> invalid_arg msg)
239      | FRV x -> (match Opts.gauge with
240         | Unitarity -> (match lorentz (FRV x) with
241            | Vector -> Prop_Feynman
242            | Massive_Vector -> Prop_Unitarity
243            | _ -> invalid_arg msg)
244         | Feynman -> (match lorentz (FRV x) with
245            | Vector -> Prop_Feynman
246            | Massive_Vector -> Prop_Rxi Xi
247            | _ -> invalid_arg msg)
248         | Rxi -> (match lorentz (FRV x) with
249            | Vector -> Prop_Gauge Xi
250            | Massive_Vector -> Prop_Rxi Xi
251            | _ -> invalid_arg msg))
252
253   let width_symbol = function
254      | FRS x -> (match x with 
255         | S1_H H_1 -> "wh"
256         | S2_Phi Phi0 -> "wphi"
257         | S3_Phi2 x -> (match x with 
258            | Phi_plus -> "wphi2" | Phi_minus -> "wphi2"))
259      | FRF x -> (match x with 
260         | F1_Vl _ -> "fr_zero"
261         | F2_L _ -> "fr_zero"
262         | F3_Uq x -> (match x with 
263            | T -> "wt" | T_bar -> "wt" | _ -> "fr_zero")
264         | F4_Dq _ -> "fr_zero")
265      | FRV x -> (match x with 
266         | V1_A _ -> "fr_zero"
267         | V2_Z Z_1 -> "wz"
268         | V3_W x -> (match x with 
269            | W_plus -> "ww" | W_minus -> "ww")
270         | V4_G _ -> "fr_zero")
271
272   let width x = match width_symbol x with 
273      | "0" -> Vanishing
274      | _ -> Timelike
275
276   let fermion x = (match lorentz x with
277      | Spinor -> 1 | ConjSpinor -> -1 | Majorana -> 2 | _ -> 0)
278
279   let colsymm _ = (0, false), (0, false)
280
281   let flavors () = []
282      @ (List.map flavor_of_scalar all_scalars)
283      @ (List.map flavor_of_fermion all_fermions)
284      @ (List.map flavor_of_vector all_vectors)
285
286   let external_flavors () = ["FeynRules autogenerated flavors", flavors ()]
287
288   let goldstone _ = None
289
290   let flavor_to_string = function
291      | FRS x -> (match x with 
292         | S1_H H_1 -> "H"
293         | S2_Phi Phi0 -> "phi0"
294         | S3_Phi2 x -> (match x with 
295            | Phi_plus -> "phi+" | Phi_minus -> "phi-"))
296      | FRF x -> (match x with 
297         | F1_Vl x -> (match x with 
298            | Ve -> "ve" | Ve_bar -> "ve~" | Vm -> "vm" | Vm_bar -> "vm~" | Vt -> "vt"
299            | Vt_bar -> "vt~")
300         | F2_L x -> (match x with 
301            | E_minus -> "e-" | E_plus -> "e+" | M_minus -> "m-" | M_plus -> "m+"
302            | Tt_minus -> "tt-" | Tt_plus -> "tt+")
303         | F3_Uq x -> (match x with 
304            | U -> "u" | U_bar -> "u~" | C -> "c" | C_bar -> "c~" | T -> "t" | T_bar -> "t~")
305
306         | F4_Dq x -> (match x with 
307            | D -> "d" | D_bar -> "d~" | S -> "s" | S_bar -> "s~" | B -> "b" | B_bar -> "b~"))
308      | FRV x -> (match x with 
309         | V1_A A_1 -> "A"
310         | V2_Z Z_1 -> "Z"
311         | V3_W x -> (match x with 
312            | W_plus -> "W+" | W_minus -> "W-")
313         | V4_G G_1 -> "G")
314
315   let flavor_to_TeX = function
316      | FRS x -> (match x with 
317         | S1_H H_1 -> "\\phi"
318         | S2_Phi Phi0 -> "phi0"
319         | S3_Phi2 x -> (match x with 
320            | Phi_plus -> "\\phi^+" | Phi_minus -> "\\phi^-"))
321      | FRF x -> (match x with 
322         | F1_Vl x -> (match x with 
323            | Ve -> "ve" | Ve_bar -> "ve~" | Vm -> "vm" | Vm_bar -> "vm~" | Vt -> "vt"
324            | Vt_bar -> "vt~")
325         | F2_L x -> (match x with 
326            | E_minus -> "e-" | E_plus -> "e+" | M_minus -> "m-" | M_plus -> "m+"
327            | Tt_minus -> "tt-" | Tt_plus -> "tt+")
328         | F3_Uq x -> (match x with 
329            | U -> "u" | U_bar -> "u~" | C -> "c" | C_bar -> "c~" | T -> "t" | T_bar -> "t~")
330
331         | F4_Dq x -> (match x with 
332            | D -> "d" | D_bar -> "d~" | S -> "s" | S_bar -> "s~" | B -> "b" | B_bar -> "b~"))
333      | FRV x -> (match x with 
334         | V1_A A_1 -> "A"
335         | V2_Z Z_1 -> "Z"
336         | V3_W x -> (match x with 
337            | W_plus -> "W+" | W_minus -> "W-")
338         | V4_G G_1 -> "G")
339
340   let flavor_of_string x =
341      let dict = List.map (fun x -> (x, flavor_to_string x)) (flavors ())
342      in try
343         fst (List.find (fun (_, y) -> (x = y)) dict)
344      with
345         Not_found -> invalid_arg "fr_sm_test.Implementation: flavor_of_string: invalid particle?"
346
347   let flavor_symbol = function
348      | FRS x -> (match x with 
349         | S1_H H_1 -> "h_1"
350         | S2_Phi Phi0 -> "phi0"
351         | S3_Phi2 x -> (match x with 
352            | Phi_plus -> "phi_plus" | Phi_minus -> "phi_minus"))
353      | FRF x -> (match x with 
354         | F1_Vl x -> (match x with 
355            | Ve -> "ve" | Ve_bar -> "ve_bar" | Vm -> "vm" | Vm_bar -> "vm_bar" | Vt -> "vt"
356            | Vt_bar -> "vt_bar")
357         | F2_L x -> (match x with 
358            | E_minus -> "e_minus" | E_plus -> "e_plus" | M_minus -> "m_minus"
359            | M_plus -> "m_plus" | Tt_minus -> "tt_minus" | Tt_plus -> "tt_plus")
360         | F3_Uq x -> (match x with 
361            | U -> "u" | U_bar -> "u_bar" | C -> "c" | C_bar -> "c_bar" | T -> "t"
362            | T_bar -> "t_bar")
363         | F4_Dq x -> (match x with 
364            | D -> "d" | D_bar -> "d_bar" | S -> "s" | S_bar -> "s_bar" | B -> "b"
365            | B_bar -> "b_bar"))
366      | FRV x -> (match x with 
367         | V1_A A_1 -> "a_1"
368         | V2_Z Z_1 -> "z_1"
369         | V3_W x -> (match x with 
370            | W_plus -> "w_plus" | W_minus -> "w_minus")
371         | V4_G G_1 -> "g_1")
372
373   let gauge_symbol = function
374      Xi -> (match Opts.gauge with
375         | Unitarity -> invalid_arg
376            "fr_sm_test.Implementation: requesting gauge symbol in unitarity gauge!"
377         | Feynman -> "one"
378         | Rxi -> "Rxi")
379
380   let mass_symbol = function
381      | FRS x -> (match x with 
382         | S1_H H_1 -> "mh"
383         | S2_Phi Phi0 -> "mz"
384         | S3_Phi2 x -> (match x with 
385            | Phi_plus -> "mw" | Phi_minus -> "mw"))
386      | FRF x -> (match x with 
387         | F1_Vl _ -> "fr_zero"
388         | F2_L x -> (match x with 
389            | E_minus -> "me" | E_plus -> "me" | M_minus -> "mm" | M_plus -> "mm"
390            | Tt_minus -> "mta" | Tt_plus -> "mta")
391         | F3_Uq x -> (match x with 
392            | U -> "mu" | U_bar -> "mu" | C -> "mc" | C_bar -> "mc" | T -> "mt"
393            | T_bar -> "mt")
394         | F4_Dq x -> (match x with 
395            | D -> "md" | D_bar -> "md" | S -> "ms" | S_bar -> "ms" | B -> "mb"
396            | B_bar -> "mb"))
397      | FRV x -> (match x with 
398         | V1_A _ -> "fr_zero"
399         | V2_Z Z_1 -> "mz"
400         | V3_W x -> (match x with 
401            | W_plus -> "mw" | W_minus -> "mw")
402         | V4_G _ -> "fr_zero")
403
404   (* Coupling constants and parameters *)
405
406   type constant =
407      | G_h_1_h_1_h_1_h_1 | G_h_1_h_1_h_1 | G_g_1_g_1_g_1_g_1 | G_b_bar_g_1_b
408      | G_a_1_w_minus_w_plus | G_h_1_h_1_w_plus_w_minus | G_h_1_w_plus_w_minus
409      | G_a_1_a_1_w_plus_w_minus | G_z_1_w_plus_w_minus
410      | G_w_plus_w_plus_w_minus_w_minus | G_d_bar_h_1_d | G_s_bar_h_1_s
411      | G_b_bar_h_1_b | G_e_plus_h_1_e_minus | G_m_plus_h_1_m_minus
412      | G_tt_plus_h_1_tt_minus | G_u_bar_h_1_u | G_c_bar_h_1_c | G_t_bar_h_1_t
413      | G_a_1_w_plus_w_minus_z_1 | G_h_1_h_1_z_1_z_1 | G_h_1_z_1_z_1
414      | G_w_plus_w_minus_z_1_z_1 | G_b_bar_a_1_b | G_e_plus_a_1_e_minus
415      | G_c_bar_a_1_c | G_ve_bar_w_plus_e_minus | G_c_bar_w_plus_b | G_c_bar_w_plus_d
416      | G_c_bar_w_plus_s | G_t_bar_w_plus_b | G_t_bar_w_plus_d | G_t_bar_w_plus_s
417      | G_u_bar_w_plus_b | G_u_bar_w_plus_d | G_u_bar_w_plus_s | G_b_bar_w_minus_c
418      | G_b_bar_w_minus_t | G_b_bar_w_minus_u | G_d_bar_w_minus_c | G_d_bar_w_minus_t
419      | G_d_bar_w_minus_u | G_s_bar_w_minus_c | G_s_bar_w_minus_t | G_s_bar_w_minus_u
420      | G_b_bar_z_1_b | G_e_plus_z_1_e_minus | G_c_bar_z_1_c | G_ve_bar_z_1_ve
421
422   let parameters () = {input = []; derived = []; derived_arrays = []}
423
424   let constant_symbol = function
425      | G_h_1_h_1_h_1_h_1 -> "G_h_1_h_1_h_1_h_1" | G_h_1_h_1_h_1 -> "G_h_1_h_1_h_1"
426      | G_g_1_g_1_g_1_g_1 -> "G_g_1_g_1_g_1_g_1" | G_b_bar_g_1_b -> "G_b_bar_g_1_b"
427      | G_a_1_w_minus_w_plus -> "G_a_1_w_minus_w_plus"
428      | G_h_1_h_1_w_plus_w_minus -> "G_h_1_h_1_w_plus_w_minus"
429      | G_h_1_w_plus_w_minus -> "G_h_1_w_plus_w_minus"
430      | G_a_1_a_1_w_plus_w_minus -> "G_a_1_a_1_w_plus_w_minus"
431      | G_z_1_w_plus_w_minus -> "G_z_1_w_plus_w_minus"
432      | G_w_plus_w_plus_w_minus_w_minus -> "G_w_plus_w_plus_w_minus_w_minus"
433      | G_d_bar_h_1_d -> "G_d_bar_h_1_d" | G_s_bar_h_1_s -> "G_s_bar_h_1_s"
434      | G_b_bar_h_1_b -> "G_b_bar_h_1_b"
435      | G_e_plus_h_1_e_minus -> "G_e_plus_h_1_e_minus"
436      | G_m_plus_h_1_m_minus -> "G_m_plus_h_1_m_minus"
437      | G_tt_plus_h_1_tt_minus -> "G_tt_plus_h_1_tt_minus"
438      | G_u_bar_h_1_u -> "G_u_bar_h_1_u" | G_c_bar_h_1_c -> "G_c_bar_h_1_c"
439      | G_t_bar_h_1_t -> "G_t_bar_h_1_t"
440      | G_a_1_w_plus_w_minus_z_1 -> "G_a_1_w_plus_w_minus_z_1"
441      | G_h_1_h_1_z_1_z_1 -> "G_h_1_h_1_z_1_z_1" | G_h_1_z_1_z_1 -> "G_h_1_z_1_z_1"
442      | G_w_plus_w_minus_z_1_z_1 -> "G_w_plus_w_minus_z_1_z_1"
443      | G_b_bar_a_1_b -> "G_b_bar_a_1_b"
444      | G_e_plus_a_1_e_minus -> "G_e_plus_a_1_e_minus"
445      | G_c_bar_a_1_c -> "G_c_bar_a_1_c"
446      | G_ve_bar_w_plus_e_minus -> "G_ve_bar_w_plus_e_minus"
447      | G_c_bar_w_plus_b -> "G_c_bar_w_plus_b"
448      | G_c_bar_w_plus_d -> "G_c_bar_w_plus_d"
449      | G_c_bar_w_plus_s -> "G_c_bar_w_plus_s"
450      | G_t_bar_w_plus_b -> "G_t_bar_w_plus_b"
451      | G_t_bar_w_plus_d -> "G_t_bar_w_plus_d"
452      | G_t_bar_w_plus_s -> "G_t_bar_w_plus_s"
453      | G_u_bar_w_plus_b -> "G_u_bar_w_plus_b"
454      | G_u_bar_w_plus_d -> "G_u_bar_w_plus_d"
455      | G_u_bar_w_plus_s -> "G_u_bar_w_plus_s"
456      | G_b_bar_w_minus_c -> "G_b_bar_w_minus_c"
457      | G_b_bar_w_minus_t -> "G_b_bar_w_minus_t"
458      | G_b_bar_w_minus_u -> "G_b_bar_w_minus_u"
459      | G_d_bar_w_minus_c -> "G_d_bar_w_minus_c"
460      | G_d_bar_w_minus_t -> "G_d_bar_w_minus_t"
461      | G_d_bar_w_minus_u -> "G_d_bar_w_minus_u"
462      | G_s_bar_w_minus_c -> "G_s_bar_w_minus_c"
463      | G_s_bar_w_minus_t -> "G_s_bar_w_minus_t"
464      | G_s_bar_w_minus_u -> "G_s_bar_w_minus_u" | G_b_bar_z_1_b -> "G_b_bar_z_1_b"
465      | G_e_plus_z_1_e_minus -> "G_e_plus_z_1_e_minus"
466      | G_c_bar_z_1_c -> "G_c_bar_z_1_c" | G_ve_bar_z_1_ve -> "G_ve_bar_z_1_ve"
467
468   (* Vertices and fusions *)
469
470   let max_degree () = 4
471
472   let gauge4 = Coupling.Vector4 [2, Coupling.C_13_42; (-1), Coupling.C_12_34; (-1), Coupling.C_14_23]
473
474   let vertices_3 = [
475      (FRS (S1_H H_1), FRS (S1_H H_1), FRS (S1_H H_1)),
476       Scalar_Scalar_Scalar 1,
477       G_h_1_h_1_h_1
478      ;
479      (FRV (V3_W W_minus), FRV (V3_W W_plus), FRV (V1_A A_1)),
480       Dim4_Vector_Vector_Vector_T 1,
481       G_a_1_w_minus_w_plus
482      ;
483      (FRV (V3_W W_plus), FRV (V1_A A_1), FRV (V3_W W_minus)),
484       Dim4_Vector_Vector_Vector_T 1,
485       G_a_1_w_minus_w_plus
486      ;
487      (FRV (V1_A A_1), FRV (V3_W W_minus), FRV (V3_W W_plus)),
488       Dim4_Vector_Vector_Vector_T 1,
489       G_a_1_w_minus_w_plus
490      ;
491      (FRS (S1_H H_1), FRV (V3_W W_plus), FRV (V3_W W_minus)),
492       Scalar_Vector_Vector 1,
493       G_h_1_w_plus_w_minus
494      ;
495      (FRV (V3_W W_plus), FRV (V3_W W_minus), FRV (V2_Z Z_1)),
496       Dim4_Vector_Vector_Vector_T 1,
497       G_z_1_w_plus_w_minus
498      ;
499      (FRV (V3_W W_minus), FRV (V2_Z Z_1), FRV (V3_W W_plus)),
500       Dim4_Vector_Vector_Vector_T 1,
501       G_z_1_w_plus_w_minus
502      ;
503      (FRV (V2_Z Z_1), FRV (V3_W W_plus), FRV (V3_W W_minus)),
504       Dim4_Vector_Vector_Vector_T 1,
505       G_z_1_w_plus_w_minus
506      ;
507      (FRF (F4_Dq D_bar), FRS (S1_H H_1), FRF (F4_Dq D)),
508       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
509       G_d_bar_h_1_d
510      ;
511      (FRF (F4_Dq S_bar), FRS (S1_H H_1), FRF (F4_Dq S)),
512       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
513       G_s_bar_h_1_s
514      ;
515      (FRF (F4_Dq B_bar), FRS (S1_H H_1), FRF (F4_Dq B)),
516       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
517       G_b_bar_h_1_b
518      ;
519      (FRF (F2_L E_plus), FRS (S1_H H_1), FRF (F2_L E_minus)),
520       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
521       G_e_plus_h_1_e_minus
522      ;
523      (FRF (F2_L M_plus), FRS (S1_H H_1), FRF (F2_L M_minus)),
524       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
525       G_m_plus_h_1_m_minus
526      ;
527      (FRF (F2_L Tt_plus), FRS (S1_H H_1), FRF (F2_L Tt_minus)),
528       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
529       G_tt_plus_h_1_tt_minus
530      ;
531      (FRF (F3_Uq U_bar), FRS (S1_H H_1), FRF (F3_Uq U)),
532       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
533       G_u_bar_h_1_u
534      ;
535      (FRF (F3_Uq C_bar), FRS (S1_H H_1), FRF (F3_Uq C)),
536       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
537       G_c_bar_h_1_c
538      ;
539      (FRF (F3_Uq T_bar), FRS (S1_H H_1), FRF (F3_Uq T)),
540       Coupling.FBF (1, Coupling.Psibar, Coupling.S, Coupling.Psi),
541       G_t_bar_h_1_t
542      ;
543      (FRS (S1_H H_1), FRV (V2_Z Z_1), FRV (V2_Z Z_1)),
544       Scalar_Vector_Vector 1,
545       G_h_1_z_1_z_1
546      ;
547      (FRF (F4_Dq B_bar), FRV (V1_A A_1), FRF (F4_Dq B)),
548       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
549       G_b_bar_a_1_b
550      ;
551      (FRF (F4_Dq D_bar), FRV (V1_A A_1), FRF (F4_Dq D)),
552       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
553       G_b_bar_a_1_b
554      ;
555      (FRF (F4_Dq S_bar), FRV (V1_A A_1), FRF (F4_Dq S)),
556       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
557       G_b_bar_a_1_b
558      ;
559      (FRF (F2_L E_plus), FRV (V1_A A_1), FRF (F2_L E_minus)),
560       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
561       G_e_plus_a_1_e_minus
562      ;
563      (FRF (F2_L M_plus), FRV (V1_A A_1), FRF (F2_L M_minus)),
564       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
565       G_e_plus_a_1_e_minus
566      ;
567      (FRF (F2_L Tt_plus), FRV (V1_A A_1), FRF (F2_L Tt_minus)),
568       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
569       G_e_plus_a_1_e_minus
570      ;
571      (FRF (F3_Uq C_bar), FRV (V1_A A_1), FRF (F3_Uq C)),
572       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
573       G_c_bar_a_1_c
574      ;
575      (FRF (F3_Uq T_bar), FRV (V1_A A_1), FRF (F3_Uq T)),
576       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
577       G_c_bar_a_1_c
578      ;
579      (FRF (F3_Uq U_bar), FRV (V1_A A_1), FRF (F3_Uq U)),
580       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
581       G_c_bar_a_1_c
582      ;
583      (FRF (F1_Vl Ve_bar), FRV (V3_W W_plus), FRF (F2_L E_minus)),
584       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
585       G_ve_bar_w_plus_e_minus
586      ;
587      (FRF (F1_Vl Vm_bar), FRV (V3_W W_plus), FRF (F2_L M_minus)),
588       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
589       G_ve_bar_w_plus_e_minus
590      ;
591      (FRF (F1_Vl Vt_bar), FRV (V3_W W_plus), FRF (F2_L Tt_minus)),
592       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
593       G_ve_bar_w_plus_e_minus
594      ;
595      (FRF (F3_Uq C_bar), FRV (V3_W W_plus), FRF (F4_Dq B)),
596       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
597       G_c_bar_w_plus_b
598      ;
599      (FRF (F3_Uq C_bar), FRV (V3_W W_plus), FRF (F4_Dq D)),
600       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
601       G_c_bar_w_plus_d
602      ;
603      (FRF (F3_Uq C_bar), FRV (V3_W W_plus), FRF (F4_Dq S)),
604       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
605       G_c_bar_w_plus_s
606      ;
607      (FRF (F3_Uq T_bar), FRV (V3_W W_plus), FRF (F4_Dq B)),
608       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
609       G_t_bar_w_plus_b
610      ;
611      (FRF (F3_Uq T_bar), FRV (V3_W W_plus), FRF (F4_Dq D)),
612       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
613       G_t_bar_w_plus_d
614      ;
615      (FRF (F3_Uq T_bar), FRV (V3_W W_plus), FRF (F4_Dq S)),
616       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
617       G_t_bar_w_plus_s
618      ;
619      (FRF (F3_Uq U_bar), FRV (V3_W W_plus), FRF (F4_Dq B)),
620       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
621       G_u_bar_w_plus_b
622      ;
623      (FRF (F3_Uq U_bar), FRV (V3_W W_plus), FRF (F4_Dq D)),
624       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
625       G_u_bar_w_plus_d
626      ;
627      (FRF (F3_Uq U_bar), FRV (V3_W W_plus), FRF (F4_Dq S)),
628       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
629       G_u_bar_w_plus_s
630      ;
631      (FRF (F2_L E_plus), FRV (V3_W W_minus), FRF (F1_Vl Ve)),
632       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
633       G_ve_bar_w_plus_e_minus
634      ;
635      (FRF (F2_L M_plus), FRV (V3_W W_minus), FRF (F1_Vl Vm)),
636       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
637       G_ve_bar_w_plus_e_minus
638      ;
639      (FRF (F2_L Tt_plus), FRV (V3_W W_minus), FRF (F1_Vl Vt)),
640       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
641       G_ve_bar_w_plus_e_minus
642      ;
643      (FRF (F4_Dq B_bar), FRV (V3_W W_minus), FRF (F3_Uq C)),
644       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
645       G_b_bar_w_minus_c
646      ;
647      (FRF (F4_Dq B_bar), FRV (V3_W W_minus), FRF (F3_Uq T)),
648       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
649       G_b_bar_w_minus_t
650      ;
651      (FRF (F4_Dq B_bar), FRV (V3_W W_minus), FRF (F3_Uq U)),
652       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
653       G_b_bar_w_minus_u
654      ;
655      (FRF (F4_Dq D_bar), FRV (V3_W W_minus), FRF (F3_Uq C)),
656       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
657       G_d_bar_w_minus_c
658      ;
659      (FRF (F4_Dq D_bar), FRV (V3_W W_minus), FRF (F3_Uq T)),
660       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
661       G_d_bar_w_minus_t
662      ;
663      (FRF (F4_Dq D_bar), FRV (V3_W W_minus), FRF (F3_Uq U)),
664       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
665       G_d_bar_w_minus_u
666      ;
667      (FRF (F4_Dq S_bar), FRV (V3_W W_minus), FRF (F3_Uq C)),
668       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
669       G_s_bar_w_minus_c
670      ;
671      (FRF (F4_Dq S_bar), FRV (V3_W W_minus), FRF (F3_Uq T)),
672       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
673       G_s_bar_w_minus_t
674      ;
675      (FRF (F4_Dq S_bar), FRV (V3_W W_minus), FRF (F3_Uq U)),
676       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
677       G_s_bar_w_minus_u
678      ;
679      (FRF (F4_Dq B_bar), FRV (V2_Z Z_1), FRF (F4_Dq B)),
680       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
681       G_b_bar_z_1_b
682      ;
683      (FRF (F4_Dq D_bar), FRV (V2_Z Z_1), FRF (F4_Dq D)),
684       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
685       G_b_bar_z_1_b
686      ;
687      (FRF (F4_Dq S_bar), FRV (V2_Z Z_1), FRF (F4_Dq S)),
688       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
689       G_b_bar_z_1_b
690      ;
691      (FRF (F2_L E_plus), FRV (V2_Z Z_1), FRF (F2_L E_minus)),
692       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
693       G_e_plus_z_1_e_minus
694      ;
695      (FRF (F2_L M_plus), FRV (V2_Z Z_1), FRF (F2_L M_minus)),
696       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
697       G_e_plus_z_1_e_minus
698      ;
699      (FRF (F2_L Tt_plus), FRV (V2_Z Z_1), FRF (F2_L Tt_minus)),
700       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
701       G_e_plus_z_1_e_minus
702      ;
703      (FRF (F3_Uq C_bar), FRV (V2_Z Z_1), FRF (F3_Uq C)),
704       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
705       G_c_bar_z_1_c
706      ;
707      (FRF (F3_Uq T_bar), FRV (V2_Z Z_1), FRF (F3_Uq T)),
708       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
709       G_c_bar_z_1_c
710      ;
711      (FRF (F3_Uq U_bar), FRV (V2_Z Z_1), FRF (F3_Uq U)),
712       Coupling.FBF (1, Coupling.Psibar, Coupling.VLR, Coupling.Psi),
713       G_c_bar_z_1_c
714      ;
715      (FRF (F1_Vl Ve_bar), FRV (V2_Z Z_1), FRF (F1_Vl Ve)),
716       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
717       G_ve_bar_z_1_ve
718      ;
719      (FRF (F1_Vl Vm_bar), FRV (V2_Z Z_1), FRF (F1_Vl Vm)),
720       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
721       G_ve_bar_z_1_ve
722      ;
723      (FRF (F1_Vl Vt_bar), FRV (V2_Z Z_1), FRF (F1_Vl Vt)),
724       Coupling.FBF (1, Coupling.Psibar, Coupling.VL, Coupling.Psi),
725       G_ve_bar_z_1_ve
726   ]
727
728   let vertices_3_qcd = [
729      (FRF (F4_Dq B_bar), FRV (V4_G G_1), FRF (F4_Dq B)),
730       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
731       G_b_bar_g_1_b
732      ;
733      (FRF (F4_Dq D_bar), FRV (V4_G G_1), FRF (F4_Dq D)),
734       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
735       G_b_bar_g_1_b
736      ;
737      (FRF (F4_Dq S_bar), FRV (V4_G G_1), FRF (F4_Dq S)),
738       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
739       G_b_bar_g_1_b
740      ;
741      (FRF (F3_Uq C_bar), FRV (V4_G G_1), FRF (F3_Uq C)),
742       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
743       G_b_bar_g_1_b
744      ;
745      (FRF (F3_Uq T_bar), FRV (V4_G G_1), FRF (F3_Uq T)),
746       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
747       G_b_bar_g_1_b
748      ;
749      (FRF (F3_Uq U_bar), FRV (V4_G G_1), FRF (F3_Uq U)),
750       Coupling.FBF (1, Coupling.Psibar, Coupling.V, Coupling.Psi),
751       G_b_bar_g_1_b
752   ]
753
754   let vertices_4 = [
755      (FRS (S1_H H_1), FRS (S1_H H_1), FRS (S1_H H_1), FRS (S1_H H_1)),
756       Scalar4 1,
757       G_h_1_h_1_h_1_h_1
758      ;
759      (FRS (S1_H H_1), FRS (S1_H H_1), FRV (V3_W W_plus), FRV (V3_W W_minus)),
760       Scalar2_Vector2 1,
761       G_h_1_h_1_w_plus_w_minus
762      ;
763      (FRV (V1_A A_1), FRV (V1_A A_1), FRV (V3_W W_plus), FRV (V3_W W_minus)),
764       Vector4 [2, Coupling.C_12_34; -1, Coupling.C_13_42; -1, Coupling.C_14_23],
765       G_a_1_a_1_w_plus_w_minus
766      ;
767      (FRV (V3_W W_plus), FRV (V3_W W_plus), FRV (V3_W W_minus), FRV (V3_W W_minus)),
768       Vector4 [2, Coupling.C_12_34; -1, Coupling.C_13_42; -1, Coupling.C_14_23],
769       G_w_plus_w_plus_w_minus_w_minus
770      ;
771      (FRV (V1_A A_1), FRV (V3_W W_plus), FRV (V3_W W_minus), FRV (V2_Z Z_1)),
772       Vector4 [1, Coupling.C_12_34; 1, Coupling.C_13_42; -2, Coupling.C_14_23],
773       G_a_1_w_plus_w_minus_z_1
774      ;
775      (FRS (S1_H H_1), FRS (S1_H H_1), FRV (V2_Z Z_1), FRV (V2_Z Z_1)),
776       Scalar2_Vector2 1,
777       G_h_1_h_1_z_1_z_1
778      ;
779      (FRV (V3_W W_plus), FRV (V3_W W_minus), FRV (V2_Z Z_1), FRV (V2_Z Z_1)),
780       Vector4 [2, Coupling.C_12_34; -1, Coupling.C_13_42; -1, Coupling.C_14_23],
781       G_w_plus_w_minus_z_1_z_1
782   ]
783
784   let vertices_4_qcd = [
785      (FRV (V4_G G_1), FRV (V4_G G_1), FRV (V4_G G_1), FRV (V4_G G_1)),
786       Vector4 [1, Coupling.C_12_34; -2, Coupling.C_13_42; 1, Coupling.C_14_23],
787       G_g_1_g_1_g_1_g_1
788   ]
789
790   let vertices_n = []
791
792   let vertices_n_qcd = []
793
794   let vertices () = (
795      vertices_3 @ (match Opts.color with true -> vertices_3_qcd | false -> []),
796      vertices_4 @ (match Opts.color with true -> vertices_4_qcd | false -> []),
797      vertices_n @ (match Opts.color with true -> vertices_n_qcd | false -> [])
798   )
799
800   module F = Modeltools.Fusions (struct
801      type f = flavor
802      type c = constant
803      let compare = compare
804      let conjugate = conjugate
805   end)
806
807   let table = F.of_vertices (vertices ())
808   let fuse2 = F.fuse2 table
809   let fuse3 = F.fuse3 table
810   let fuse = F.fuse table
811
812   (* Misc. infrastructure *)
813
814   let options = Options.empty
815
816   let rcs = RCS.parse "fr_sm_test" ["automatically generate FeynRules model - testing only"] {
817      RCS.revision = "Revision: Noop";
818      RCS.date = "Date: Noop";
819      RCS.author = "Author: FeynRules automaton";
820      RCS.source = "Source: Noop"
821   }
822
823   type flavor_sans_color = flavor
824   let flavor_sans_color x = x
825   let conjugate_sans_color = conjugate
826   let flavor_sans_color_of_string = flavor_of_string
827   let flavor_sans_color_to_string = flavor_to_string
828   let flavor_sans_color_to_TeX = flavor_to_TeX
829   let flavor_sans_color_symbol = flavor_symbol
830end