CHEIDI: HEIDI_bundle.fr

File HEIDI_bundle.fr, 12.5 KB (added by Christian Speckner, 14 years ago)

FeynRules mode file (bundle for standalone usage)

Line 
1(* Automatically generated from HDecay output *
2 * (c.f. "HDECAY: A Program for Higgs boson decays in the standard model and *
3 * its supersymmetric extension.", A. Djouadi, J. Kalinowski, M. Spira, *
4 * Comput.Phys.Commun.108:56-74,1998) *)
5
6BeginPackage ["Hdecay`"];
7Begin ["Hdecay`p`"];
8
9data = {{0, 0}, {1., 2.251*^-7}, {6.0201, 0.00002011}, {11.0402, 0.0001738}, {16.0603, 0.0004549},
10 {21.0804, 0.0006405}, {26.1005, 0.0007918}, {31.1206, 0.0009277}, {36.1407, 0.001055},
11 {41.1608, 0.001178}, {46.1809, 0.001298}, {51.201, 0.001416}, {56.2211, 0.001533},
12 {61.2412, 0.001649}, {66.2613, 0.001766}, {71.2814, 0.001883}, {76.3015, 0.002},
13 {81.3216, 0.002119}, {86.3417, 0.00224}, {91.3618, 0.002364}, {96.3819, 0.002495},
14 {101.402, 0.002642}, {106.422, 0.002816}, {111.442, 0.003041}, {116.462, 0.003347},
15 {121.482, 0.003782}, {126.503, 0.00442}, {131.523, 0.005373}, {136.543, 0.00683},
16 {141.563, 0.009133}, {146.583, 0.013}, {151.603, 0.02027}, {156.623, 0.03847},
17 {161.643, 0.1316}, {166.663, 0.2903}, {171.683, 0.4168}, {176.704, 0.5386},
18 {181.724, 0.6883}, {186.744, 0.9035}, {191.764, 1.105}, {196.784, 1.3}, {201.804, 1.499},
19 {206.824, 1.705}, {211.844, 1.922}, {216.864, 2.151}, {221.884, 2.394}, {226.905, 2.651},
20 {231.925, 2.924}, {236.945, 3.213}, {241.965, 3.519}, {246.985, 3.843}, {252.005, 4.184},
21 {257.025, 4.545}, {262.045, 4.925}, {267.065, 5.324}, {272.085, 5.742}, {277.106, 6.182},
22 {282.126, 6.642}, {287.146, 7.123}, {292.166, 7.625}, {297.186, 8.15}, {302.206, 8.696},
23 {307.226, 9.265}, {312.246, 9.856}, {317.266, 10.47}, {322.286, 11.1}, {327.307, 11.76},
24 {332.327, 12.44}, {337.347, 13.13}, {342.367, 13.83}, {347.387, 14.61}, {352.407, 15.7},
25 {357.427, 16.91}, {362.447, 18.18}, {367.467, 19.51}, {372.487, 20.89}, {377.508, 22.31},
26 {382.528, 23.77}, {387.548, 25.27}, {392.568, 26.81}, {397.588, 28.38}, {402.608, 29.99},
27 {407.628, 31.63}, {412.648, 33.3}, {417.668, 35.01}, {422.688, 36.76}, {427.709, 38.53},
28 {432.729, 40.34}, {437.749, 42.19}, {442.769, 44.06}, {447.789, 45.97}, {452.809, 47.92},
29 {457.829, 49.9}, {462.849, 51.91}, {467.869, 53.96}, {472.889, 56.05}, {477.91, 58.17},
30 {482.93, 60.33}, {487.95, 62.52}, {492.97, 64.76},
31 {497.99, 67.03}};
32
33interpolation[x_, l_] := Plus @@ ((#[[1]] * x^#[[2]])& /@ l);
34
35params = {{-0.26293901351164234, 1}, {0.001368182199849752, 2}, {-2.3048363155706936*^-6, 3},
36 {3.1498414039397794*^-9, 4}, {-1.977234012939224*^-12, 5},
37 {6.665973758092558*^-16, 6}};
38
39Hdecay`Hdecay[mh_] := If[mh < 500, Max[Interpolation[data, InterpolationOrder->1][mh], 0], interpolation[mh, params]]/;(mh >= 0);
40Hdecay`Hdecay::usage = "usage: Hdecay [mh]";
41
42End[];
43Protect[Hdecay];
44EndPackage[];
45(* Spectrum calculator for compact HEIDI. For more information, please take *
46 * a look at *
47 * *
48 * "Exploring the golden channel for HEIDI models using an interface between *
49 * WHIZARD and FeynRules", N. D. Christensen, C. Duhr, B. Fuks, J. Reuter,*
50 * C. Speckner, arXiv:1010.3251 *
51 * *
52 * Please cite above reference if you use this program. *)
53
54BeginPackage["Heidi`"];
55Begin["Heidi`p`"];
56Needs["Hdecay`"];
57
58(* Initialize the package and clear all caches. *)
59Heidi`InitHeidi[mv_, mmh_, mcs_, mmb_, mg2_, mprec_] := Block[{},
60 v = mv;
61 mh = mmh;
62 cs = mcs;
63 mb = mmb;
64 g2 = mg2;
65 g = N[Sqrt[g2]];
66 alpha = N[g2 / mb * Coth[mb * Pi / cs]];
67 lambda = N[mh^2 / v^2 / 2];
68 prec = mprec;
69 Clear[MassCache, WFCache, WidthCache];
70 If[lambda <= alpha,
71 mh = 1.1 * Sqrt[2*alpha] * v;
72 Print["WARNING: choosen Higgs mass is to small; using mh "
73 <> ToString [mh] <> "GeV instead!"];
74 InitHeidi[v, mh, cs, mb, g2, prec];
75 ];
76];
77
78Heidi`InitHeidi[v_, mh_, cs_, mb_, g2_] := InitHeidi[v, mh, cs, mb, g2, 0.000001];
79
80Heidi`InitHeidi::usage = "usage: InitHeidi [v, mh, cs, mb, g2, prec]
81 v : higgs VeV
82 mh : higgs mass
83 cs : compactification scale
84 mb : bulk mass
85 g2 : 5D mixing squared
86 prec : precision for the numeric determination of the masses
87 (optional; default: 0.000001)";
88
89
90(* Calculate the nth mass eigenvalue *)
91Heidi`HeidiMass[n_] := Block[{fun, l, r, x, oldx},
92 If[NumericQ[MassCache[n]],
93 MassCache[n]
94 ,
95 If[n > 0,
96 fun = (mh^2 - mb^2 + 2*g2*v^2/# * Cot[Pi/cs*#] - #^2)&;
97 l = (n - 1) * cs; r = n * cs;
98 ,
99 fun = (mb^2 - mh^2 + 2*g2*v^2/# * Coth[Pi/cs*#] - #^2)&;
100 l = 0; r = mb;
101 ];
102 oldx = l;
103 x = (l + r) / 2;
104 While[Abs[(x - oldx) / x] > prec,
105 oldx = x;
106 If[fun[x] > 0, l = x, r = x];
107 x = (l + r) / 2;
108 ];
109 MassCache[n] = If[n == 0, Sqrt[mb^2 - N[x]^2], Sqrt[N[x]^2 + mb^2]]
110 ]
111]/;(n >= 0);
112
113Heidi`HeidiMass::usage = "usage: HeidiMass [n]
114 n : mode index";
115
116
117(* Calculate the mth component of the nth wavefunction *)
118Heidi`HeidiWavefunction[n_, m_] := Block[{},
119 If[NumericQ[WFCache[n, m]],
120 WFCache[n, m]
121 ,
122 If[m == 0,
123 WFCache[n, m] = N[1/Sqrt[
124 1 + g2*v^2*Pi/cs/(HeidiMass[n]^2 - mb^2) +
125 (HeidiMass[n]^2 - mh^2)/2/(HeidiMass[n]^2 - mb^2) +
126 (HeidiMass[n]^2 - mh^2)^2 * Pi/4/g2/v^2/cs
127 ]]
128 ,
129 WFCache[n, m] = N[HeidiWavefunction[n, 0] *
130 2*g*v*Sqrt[cs/Pi/If[m == 1, 2, 1]] /
131 (HeidiMass[n]^2 - mb^2 - (m - 1)^2*cs^2)]
132 ]
133 ]
134]/;((n >= 0) && (m >= 0));
135
136Heidi`HeidiWavefunction::usage = "usage: HeidiWavefunction [n, m]
137 n : mode index
138 m : wavefunction component index (0 = pre-mixing higgs)";
139
140
141Heidi`HeidiScalarCoupling[i__] := Block[{},
142 -I*6 * (Times @@ (Heidi`HeidiWavefunction[#, 0]& /@ {i}))
143]/;((Length[{i}] == 4) && (And @@ ((# >= 0)& /@ {i})));
144
145Heidi`HeidiScalarCoupling[i__] := Block [{thing},
146 -2*I*v * (Times @@ (Heidi`HeidiWavefunction[#, 0]& /@ {i})) *
147 (3*lambda - ((Plus @@ ((HeidiMass[#]^2)& /@ {i})) - 3 * mh^2)/2/v^2)
148]/;((Length[{i}] == 3) && (And @@ ((# >= 0)& /@ {i})));
149
150Heidi`HeidiScalarCoupling::usage = "usage: HeidiScalarCoupling [i1, ..., in]
151 i1, ..., in : modes meeting at the vertex (n = 3 or n = 4)";
152
153
154Heidi`HeidiScalarWidth[i_] := Block[{calc},
155 calc[{x_, j_, k_}] := Which[
156 j == i, {x, j, k},
157 (HeidiMass[i] < HeidiMass[j] + HeidiMass[k]) || (k > j), {x, j+1, 0},
158 True, {
159 Sqrt[
160 (HeidiMass[i]^2 - (HeidiMass[j] + HeidiMass[k])^2) *
161 (HeidiMass[i]^2 - (HeidiMass[j] - HeidiMass[k])^2)]
162 /16/Pi/HeidiMass[i]^3 * Abs[HeidiScalarCoupling[i, j, k]]^2
163 /If[j == k, 2, 1] + x, j, k+1}
164 ];
165 If[NumericQ[WidthCache[i]], WidthCache[i], WidthCache[i] = FixedPoint[calc, {0, 0, 0}][[1]]]
166]/;(i >= 0);
167
168Heidi`HeidiScalarWidth::usage = "usage: HeidiScalarWidth [n]
169 n : mode index";
170
171
172Heidi`HeidiSMWidth[i_] := Block[{},
173 Hdecay[HeidiMass[i]] * HeidiWavefunction[i, 0]^2
174]/;(i >= 0);
175
176Heidi`HeidiSMWidth::usage = "usage: HeidiSMWidth [n]
177 n : mode index";
178
179
180Heidi`HeidiWidth[i_] := HeidiSMWidth[i] + HeidiScalarWidth[i];
181
182Heidi`HeidiWidth::usage = "usage: HeidiWidth [n]
183 n : mode index";
184
185End[];
186Protect[InitHeidi, HeidiMass, HeidiWavefunction, HeidiScalarCoupling, HeidiScalarWidth,
187 HeidiSMWidth, HeidiWidth];
188EndPackage[];
189(* *************************************************************************************
190 HEIDI Higgs with a compact extra dimension.
191
192 The model is intended for use on top of the Standard Model where it replaces the
193 Higgs sector. As the theory contains a variable number of modes below the cutoff
194 (the masses of which cannot be expressed analytically), the HEIDI parameters have to
195 be set before creating the Feynman rules and model files. Those parameters are:
196
197 Heidi$v : higgs VeV. Optional, default is the value.
198 Heidi$mh : higgs Mass. Optional, default is the SM value
199 Heidi$cs : compactification scale
200 Heidi$mb : bulk mass
201 Heidi$g2 : 5D trilinear coupling squared
202 Heidi$cutoff : cutoff scale
203 Heidi$nmodes : if Heidi$cutoff is undefined, Heidi$nmodes determines the number of
204 modes in the spectrum (starting from index 0)
205
206 Masses, widths and couplings are calculated statically. DO NOT CHANGE THOSE OR THE
207 ELECTROWEAK PARAMETERS AFTER CREATING THE MODEL.
208
209 This model file is a descendant of Claude Duhr's SMScalars model.
210
211*)
212
213
214(* Make sure everything we need is at our disposal *)
215Needs["Heidi`"];
216Block[{error},
217 error[s_] := (Print["HEIDI error: please set " <> s]; Throw[Null]);
218 If[!NumericQ[Heidi$v], error["Heidi$v"]];
219 If[!NumericQ[Heidi$mh], error["Heidi$mh"]];
220 If[!NumericQ[Heidi$cs], error["Heidi$cs"]];
221 If[!NumericQ[Heidi$mb], error["Heidi$mb"]];
222 If[!NumericQ[Heidi$g2], error["Heidi$g2"]];
223 If[FeynmanGauge,
224 Print["HEIDI error: the model currently only supports unitarity gauge"
225 <> "; please set FeynmanGauge = False."];
226 Throw[Null];
227 ];
228];
229
230(* Init HEIDI *)
231InitHeidi[Heidi$v, Heidi$mh, Heidi$cs, Heidi$mb, Heidi$g2];
232
233(* Determine the number of modes we have been requested to include *)
234If[NumericQ[Heidi$cutoff],
235 Heidi$nmodes = FixedPoint[If[HeidiMass[#] < Heidi$cutoff, # + 1, #]&, 0];
236];
237If[!NumericQ[Heidi$nmodes],
238 Print["HEIDI error: please set either Heidi$cutoff or Heidi$nmodes"];
239 Throw[Null];
240];
241
242(* Model metadata *)
243M$ModelName = "HEIDI";
244M$Information = {Authors -> "C. Speckner",
245 Institutions -> "Universitaet Freiburg",
246 Emails -> "Christian.Speckner@physik.uni-freiburg.de",
247 Date -> "30.07.2010",
248 Version -> "0.1",
249 URLs -> "None",
250 References -> (
251 ""
252 <> "\"Exploring the golden channel for HEIDI models using an "
253 <> "interface between WHIZARD and FeynRules\", "
254 <> "N. D. Christensen, C. Duhr, B. Fuks, J. Reuter, C. Speckner, "
255 <> "arXiv:1010.3251")
256};
257
258(* The flavor index for the HEIDI modes *)
259IndexRange[Index[Heidi]] = Range[Heidi$nmodes];
260IndexStyle[Heidi, k];
261
262M$Parameters = {
263(* The Higgs wavefunction is a tensor parameter, the entries of which are *
264 * stored numerically as external parameters. *)
265 xi == {
266 Indices -> {Index[Heidi]},
267 ComplexParameter -> False,
268 Value -> Table[Rule[xi[n], HeidiWavefunction[n - 1, 0]],
269 {n, 1, Heidi$nmodes}],
270 Description -> "Higgs wave function",
271 ParameterType -> External,
272 AllowSummation -> True
273 },
274(* K factor for the effective ggh coupling *)
275 kggh == {
276 Value -> 1,
277 ParamterType -> External,
278 Description -> "ggh K factor"
279 }
280};
281
282
283(* Enter the HEIDI scalars *)
284M$ClassesDescription = {
285 S[4] == {
286 ClassName -> Hh,
287 ClassMembers -> Table[Symbol["Hh" <> ToString[n]], {n, 1, Heidi$nmodes}],
288 SelfConjugate -> True,
289 Indices -> {Index[Heidi]},
290 FlavorIndex -> Heidi,
291 Mass -> Table[{Symbol["mhh" <> ToString[n]], HeidiMass[n - 1]}, {n, 1, Heidi$nmodes}],
292 Width -> Table[{Symbol["whh" <> ToString[n]], HeidiWidth[n - 1]}, {n, 1, Heidi$nmodes}],
293 PDG -> Table[990000 + n, {n, 1, Heidi$nmodes}]
294 }
295}
296
297(* Construct HEIDI Lagrangian *)
298LHEIDI := (LSM /. {muH -> 0, \[Lambda] -> 0}) /. H -> (Hh[n]*xi[n]);
299LHEIDI::usage = "LHEIDI: HEIDI lagrangian";
300
301(* Optional: the effective ggh_i lagrangian *)
302LHEIDIgg[mode_] := Block[{fun, piece, tt, mm, hh},
303 Print["adding effective scalar-gluon-gluon vertices " <> If[mode == "heavytop",
304 "in heavy top limit", "with dynamical loop factor"]];
305 tt[m_] := 4*MT^2 / m^2;
306 fun[tau_] := If[mode == "heavytop", 2/3,
307 tau * (1 + (1 - tau)* If[NumericalValue[tau] > 1,
308 ArcSin[Sqrt[1 / tau]]^2
309 ,
310 -1/4 * (Log[(1 + Sqrt[1 + tau])/(1 - Sqrt[1 - tau])]
311 - I*Pi)^2
312 ])
313 ];
314 mm[n_] := Symbol["mhh" <> ToString[n]];
315 hh[n_] := Symbol["Hh" <> ToString[n]];
316 piece[n_] :=
317 Sqrt[kggh] * gs^2/32/Pi^2/v * fun[tt[mm[n]]] * xi[n] *
318 hh[n] * (del[G[mu, a], nu] - del[G[nu, a], mu])^2;
319 Plus @@ (piece /@ Range[Heidi$nmodes])
320];
321LHEIDIgg[] := LHEIDIgg[""];
322LHEIDIgg::usage = "LHEIDIgg [mode]: HEIDI effective scalar-gluon-gluon couplings
323 mode : optional, set to \"heavytop\" to use heavy top limit";
324
325(* Protect our symbols. *)
326Protect[LHEIDI, LHEIDIgg];
327
328(* Spit out final warnings. *)
329Print["HEIDI initialized. Please doublecheck that the runtime parametrization of "
330 <> "the electroweak sector is consistent with the parameters you used for HEIDI "
331 <> "before running any code."];