CHEIDI: HEIDI.fr

File HEIDI.fr, 5.1 KB (added by Christian Speckner, 14 years ago)

FeynRules model file (requires Heidi.m and Hdecay.m)

Line 
1(* *************************************************************************************
2 HEIDI Higgs with a compact extra dimension.
3
4 The model is intended for use on top of the Standard Model where it replaces the
5 Higgs sector. As the theory contains a variable number of modes below the cutoff
6 (the masses of which cannot be expressed analytically), the HEIDI parameters have to
7 be set before creating the Feynman rules and model files. Those parameters are:
8
9 Heidi$v : higgs VeV. Optional, default is the value.
10 Heidi$mh : higgs Mass. Optional, default is the SM value
11 Heidi$cs : compactification scale
12 Heidi$mb : bulk mass
13 Heidi$g2 : 5D trilinear coupling squared
14 Heidi$cutoff : cutoff scale
15 Heidi$nmodes : if Heidi$cutoff is undefined, Heidi$nmodes determines the number of
16 modes in the spectrum (starting from index 0)
17
18 Masses, widths and couplings are calculated statically. DO NOT CHANGE THOSE OR THE
19 ELECTROWEAK PARAMETERS AFTER CREATING THE MODEL.
20
21 This model file is a descendant of Claude Duhr's SMScalars model.
22
23*)
24
25
26(* Make sure everything we need is at our disposal *)
27Needs["Heidi`"];
28Block[{error},
29 error[s_] := (Print["HEIDI error: please set " <> s]; Throw[Null]);
30 If[!NumericQ[Heidi$v], error["Heidi$v"]];
31 If[!NumericQ[Heidi$mh], error["Heidi$mh"]];
32 If[!NumericQ[Heidi$cs], error["Heidi$cs"]];
33 If[!NumericQ[Heidi$mb], error["Heidi$mb"]];
34 If[!NumericQ[Heidi$g2], error["Heidi$g2"]];
35 If[FeynmanGauge,
36 Print["HEIDI error: the model currently only supports unitarity gauge"
37 <> "; please set FeynmanGauge = False."];
38 Throw[Null];
39 ];
40];
41
42(* Init HEIDI *)
43InitHeidi[Heidi$v, Heidi$mh, Heidi$cs, Heidi$mb, Heidi$g2];
44
45(* Determine the number of modes we have been requested to include *)
46If[NumericQ[Heidi$cutoff],
47 Heidi$nmodes = FixedPoint[If[HeidiMass[#] < Heidi$cutoff, # + 1, #]&, 0];
48];
49If[!NumericQ[Heidi$nmodes],
50 Print["HEIDI error: please set either Heidi$cutoff or Heidi$nmodes"];
51 Throw[Null];
52];
53
54(* Model metadata *)
55M$ModelName = "HEIDI";
56M$Information = {Authors -> "C. Speckner",
57 Institutions -> "Universitaet Freiburg",
58 Emails -> "Christian.Speckner@physik.uni-freiburg.de",
59 Date -> "30.07.2010",
60 Version -> "0.1",
61 URLs -> "None",
62 References -> (
63 ""
64 <> "\"Exploring the golden channel for HEIDI models using an "
65 <> "interface between WHIZARD and FeynRules\", "
66 <> "N. D. Christensen, C. Duhr, B. Fuks, J. Reuter, C. Speckner, "
67 <> "arXiv:1010.3251")
68};
69
70(* The flavor index for the HEIDI modes *)
71IndexRange[Index[Heidi]] = Range[Heidi$nmodes];
72IndexStyle[Heidi, k];
73
74M$Parameters = {
75(* The Higgs wavefunction is a tensor parameter, the entries of which are *
76 * stored numerically as external parameters. *)
77 xi == {
78 Indices -> {Index[Heidi]},
79 ComplexParameter -> False,
80 Value -> Table[Rule[xi[n], HeidiWavefunction[n - 1, 0]],
81 {n, 1, Heidi$nmodes}],
82 Description -> "Higgs wave function",
83 ParameterType -> External,
84 AllowSummation -> True
85 },
86(* K factor for the effective ggh coupling *)
87 kggh == {
88 Value -> 1,
89 ParamterType -> External,
90 Description -> "ggh K factor"
91 }
92};
93
94
95(* Enter the HEIDI scalars *)
96M$ClassesDescription = {
97 S[4] == {
98 ClassName -> Hh,
99 ClassMembers -> Table[Symbol["Hh" <> ToString[n]], {n, 1, Heidi$nmodes}],
100 SelfConjugate -> True,
101 Indices -> {Index[Heidi]},
102 FlavorIndex -> Heidi,
103 Mass -> Table[{Symbol["mhh" <> ToString[n]], HeidiMass[n - 1]}, {n, 1, Heidi$nmodes}],
104 Width -> Table[{Symbol["whh" <> ToString[n]], HeidiWidth[n - 1]}, {n, 1, Heidi$nmodes}],
105 PDG -> Table[990000 + n, {n, 1, Heidi$nmodes}]
106 }
107}
108
109(* Construct HEIDI Lagrangian *)
110LHEIDI := (LSM /. {muH -> 0, \[Lambda] -> 0}) /. H -> (Hh[n]*xi[n]);
111LHEIDI::usage = "LHEIDI: HEIDI lagrangian";
112
113(* Optional: the effective ggh_i lagrangian *)
114LHEIDIgg[mode_] := Block[{fun, piece, tt, mm, hh},
115 Print["adding effective scalar-gluon-gluon vertices " <> If[mode == "heavytop",
116 "in heavy top limit", "with dynamical loop factor"]];
117 tt[m_] := 4*MT^2 / m^2;
118 fun[tau_] := If[mode == "heavytop", 2/3,
119 tau * (1 + (1 - tau)* If[NumericalValue[tau] > 1,
120 ArcSin[Sqrt[1 / tau]]^2
121 ,
122 -1/4 * (Log[(1 + Sqrt[1 + tau])/(1 - Sqrt[1 - tau])]
123 - I*Pi)^2
124 ])
125 ];
126 mm[n_] := Symbol["mhh" <> ToString[n]];
127 hh[n_] := Symbol["Hh" <> ToString[n]];
128 piece[n_] :=
129 Sqrt[kggh] * gs^2/32/Pi^2/v * fun[tt[mm[n]]] * xi[n] *
130 hh[n] * (del[G[mu, a], nu] - del[G[nu, a], mu])^2;
131 Plus @@ (piece /@ Range[Heidi$nmodes])
132];
133LHEIDIgg[] := LHEIDIgg[""];
134LHEIDIgg::usage = "LHEIDIgg [mode]: HEIDI effective scalar-gluon-gluon couplings
135 mode : optional, set to \"heavytop\" to use heavy top limit";
136
137(* Protect our symbols. *)
138Protect[LHEIDI, LHEIDIgg];
139
140(* Spit out final warnings. *)
141Print["HEIDI initialized. Please doublecheck that the runtime parametrization of "
142 <> "the electroweak sector is consistent with the parameters you used for HEIDI "
143 <> "before running any code."];