CHEIDI: HEIDI.fr

File HEIDI.fr, 5.1 KB (added by ChristianSpeckner, 7 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."];