| 1 | (* Spectrum calculator for compact HEIDI. For more information, please take *
|
|---|
| 2 | * a look at *
|
|---|
| 3 | * *
|
|---|
| 4 | * "Exploring the golden channel for HEIDI models using an interface between *
|
|---|
| 5 | * WHIZARD and FeynRules", N. D. Christensen, C. Duhr, B. Fuks, J. Reuter,*
|
|---|
| 6 | * C. Speckner, arXiv:1010.3251 *
|
|---|
| 7 | * *
|
|---|
| 8 | * Please cite above reference if you use this program. *)
|
|---|
| 9 |
|
|---|
| 10 | BeginPackage["Heidi`"];
|
|---|
| 11 | Begin["Heidi`p`"];
|
|---|
| 12 | Needs["Hdecay`"];
|
|---|
| 13 |
|
|---|
| 14 | (* Initialize the package and clear all caches. *)
|
|---|
| 15 | Heidi`InitHeidi[mv_, mmh_, mcs_, mmb_, mg2_, mprec_] := Block[{},
|
|---|
| 16 | v = mv;
|
|---|
| 17 | mh = mmh;
|
|---|
| 18 | cs = mcs;
|
|---|
| 19 | mb = mmb;
|
|---|
| 20 | g2 = mg2;
|
|---|
| 21 | g = N[Sqrt[g2]];
|
|---|
| 22 | alpha = N[g2 / mb * Coth[mb * Pi / cs]];
|
|---|
| 23 | lambda = N[mh^2 / v^2 / 2];
|
|---|
| 24 | prec = mprec;
|
|---|
| 25 | Clear[MassCache, WFCache, WidthCache];
|
|---|
| 26 | If[lambda <= alpha,
|
|---|
| 27 | mh = 1.1 * Sqrt[2*alpha] * v;
|
|---|
| 28 | Print["WARNING: choosen Higgs mass is to small; using mh "
|
|---|
| 29 | <> ToString [mh] <> "GeV instead!"];
|
|---|
| 30 | InitHeidi[v, mh, cs, mb, g2, prec];
|
|---|
| 31 | ];
|
|---|
| 32 | ];
|
|---|
| 33 |
|
|---|
| 34 | Heidi`InitHeidi[v_, mh_, cs_, mb_, g2_] := InitHeidi[v, mh, cs, mb, g2, 0.000001];
|
|---|
| 35 |
|
|---|
| 36 | Heidi`InitHeidi::usage = "usage: InitHeidi [v, mh, cs, mb, g2, prec]
|
|---|
| 37 | v : higgs VeV
|
|---|
| 38 | mh : higgs mass
|
|---|
| 39 | cs : compactification scale
|
|---|
| 40 | mb : bulk mass
|
|---|
| 41 | g2 : 5D mixing squared
|
|---|
| 42 | prec : precision for the numeric determination of the masses
|
|---|
| 43 | (optional; default: 0.000001)";
|
|---|
| 44 |
|
|---|
| 45 |
|
|---|
| 46 | (* Calculate the nth mass eigenvalue *)
|
|---|
| 47 | Heidi`HeidiMass[n_] := Block[{fun, l, r, x, oldx},
|
|---|
| 48 | If[NumericQ[MassCache[n]],
|
|---|
| 49 | MassCache[n]
|
|---|
| 50 | ,
|
|---|
| 51 | If[n > 0,
|
|---|
| 52 | fun = (mh^2 - mb^2 + 2*g2*v^2/# * Cot[Pi/cs*#] - #^2)&;
|
|---|
| 53 | l = (n - 1) * cs; r = n * cs;
|
|---|
| 54 | ,
|
|---|
| 55 | fun = (mb^2 - mh^2 + 2*g2*v^2/# * Coth[Pi/cs*#] - #^2)&;
|
|---|
| 56 | l = 0; r = mb;
|
|---|
| 57 | ];
|
|---|
| 58 | oldx = l;
|
|---|
| 59 | x = (l + r) / 2;
|
|---|
| 60 | While[Abs[(x - oldx) / x] > prec,
|
|---|
| 61 | oldx = x;
|
|---|
| 62 | If[fun[x] > 0, l = x, r = x];
|
|---|
| 63 | x = (l + r) / 2;
|
|---|
| 64 | ];
|
|---|
| 65 | MassCache[n] = If[n == 0, Sqrt[mb^2 - N[x]^2], Sqrt[N[x]^2 + mb^2]]
|
|---|
| 66 | ]
|
|---|
| 67 | ]/;(n >= 0);
|
|---|
| 68 |
|
|---|
| 69 | Heidi`HeidiMass::usage = "usage: HeidiMass [n]
|
|---|
| 70 | n : mode index";
|
|---|
| 71 |
|
|---|
| 72 |
|
|---|
| 73 | (* Calculate the mth component of the nth wavefunction *)
|
|---|
| 74 | Heidi`HeidiWavefunction[n_, m_] := Block[{},
|
|---|
| 75 | If[NumericQ[WFCache[n, m]],
|
|---|
| 76 | WFCache[n, m]
|
|---|
| 77 | ,
|
|---|
| 78 | If[m == 0,
|
|---|
| 79 | WFCache[n, m] = N[1/Sqrt[
|
|---|
| 80 | 1 + g2*v^2*Pi/cs/(HeidiMass[n]^2 - mb^2) +
|
|---|
| 81 | (HeidiMass[n]^2 - mh^2)/2/(HeidiMass[n]^2 - mb^2) +
|
|---|
| 82 | (HeidiMass[n]^2 - mh^2)^2 * Pi/4/g2/v^2/cs
|
|---|
| 83 | ]]
|
|---|
| 84 | ,
|
|---|
| 85 | WFCache[n, m] = N[HeidiWavefunction[n, 0] *
|
|---|
| 86 | 2*g*v*Sqrt[cs/Pi/If[m == 1, 2, 1]] /
|
|---|
| 87 | (HeidiMass[n]^2 - mb^2 - (m - 1)^2*cs^2)]
|
|---|
| 88 | ]
|
|---|
| 89 | ]
|
|---|
| 90 | ]/;((n >= 0) && (m >= 0));
|
|---|
| 91 |
|
|---|
| 92 | Heidi`HeidiWavefunction::usage = "usage: HeidiWavefunction [n, m]
|
|---|
| 93 | n : mode index
|
|---|
| 94 | m : wavefunction component index (0 = pre-mixing higgs)";
|
|---|
| 95 |
|
|---|
| 96 |
|
|---|
| 97 | Heidi`HeidiScalarCoupling[i__] := Block[{},
|
|---|
| 98 | -I*6 * (Times @@ (Heidi`HeidiWavefunction[#, 0]& /@ {i}))
|
|---|
| 99 | ]/;((Length[{i}] == 4) && (And @@ ((# >= 0)& /@ {i})));
|
|---|
| 100 |
|
|---|
| 101 | Heidi`HeidiScalarCoupling[i__] := Block [{thing},
|
|---|
| 102 | -2*I*v * (Times @@ (Heidi`HeidiWavefunction[#, 0]& /@ {i})) *
|
|---|
| 103 | (3*lambda - ((Plus @@ ((HeidiMass[#]^2)& /@ {i})) - 3 * mh^2)/2/v^2)
|
|---|
| 104 | ]/;((Length[{i}] == 3) && (And @@ ((# >= 0)& /@ {i})));
|
|---|
| 105 |
|
|---|
| 106 | Heidi`HeidiScalarCoupling::usage = "usage: HeidiScalarCoupling [i1, ..., in]
|
|---|
| 107 | i1, ..., in : modes meeting at the vertex (n = 3 or n = 4)";
|
|---|
| 108 |
|
|---|
| 109 |
|
|---|
| 110 | Heidi`HeidiScalarWidth[i_] := Block[{calc},
|
|---|
| 111 | calc[{x_, j_, k_}] := Which[
|
|---|
| 112 | j == i, {x, j, k},
|
|---|
| 113 | (HeidiMass[i] < HeidiMass[j] + HeidiMass[k]) || (k > j), {x, j+1, 0},
|
|---|
| 114 | True, {
|
|---|
| 115 | Sqrt[
|
|---|
| 116 | (HeidiMass[i]^2 - (HeidiMass[j] + HeidiMass[k])^2) *
|
|---|
| 117 | (HeidiMass[i]^2 - (HeidiMass[j] - HeidiMass[k])^2)]
|
|---|
| 118 | /16/Pi/HeidiMass[i]^3 * Abs[HeidiScalarCoupling[i, j, k]]^2
|
|---|
| 119 | /If[j == k, 2, 1] + x, j, k+1}
|
|---|
| 120 | ];
|
|---|
| 121 | If[NumericQ[WidthCache[i]], WidthCache[i], WidthCache[i] = FixedPoint[calc, {0, 0, 0}][[1]]]
|
|---|
| 122 | ]/;(i >= 0);
|
|---|
| 123 |
|
|---|
| 124 | Heidi`HeidiScalarWidth::usage = "usage: HeidiScalarWidth [n]
|
|---|
| 125 | n : mode index";
|
|---|
| 126 |
|
|---|
| 127 |
|
|---|
| 128 | Heidi`HeidiSMWidth[i_] := Block[{},
|
|---|
| 129 | Hdecay[HeidiMass[i]] * HeidiWavefunction[i, 0]^2
|
|---|
| 130 | ]/;(i >= 0);
|
|---|
| 131 |
|
|---|
| 132 | Heidi`HeidiSMWidth::usage = "usage: HeidiSMWidth [n]
|
|---|
| 133 | n : mode index";
|
|---|
| 134 |
|
|---|
| 135 |
|
|---|
| 136 | Heidi`HeidiWidth[i_] := HeidiSMWidth[i] + HeidiScalarWidth[i];
|
|---|
| 137 |
|
|---|
| 138 | Heidi`HeidiWidth::usage = "usage: HeidiWidth [n]
|
|---|
| 139 | n : mode index";
|
|---|
| 140 |
|
|---|
| 141 | End[];
|
|---|
| 142 | Protect[InitHeidi, HeidiMass, HeidiWavefunction, HeidiScalarCoupling, HeidiScalarWidth,
|
|---|
| 143 | HeidiSMWidth, HeidiWidth];
|
|---|
| 144 | EndPackage[];
|
|---|