1 | (* -------------------------------------------------------------------------------- |
---|
2 | Autogenerated by the preliminary FeynRules <-> WHIZARD automaton on 4/23/2010 , 14:48:26 |
---|
3 | FeynRules version: $Revision: 119 $ |
---|
4 | WHIZARD interface svn revision info: $Id: WhizardOmegaInterface.m 134 2010-04-23 10:28:44Z ChristianSpeckner $ |
---|
5 | Code generated for WHIZARD / O'Mega version 1.93 |
---|
6 | Model: color_triplet_vectors |
---|
7 | Short model name: fr_color_triplet_vectors |
---|
8 | Gauge: Unitarity |
---|
9 | Maximum number of couplings per FORTRAN module: 500 |
---|
10 | -------------------------------------------------------------------------------- *) |
---|
11 | |
---|
12 | type gauge = Unitarity | Feynman | Rxi |
---|
13 | |
---|
14 | module type Frules_options = |
---|
15 | sig |
---|
16 | val gauge: gauge |
---|
17 | val color: bool |
---|
18 | end |
---|
19 | |
---|
20 | module Implementation (Opts: Frules_options) = |
---|
21 | struct |
---|
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 v7_X = |
---|
44 | | X1 | X2 |
---|
45 | type s1_H = |
---|
46 | | H_1 |
---|
47 | type s2_Phi = |
---|
48 | | Phi0 |
---|
49 | type s3_Phi2 = |
---|
50 | | Phi_plus | Phi_minus |
---|
51 | |
---|
52 | (* The FeynRules lorentz types with the corresponding classes *) |
---|
53 | |
---|
54 | type scalar = |
---|
55 | | S1_H of s1_H | S2_Phi of s2_Phi | S3_Phi2 of s3_Phi2 |
---|
56 | type fermion = |
---|
57 | | F1_Vl of f1_Vl | F2_L of f2_L | F3_Uq of f3_Uq | F4_Dq of f4_Dq |
---|
58 | type vector = |
---|
59 | | V1_A of v1_A | V2_Z of v2_Z | V3_W of v3_W | V4_G of v4_G | V7_X of v7_X |
---|
60 | |
---|
61 | (* The actual flavor type *) |
---|
62 | |
---|
63 | type flavor = |
---|
64 | | FRS of scalar | FRF of fermion | FRV of vector |
---|
65 | |
---|
66 | (* Trampoline functions *) |
---|
67 | |
---|
68 | let fermion_of_f1_Vl c = F1_Vl c |
---|
69 | let fermion_of_f2_L c = F2_L c |
---|
70 | let fermion_of_f3_Uq c = F3_Uq c |
---|
71 | let fermion_of_f4_Dq c = F4_Dq c |
---|
72 | let vector_of_v1_A c = V1_A c |
---|
73 | let vector_of_v2_Z c = V2_Z c |
---|
74 | let vector_of_v3_W c = V3_W c |
---|
75 | let vector_of_v4_G c = V4_G c |
---|
76 | let vector_of_v7_X c = V7_X c |
---|
77 | let scalar_of_s1_H c = S1_H c |
---|
78 | let scalar_of_s2_Phi c = S2_Phi c |
---|
79 | let scalar_of_s3_Phi2 c = S3_Phi2 c |
---|
80 | let flavor_of_scalar lt = FRS lt |
---|
81 | let flavor_of_fermion lt = FRF lt |
---|
82 | let flavor_of_vector lt = FRV lt |
---|
83 | |
---|
84 | (* Particle lists *) |
---|
85 | |
---|
86 | let f1_Vl_members = |
---|
87 | [Ve; Ve_bar; Vm; Vm_bar; Vt; Vt_bar;] |
---|
88 | let f2_L_members = |
---|
89 | [E_minus; E_plus; M_minus; M_plus; Tt_minus; Tt_plus;] |
---|
90 | let f3_Uq_members = |
---|
91 | [U; U_bar; C; C_bar; T; T_bar;] |
---|
92 | let f4_Dq_members = |
---|
93 | [D; D_bar; S; S_bar; B; B_bar;] |
---|
94 | let v1_A_members = |
---|
95 | [A_1;] |
---|
96 | let v2_Z_members = |
---|
97 | [Z_1;] |
---|
98 | let v3_W_members = |
---|
99 | [W_plus; W_minus;] |
---|
100 | let v4_G_members = |
---|
101 | [G_1;] |
---|
102 | let v7_X_members = |
---|
103 | [X1; X2;] |
---|
104 | let s1_H_members = |
---|
105 | [H_1;] |
---|
106 | let s2_Phi_members = |
---|
107 | [Phi0;] |
---|
108 | let s3_Phi2_members = |
---|
109 | [Phi_plus; Phi_minus;] |
---|
110 | let all_scalars = [] |
---|
111 | @ (List.map scalar_of_s1_H s1_H_members) |
---|
112 | @ (List.map scalar_of_s2_Phi s2_Phi_members) |
---|
113 | @ (List.map scalar_of_s3_Phi2 s3_Phi2_members) |
---|
114 | let all_fermions = [] |
---|
115 | @ (List.map fermion_of_f1_Vl f1_Vl_members) |
---|
116 | @ (List.map fermion_of_f2_L f2_L_members) |
---|
117 | @ (List.map fermion_of_f3_Uq f3_Uq_members) |
---|
118 | @ (List.map fermion_of_f4_Dq f4_Dq_members) |
---|
119 | let all_vectors = [] |
---|
120 | @ (List.map vector_of_v1_A v1_A_members) |
---|
121 | @ (List.map vector_of_v2_Z v2_Z_members) |
---|
122 | @ (List.map vector_of_v3_W v3_W_members) |
---|
123 | @ (List.map vector_of_v4_G v4_G_members) |
---|
124 | @ (List.map vector_of_v7_X v7_X_members) |
---|
125 | |
---|
126 | (* The conjugation operation on a single class *) |
---|
127 | |
---|
128 | let conjugate_f1_Vl = function |
---|
129 | | Ve -> Ve_bar | Ve_bar -> Ve | Vm -> Vm_bar | Vm_bar -> Vm | Vt -> Vt_bar |
---|
130 | | Vt_bar -> Vt |
---|
131 | let conjugate_f2_L = function |
---|
132 | | E_minus -> E_plus | E_plus -> E_minus | M_minus -> M_plus | M_plus -> M_minus |
---|
133 | | Tt_minus -> Tt_plus | Tt_plus -> Tt_minus |
---|
134 | let conjugate_f3_Uq = function |
---|
135 | | U -> U_bar | U_bar -> U | C -> C_bar | C_bar -> C | T -> T_bar | T_bar -> T |
---|
136 | let conjugate_f4_Dq = function |
---|
137 | | D -> D_bar | D_bar -> D | S -> S_bar | S_bar -> S | B -> B_bar | B_bar -> B |
---|
138 | let conjugate_v1_A = function |
---|
139 | | x -> x |
---|
140 | let conjugate_v2_Z = function |
---|
141 | | x -> x |
---|
142 | let conjugate_v3_W = function |
---|
143 | | W_plus -> W_minus | W_minus -> W_plus |
---|
144 | let conjugate_v4_G = function |
---|
145 | | x -> x |
---|
146 | let conjugate_v7_X = function |
---|
147 | | X1 -> X2 | X2 -> X1 |
---|
148 | let conjugate_s1_H = function |
---|
149 | | x -> x |
---|
150 | let conjugate_s2_Phi = function |
---|
151 | | x -> x |
---|
152 | let conjugate_s3_Phi2 = function |
---|
153 | | Phi_plus -> Phi_minus | Phi_minus -> Phi_plus |
---|
154 | |
---|
155 | (* The conjugation operation on a lorentz type *) |
---|
156 | |
---|
157 | let conjugate_scalar = function |
---|
158 | | S1_H x -> S1_H (conjugate_s1_H x) |
---|
159 | | S2_Phi x -> S2_Phi (conjugate_s2_Phi x) |
---|
160 | | S3_Phi2 x -> S3_Phi2 (conjugate_s3_Phi2 x) |
---|
161 | let conjugate_fermion = function |
---|
162 | | F1_Vl x -> F1_Vl (conjugate_f1_Vl x) |
---|
163 | | F2_L x -> F2_L (conjugate_f2_L x) |
---|
164 | | F3_Uq x -> F3_Uq (conjugate_f3_Uq x) |
---|
165 | | F4_Dq x -> F4_Dq (conjugate_f4_Dq x) |
---|
166 | let conjugate_vector = function |
---|
167 | | V1_A x -> V1_A (conjugate_v1_A x) |
---|
168 | | V2_Z x -> V2_Z (conjugate_v2_Z x) |
---|
169 | | V3_W x -> V3_W (conjugate_v3_W x) |
---|
170 | | V4_G x -> V4_G (conjugate_v4_G x) |
---|
171 | | V7_X x -> V7_X (conjugate_v7_X x) |
---|
172 | |
---|
173 | (* Conjugation for the masses *) |
---|
174 | |
---|
175 | let conjugate = function |
---|
176 | | FRS x -> FRS (conjugate_scalar x) |
---|
177 | | FRF x -> FRF (conjugate_fermion x) |
---|
178 | | FRV x -> FRV (conjugate_vector x) |
---|
179 | |
---|
180 | let color = function |
---|
181 | | FRS _ -> Color.Singlet |
---|
182 | | FRF x -> (match x with |
---|
183 | | F1_Vl _ -> Color.Singlet |
---|
184 | | F2_L _ -> Color.Singlet |
---|
185 | | F3_Uq x -> (match x with |
---|
186 | | U | C | T -> Color.SUN 3 | U_bar | C_bar | T_bar -> Color.SUN (-3)) |
---|
187 | | F4_Dq x -> (match x with |
---|
188 | | D | S | B -> Color.SUN 3 | D_bar | S_bar | B_bar -> Color.SUN (-3))) |
---|
189 | | FRV x -> (match x with |
---|
190 | | V1_A _ -> Color.Singlet |
---|
191 | | V2_Z _ -> Color.Singlet |
---|
192 | | V3_W _ -> Color.Singlet |
---|
193 | | V4_G G_1 -> Color.AdjSUN 3 |
---|
194 | | V7_X x -> (match x with |
---|
195 | | X1 -> Color.SUN 3 | X2 -> Color.SUN (-3))) |
---|
196 | |
---|
197 | let pdg = function |
---|
198 | | FRS x -> (match x with |
---|
199 | | S1_H H_1 -> 25 |
---|
200 | | S2_Phi Phi0 -> 250 |
---|
201 | | S3_Phi2 x -> (match x with |
---|
202 | | Phi_plus -> 251 | Phi_minus -> -251)) |
---|
203 | | FRF x -> (match x with |
---|
204 | | F1_Vl x -> (match x with |
---|
205 | | Ve -> 12 | Ve_bar -> -12 | Vm -> 14 | Vm_bar -> -14 | Vt -> 16 | Vt_bar -> -16) |
---|
206 | |
---|
207 | | F2_L x -> (match x with |
---|
208 | | E_minus -> 11 | E_plus -> -11 | M_minus -> 13 | M_plus -> -13 | Tt_minus -> 15 |
---|
209 | | Tt_plus -> -15) |
---|
210 | | F3_Uq x -> (match x with |
---|
211 | | U -> 2 | U_bar -> -2 | C -> 4 | C_bar -> -4 | T -> 6 | T_bar -> -6) |
---|
212 | | F4_Dq x -> (match x with |
---|
213 | | D -> 1 | D_bar -> -1 | S -> 3 | S_bar -> -3 | B -> 5 | B_bar -> -5)) |
---|
214 | | FRV x -> (match x with |
---|
215 | | V1_A A_1 -> 22 |
---|
216 | | V2_Z Z_1 -> 23 |
---|
217 | | V3_W x -> (match x with |
---|
218 | | W_plus -> 24 | W_minus -> -24) |
---|
219 | | V4_G G_1 -> 21 |
---|
220 | | V7_X x -> (match x with |
---|
221 | | X1 -> 99999 | X2 -> -99999)) |
---|
222 | |
---|
223 | let lorentz = function |
---|
224 | | FRF x -> (match x with |
---|
225 | | F1_Vl x -> (match x with |
---|
226 | | Ve | Vm | Vt -> Spinor | Ve_bar | Vm_bar | Vt_bar -> ConjSpinor) |
---|
227 | | F2_L x -> (match x with |
---|
228 | | E_minus | M_minus | Tt_minus -> Spinor | E_plus | M_plus | Tt_plus -> ConjSpinor) |
---|
229 | |
---|
230 | | F3_Uq x -> (match x with |
---|
231 | | U | C | T -> Spinor | U_bar | C_bar | T_bar -> ConjSpinor) |
---|
232 | | F4_Dq x -> (match x with |
---|
233 | | D | S | B -> Spinor | D_bar | S_bar | B_bar -> ConjSpinor)) |
---|
234 | | FRV x -> (match x with |
---|
235 | | V1_A A_1 -> Vector |
---|
236 | | V2_Z Z_1 -> Massive_Vector |
---|
237 | | V3_W x -> (match x with |
---|
238 | | W_plus | W_minus -> Massive_Vector) |
---|
239 | | V4_G G_1 -> Vector |
---|
240 | | V7_X x -> (match x with |
---|
241 | | X1 | X2 -> Massive_Vector)) |
---|
242 | | FRS _ -> Scalar |
---|
243 | |
---|
244 | type gauge = Xi |
---|
245 | |
---|
246 | let propagator = |
---|
247 | let msg = "fr_color_triplet_vectors.Implementation: invalid lorentz rep in propagator" in function |
---|
248 | | FRS _ -> Prop_Scalar |
---|
249 | | FRF x -> (match lorentz (FRF x) with |
---|
250 | | Spinor -> Prop_Spinor |
---|
251 | | ConjSpinor -> Prop_ConjSpinor |
---|
252 | | Majorana -> Prop_Majorana |
---|
253 | | _ -> invalid_arg msg) |
---|
254 | | FRV x -> (match Opts.gauge with |
---|
255 | | Unitarity -> (match lorentz (FRV x) with |
---|
256 | | Vector -> Prop_Feynman |
---|
257 | | Massive_Vector -> Prop_Unitarity |
---|
258 | | _ -> invalid_arg msg) |
---|
259 | | Feynman -> (match lorentz (FRV x) with |
---|
260 | | Vector -> Prop_Feynman |
---|
261 | | Massive_Vector -> Prop_Rxi Xi |
---|
262 | | _ -> invalid_arg msg) |
---|
263 | | Rxi -> (match lorentz (FRV x) with |
---|
264 | | Vector -> Prop_Gauge Xi |
---|
265 | | Massive_Vector -> Prop_Rxi Xi |
---|
266 | | _ -> invalid_arg msg)) |
---|
267 | |
---|
268 | let width_symbol = function |
---|
269 | | FRS x -> (match x with |
---|
270 | | S1_H H_1 -> "wh" |
---|
271 | | S2_Phi Phi0 -> "wphi" |
---|
272 | | S3_Phi2 x -> (match x with |
---|
273 | | Phi_plus -> "wphi2" | Phi_minus -> "wphi2")) |
---|
274 | | FRF x -> (match x with |
---|
275 | | F1_Vl _ -> "fr_zero" |
---|
276 | | F2_L _ -> "fr_zero" |
---|
277 | | F3_Uq x -> (match x with |
---|
278 | | T -> "wt" | T_bar -> "wt" | _ -> "fr_zero") |
---|
279 | | F4_Dq _ -> "fr_zero") |
---|
280 | | FRV x -> (match x with |
---|
281 | | V1_A _ -> "fr_zero" |
---|
282 | | V2_Z Z_1 -> "wz" |
---|
283 | | V3_W x -> (match x with |
---|
284 | | W_plus -> "ww" | W_minus -> "ww") |
---|
285 | | V4_G _ -> "fr_zero" |
---|
286 | | V7_X x -> (match x with |
---|
287 | | X1 -> "wy" | X2 -> "wy")) |
---|
288 | |
---|
289 | let width x = match width_symbol x with |
---|
290 | | "0" -> Vanishing |
---|
291 | | _ -> Timelike |
---|
292 | |
---|
293 | let fermion x = (match lorentz x with |
---|
294 | | Spinor -> 1 | ConjSpinor -> -1 | Majorana -> 2 | _ -> 0) |
---|
295 | |
---|
296 | let colsymm _ = (0, false), (0, false) |
---|
297 | |
---|
298 | let flavors () = [] |
---|
299 | @ (List.map flavor_of_scalar all_scalars) |
---|
300 | @ (List.map flavor_of_fermion all_fermions) |
---|
301 | @ (List.map flavor_of_vector all_vectors) |
---|
302 | |
---|
303 | let external_flavors () = ["FeynRules autogenerated flavors", flavors ()] |
---|
304 | |
---|
305 | let goldstone _ = None |
---|
306 | |
---|
307 | let flavor_to_string = function |
---|
308 | | FRS x -> (match x with |
---|
309 | | S1_H H_1 -> "H" |
---|
310 | | S2_Phi Phi0 -> "phi0" |
---|
311 | | S3_Phi2 x -> (match x with |
---|
312 | | Phi_plus -> "phi+" | Phi_minus -> "phi-")) |
---|
313 | | FRF x -> (match x with |
---|
314 | | F1_Vl x -> (match x with |
---|
315 | | Ve -> "ve" | Ve_bar -> "ve~" | Vm -> "vm" | Vm_bar -> "vm~" | Vt -> "vt" |
---|
316 | | Vt_bar -> "vt~") |
---|
317 | | F2_L x -> (match x with |
---|
318 | | E_minus -> "e-" | E_plus -> "e+" | M_minus -> "m-" | M_plus -> "m+" |
---|
319 | | Tt_minus -> "tt-" | Tt_plus -> "tt+") |
---|
320 | | F3_Uq x -> (match x with |
---|
321 | | U -> "u" | U_bar -> "u~" | C -> "c" | C_bar -> "c~" | T -> "t" | T_bar -> "t~") |
---|
322 | |
---|
323 | | F4_Dq x -> (match x with |
---|
324 | | D -> "d" | D_bar -> "d~" | S -> "s" | S_bar -> "s~" | B -> "b" | B_bar -> "b~")) |
---|
325 | | FRV x -> (match x with |
---|
326 | | V1_A A_1 -> "A" |
---|
327 | | V2_Z Z_1 -> "Z" |
---|
328 | | V3_W x -> (match x with |
---|
329 | | W_plus -> "W+" | W_minus -> "W-") |
---|
330 | | V4_G G_1 -> "G" |
---|
331 | | V7_X x -> (match x with |
---|
332 | | X1 -> "X1" | X2 -> "X2")) |
---|
333 | |
---|
334 | let flavor_to_TeX = function |
---|
335 | | FRS x -> (match x with |
---|
336 | | S1_H H_1 -> "\\phi" |
---|
337 | | S2_Phi Phi0 -> "phi0" |
---|
338 | | S3_Phi2 x -> (match x with |
---|
339 | | Phi_plus -> "\\phi^+" | Phi_minus -> "\\phi^-")) |
---|
340 | | FRF x -> (match x with |
---|
341 | | F1_Vl x -> (match x with |
---|
342 | | Ve -> "ve" | Ve_bar -> "ve~" | Vm -> "vm" | Vm_bar -> "vm~" | Vt -> "vt" |
---|
343 | | Vt_bar -> "vt~") |
---|
344 | | F2_L x -> (match x with |
---|
345 | | E_minus -> "e-" | E_plus -> "e+" | M_minus -> "m-" | M_plus -> "m+" |
---|
346 | | Tt_minus -> "tt-" | Tt_plus -> "tt+") |
---|
347 | | F3_Uq x -> (match x with |
---|
348 | | U -> "u" | U_bar -> "u~" | C -> "c" | C_bar -> "c~" | T -> "t" | T_bar -> "t~") |
---|
349 | |
---|
350 | | F4_Dq x -> (match x with |
---|
351 | | D -> "d" | D_bar -> "d~" | S -> "s" | S_bar -> "s~" | B -> "b" | B_bar -> "b~")) |
---|
352 | | FRV x -> (match x with |
---|
353 | | V1_A A_1 -> "A" |
---|
354 | | V2_Z Z_1 -> "Z" |
---|
355 | | V3_W x -> (match x with |
---|
356 | | W_plus -> "W+" | W_minus -> "W-") |
---|
357 | | V4_G G_1 -> "G" |
---|
358 | | V7_X x -> (match x with |
---|
359 | | X1 -> "X1" | X2 -> "X2")) |
---|
360 | |
---|
361 | let flavor_of_string x = |
---|
362 | let dict = List.map (fun x -> (x, flavor_to_string x)) (flavors ()) |
---|
363 | in try |
---|
364 | fst (List.find (fun (_, y) -> (x = y)) dict) |
---|
365 | with |
---|
366 | Not_found -> invalid_arg "fr_color_triplet_vectors.Implementation: flavor_of_string: invalid particle?" |
---|
367 | |
---|
368 | let flavor_symbol = function |
---|
369 | | FRS x -> (match x with |
---|
370 | | S1_H H_1 -> "h_1" |
---|
371 | | S2_Phi Phi0 -> "phi0" |
---|
372 | | S3_Phi2 x -> (match x with |
---|
373 | | Phi_plus -> "phi_plus" | Phi_minus -> "phi_minus")) |
---|
374 | | FRF x -> (match x with |
---|
375 | | F1_Vl x -> (match x with |
---|
376 | | Ve -> "ve" | Ve_bar -> "ve_bar" | Vm -> "vm" | Vm_bar -> "vm_bar" | Vt -> "vt" |
---|
377 | | Vt_bar -> "vt_bar") |
---|
378 | | F2_L x -> (match x with |
---|
379 | | E_minus -> "e_minus" | E_plus -> "e_plus" | M_minus -> "m_minus" |
---|
380 | | M_plus -> "m_plus" | Tt_minus -> "tt_minus" | Tt_plus -> "tt_plus") |
---|
381 | | F3_Uq x -> (match x with |
---|
382 | | U -> "u" | U_bar -> "u_bar" | C -> "c" | C_bar -> "c_bar" | T -> "t" |
---|
383 | | T_bar -> "t_bar") |
---|
384 | | F4_Dq x -> (match x with |
---|
385 | | D -> "d" | D_bar -> "d_bar" | S -> "s" | S_bar -> "s_bar" | B -> "b" |
---|
386 | | B_bar -> "b_bar")) |
---|
387 | | FRV x -> (match x with |
---|
388 | | V1_A A_1 -> "a_1" |
---|
389 | | V2_Z Z_1 -> "z_1" |
---|
390 | | V3_W x -> (match x with |
---|
391 | | W_plus -> "w_plus" | W_minus -> "w_minus") |
---|
392 | | V4_G G_1 -> "g_1" |
---|
393 | | V7_X x -> (match x with |
---|
394 | | X1 -> "x1" | X2 -> "x2")) |
---|
395 | |
---|
396 | let gauge_symbol = function |
---|
397 | Xi -> (match Opts.gauge with |
---|
398 | | Unitarity -> invalid_arg |
---|
399 | "fr_color_triplet_vectors.Implementation: requesting gauge symbol in unitarity gauge!" |
---|
400 | | Feynman -> "one" |
---|
401 | | Rxi -> "Rxi") |
---|
402 | |
---|
403 | let mass_symbol = function |
---|
404 | | FRS x -> (match x with |
---|
405 | | S1_H H_1 -> "mh" |
---|
406 | | S2_Phi Phi0 -> "mz" |
---|
407 | | S3_Phi2 x -> (match x with |
---|
408 | | Phi_plus -> "mw" | Phi_minus -> "mw")) |
---|
409 | | FRF x -> (match x with |
---|
410 | | F1_Vl _ -> "fr_zero" |
---|
411 | | F2_L x -> (match x with |
---|
412 | | E_minus -> "me" | E_plus -> "me" | M_minus -> "mm" | M_plus -> "mm" |
---|
413 | | Tt_minus -> "mta" | Tt_plus -> "mta") |
---|
414 | | F3_Uq x -> (match x with |
---|
415 | | U -> "mu" | U_bar -> "mu" | C -> "mc" | C_bar -> "mc" | T -> "mt" |
---|
416 | | T_bar -> "mt") |
---|
417 | | F4_Dq x -> (match x with |
---|
418 | | D -> "md" | D_bar -> "md" | S -> "ms" | S_bar -> "ms" | B -> "mb" |
---|
419 | | B_bar -> "mb")) |
---|
420 | | FRV x -> (match x with |
---|
421 | | V1_A _ -> "fr_zero" |
---|
422 | | V2_Z Z_1 -> "mz" |
---|
423 | | V3_W x -> (match x with |
---|
424 | | W_plus -> "mw" | W_minus -> "mw") |
---|
425 | | V4_G _ -> "fr_zero" |
---|
426 | | V7_X x -> (match x with |
---|
427 | | X1 -> "my" | X2 -> "my")) |
---|
428 | |
---|
429 | (* Coupling constants and parameters *) |
---|
430 | |
---|
431 | type constant = |
---|
432 | | G_g_1_x1_x2 | G_g_1_x1_x2_1 | G_g_1_g_1_x1_x2 | G_g_1_g_1_x1_x2_1 |
---|
433 | |
---|
434 | let parameters () = {input = []; derived = []; derived_arrays = []} |
---|
435 | |
---|
436 | let constant_symbol = function |
---|
437 | | G_g_1_x1_x2 -> "G_g_1_x1_x2" | G_g_1_x1_x2_1 -> "G_g_1_x1_x2_1" |
---|
438 | | G_g_1_g_1_x1_x2 -> "G_g_1_g_1_x1_x2" |
---|
439 | | G_g_1_g_1_x1_x2_1 -> "G_g_1_g_1_x1_x2_1" |
---|
440 | |
---|
441 | (* Vertices and fusions *) |
---|
442 | |
---|
443 | let max_degree () = 4 |
---|
444 | |
---|
445 | let gauge4 = Coupling.Vector4 [2, Coupling.C_13_42; (-1), Coupling.C_12_34; (-1), Coupling.C_14_23] |
---|
446 | |
---|
447 | let vertices_3 = [] |
---|
448 | |
---|
449 | let vertices_3_qcd = [ |
---|
450 | (FRV (V4_G G_1), FRV (V7_X X1), FRV (V7_X X2)), |
---|
451 | Dim4_Vector_Vector_Vector_L 1, |
---|
452 | G_g_1_x1_x2 |
---|
453 | ; |
---|
454 | (FRV (V4_G G_1), FRV (V7_X X2), FRV (V7_X X1)), |
---|
455 | Dim4_Vector_Vector_Vector_L 1, |
---|
456 | G_g_1_x1_x2_1 |
---|
457 | ; |
---|
458 | (FRV (V4_G G_1), FRV (V7_X X1), FRV (V7_X X2)), |
---|
459 | Dim4_Vector_Vector_Vector_T 1, |
---|
460 | G_g_1_x1_x2 |
---|
461 | ; |
---|
462 | (FRV (V4_G G_1), FRV (V7_X X2), FRV (V7_X X1)), |
---|
463 | Dim4_Vector_Vector_Vector_T 1, |
---|
464 | G_g_1_x1_x2_1 |
---|
465 | ] |
---|
466 | |
---|
467 | let vertices_4 = [] |
---|
468 | |
---|
469 | let vertices_4_qcd = [ |
---|
470 | (FRV (V4_G G_1), FRV (V4_G G_1), FRV (V7_X X1), FRV (V7_X X2)), |
---|
471 | Vector4 [1, Coupling.C_13_42], |
---|
472 | G_g_1_g_1_x1_x2 |
---|
473 | ; |
---|
474 | (FRV (V4_G G_1), FRV (V4_G G_1), FRV (V7_X X1), FRV (V7_X X2)), |
---|
475 | Vector4 [1, Coupling.C_14_23], |
---|
476 | G_g_1_g_1_x1_x2_1 |
---|
477 | ] |
---|
478 | |
---|
479 | let vertices_n = [] |
---|
480 | |
---|
481 | let vertices_n_qcd = [] |
---|
482 | |
---|
483 | let vertices () = ( |
---|
484 | vertices_3 @ (match Opts.color with true -> vertices_3_qcd | false -> []), |
---|
485 | vertices_4 @ (match Opts.color with true -> vertices_4_qcd | false -> []), |
---|
486 | vertices_n @ (match Opts.color with true -> vertices_n_qcd | false -> []) |
---|
487 | ) |
---|
488 | |
---|
489 | module F = Models.Fusions (struct |
---|
490 | type f = flavor |
---|
491 | type c = constant |
---|
492 | let compare = compare |
---|
493 | let conjugate = conjugate |
---|
494 | end) |
---|
495 | |
---|
496 | let table = F.of_vertices (vertices ()) |
---|
497 | let fuse2 = F.fuse2 table |
---|
498 | let fuse3 = F.fuse3 table |
---|
499 | let fuse = F.fuse table |
---|
500 | |
---|
501 | (* Misc. infrastructure *) |
---|
502 | |
---|
503 | let options = Options.empty |
---|
504 | |
---|
505 | let rcs = RCS.parse "fr_color_triplet_vectors" ["automatically generate FeynRules model - testing only"] { |
---|
506 | RCS.revision = "Revision: Noop"; |
---|
507 | RCS.date = "Date: Noop"; |
---|
508 | RCS.author = "Author: FeynRules automaton"; |
---|
509 | RCS.source = "Source: Noop" |
---|
510 | } |
---|
511 | |
---|
512 | end |
---|