Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
ZPrime.h
Go to the documentation of this file.
1#include "marty.h"
2#include <marty/models/sm.h>
3#include <vector>
4
5using namespace mty::sm_input;
6using namespace csl;
7using namespace std;
8
9namespace mty {
10
12
13 public:
14 ZPrime_Model(bool initialize = true);
15
16 void init();
17
18 void initGauge();
19 void initContent();
20 void initHiggsPotential();
21 void initFermions();
22 void initYukawas();
25 void HiggsVEVExpansion();
28 void adjust();
29
30 friend std::ostream &operator<<(std::ostream &out,
31 ZPrime_Model const &model);
32
33 protected:
34 csl::Expr m_X;
35 csl::Expr vphi;
36 //mixing constant cam
37 csl::Expr lambda_mix;
38};
39
40ZPrime_Model::ZPrime_Model(bool initialize) : SM_Model(false)
41{
42 if (initialize) {
43 init();
44 refresh();
45 }
46}
47
49{
50 Particle H = scalarboson_s("H", *this);
51 H->setGroupRep("L", 1);
52 H->setGroupRep("Y", {1, 2});
53 addParticle(H);
54
55 csl::Index a = generateIndex("L", H);
56 //csl::Index dirac_i = DiracIndex();
57 //csl::Index f1 = FlavorIndex(*this, "f");
58 //csl::Index mu = MinkowskiIndex();
59
60 csl::Expr mh = sm_input::m_h;
61 csl::Expr H2 = csl::GetComplexConjugate(H(a)) * H(a);
62 csl::Expr m2 = mh * mh / 2;
63 csl::Expr lam = mh * mh / (2 * v * v);
64
65 // Mexican hat potential
66 // addLagrangianTerm(m2 / (2 * v * v) * pow_s(H2 - v * v / 2, 2)); Same as below
67 addLagrangianTerm(m2 * H2);
68 addLagrangianTerm(-lam * csl::pow_s(H2, 2));
69 // later on: m = m_h / sqrt(2)
70 // lam = mh^2 / (2*v^2)
71 // (With H0 -> (v + h0) / sqrt(2))
72
73 Particle Phi = scalarboson_s("Phi", *this);
74 // Phi->setGroupRep("L", 1);
75 Phi->setGroupRep("X", 2);
76 addParticle(Phi);
77
78 m_X = constant_s("m_X");
79 vphi = constant_s("v_phi");
80 csl::Expr mphi = m_X;
81 csl::Expr Phi2 = csl::GetComplexConjugate(Phi()) * Phi();
82 csl::Expr lamphi = mphi * mphi / (2 * vphi * vphi);
83 // Mexican hat potential
84 //why isn't there a lamphi in the first added term? cam
85 addLagrangianTerm(mphi * mphi * Phi2);
86 addLagrangianTerm(-lamphi * csl::pow_s(Phi2, 2));
87
88 // Mixing terms cam
89 lambda_mix = constant_s("lambda_mix");
90 addLagrangianTerm(lambda_mix * H2 *Phi2);
91 addLagrangianTerm(lambda_mix * H2 * mphi * mphi);
92 addLagrangianTerm(lambda_mix * mphi * mphi *Phi2);
93}
94
100
112
120
121
123{
124 addGaugedGroup(group::Type::SU, "C", 3, g_s);
125 addGaugedGroup(group::Type::SU, "L", 2, csl::constant_s("g_L"));
126 addGaugedGroup(group::Type::U1, "Y", csl::constant_s("g_Y"));
127 addGaugedGroup(group::Type::U1, "X", csl::constant_s("g_X"));
128 addFlavorGroup("SM_flavor", 3);
129 Model::init();
130 renameParticle("A_Y", "B");
131 renameParticle("A_L", "W");
132 renameParticle("A_C", "G");
133 renameParticle("A_X", "B_X");
134 getParticle("G")->setDrawType(drawer::ParticleType::Gluon);
135}
136
138{
139 Particle Q = weylfermion_s("Q", *this, Chirality::Left);
140 Q->setGroupRep("C", {1, 0});
141 Q->setGroupRep("L", 1);
142 Q->setGroupRep("Y", {1, 6});
143 Q->setGroupRep("X", {1,3});
144 Q->setFundamentalFlavorRep("SM_flavor");
145
146 Particle U = weylfermion_s("U_R", *this, Chirality::Right);
147 U->setGroupRep("C", {1, 0});
148 U->setGroupRep("Y", {2, 3});
149 U->setGroupRep("X", {1,3});
150 U->setFundamentalFlavorRep("SM_flavor");
151
152 Particle D = weylfermion_s("D_R", *this, Chirality::Right);
153 D->setGroupRep("C", {1, 0});
154 D->setGroupRep("Y", {-1, 3});
155 D->setGroupRep("X", {1,3});
156 D->setFundamentalFlavorRep("SM_flavor");
157
158 Particle L = weylfermion_s("L", *this, Chirality::Left);
159 L->setGroupRep("L", 1);
160 L->setGroupRep("Y", {-1, 2});
161 L->setGroupRep("X", -1);
162 L->setFundamentalFlavorRep("SM_flavor");
163
164 Particle E = weylfermion_s("E_R", *this, Chirality::Right);
165 E->setGroupRep("Y", -1);
166 E->setGroupRep("X", -1);
167 E->setFundamentalFlavorRep("SM_flavor");
168
169 Particle N = weylfermion_s("nu_R", *this, Chirality::Right);
170 N->setGroupRep("X", -1);
171 // Q->setGroupRep("X", -1);
172 N->setFundamentalFlavorRep("SM_flavor");
173
174 addParticles({Q, U, D, L, E, N});
175}
176
178{
179 auto *flavorSpace = getVectorSpace("SM_flavor");
180 Tensor Yu("Yu", {flavorSpace, flavorSpace});
181 Yu->setComplexProperty(ComplexProperty::Complex);
182 Tensor Yd("Yd", {flavorSpace, flavorSpace});
183 Yd->setComplexProperty(ComplexProperty::Complex);
184 Tensor Ye("Ye", {flavorSpace, flavorSpace});
185 Ye->setComplexProperty(ComplexProperty::Complex);
186 Tensor Ynu("Ynu", {flavorSpace, flavorSpace});
187 Ynu->setComplexProperty(ComplexProperty::Complex);
188 Tensor Yx("Yx", {flavorSpace, flavorSpace});
189 Yx->setComplexProperty(ComplexProperty::Complex);
190 Tensor eps = getVectorSpace("L", "Q")->getEpsilon();
191 Index I = flavorSpace->generateIndex();
192 Index J = flavorSpace->generateIndex();
193 Index a = generateIndex("C", "Q");
194 Index i = generateIndex("L", "Q");
195 Index j = generateIndex("L", "Q");
196 Index al = DiracIndex();
197
198 Particle Q = getParticle("Q");
199 Particle U = getParticle("U_R");
200 Particle D = getParticle("D_R");
201 Particle L = getParticle("L");
202 Particle E = getParticle("E_R");
203 Particle N = getParticle("nu_R");
204 Particle H = getParticle("H");
205 Particle Phi = getParticle("Phi");
206
207 addLagrangianTerm(Yu({I, J}) * GetComplexConjugate(H(i)) * eps({i, j})
208 * GetComplexConjugate(Q({I, a, j, al}))
209 * U({J, a, al}),
210 true);
211 addLagrangianTerm(-Yd({I, J}) * H(i)
212 * GetComplexConjugate(Q({I, a, i, al}))
213 * D({J, a, al}),
214 true);
215 addLagrangianTerm(-Ye({I, J}) * H(i) * GetComplexConjugate(L({I, i, al}))
216 * E({J, al}),
217 true);
218
219 addLagrangianTerm(-Ynu({I, J}) * GetComplexConjugate(H(i)) * eps({i, j}) * GetComplexConjugate(L({I,j, al}))
220 * N({J, al}),
221 true);
222
223 // addLagrangianTerm(-Yx({I, J}) * Phi * GetComplexConjugate(N({I, al}))
224 // * N({J, al}),
225 // true);
226
227 addTensorCoupling(Ye);
228 addTensorCoupling(Yu);
229 addTensorCoupling(Yd);
230}
231
233{
235 // Actual gauge (spontaneous) symmetry breaking
237
238 csl::Expr v = sm_input::v;
239
240 Particle H1 = getParticle("H_1");
241 Particle H2 = getParticle("H_2");
242
243 Particle h0 = scalarboson_s("h", *this); // SM Higgs boson
244 Particle Gp = scalarboson_s("Gp ; G^+", *this);
245 Particle G0 = scalarboson_s("G0 ; G^0", *this);
246 h0->setSelfConjugate(true);
247 G0->setSelfConjugate(true);
248
249 replace(H1, Gp());
250 replace(H2, (h0() + CSL_I * G0() + v) / csl::sqrt_s(2));
251
252 Particle phi0 = scalarboson_s("phi", *this);
253 phi0->setSelfConjugate(true);
254
255 Particle Phi = getParticle("Phi");
256 replace(Phi, (vphi+phi0()) / csl::sqrt_s(2));
257}
258
260{
262 // Breaking gauge SU(2)_L symmetry, renaming
264
265 BreakGaugeSymmetry(*this, "Y");
266 BreakGaugeSymmetry(*this, "L");
267 BreakGaugeSymmetry(*this, "X");
268 renameParticle("Q_1", "U_L");
269 renameParticle("Q_2", "D_L");
270 renameParticle("L_1", "Nu_L");
271 renameParticle("L_2", "E_L");
272 renameParticle("B_X", "Z_X");
274 // Replacements to get SM particles W +-
276
277 Particle W1 = GetParticle(*this, "W_1");
278 Particle W2 = GetParticle(*this, "W_2");
279 Particle W_SM = W1->generateSimilar("W");
280 W_SM->setSelfConjugate(false);
281
282 Particle cW1 = getParticle("c_W_1");
283 Particle cW2 = getParticle("c_W_2");
284 Particle cWp = W_SM->getGhostBoson();
285 cWp->setName("c_Wp ; c_{+}");
286 Particle cWm = ghostboson_s("c_Wm; c_{-}", W_SM, true);
287 W_SM->setConjugatedGhostBoson(cWm);
288
289 csl::Index mu = MinkowskiIndex();
290 csl::Index nu = MinkowskiIndex();
291 csl::Expr W_p = W_SM(+mu);
292 csl::Expr W_m = csl::GetComplexConjugate(W_SM(+mu));
293 csl::Expr F_W_p = W_SM({+mu, +nu});
294 csl::Expr F_W_m = csl::GetComplexConjugate(W_SM({+mu, +nu}));
295
296 auto W1_expr = [](csl::Expr const &Wp, csl::Expr const &Wm) {
297 return (Wp + Wm) / csl::sqrt_s(2);
298 };
299 auto W2_expr = [](csl::Expr const &Wp, csl::Expr const &Wm) {
300 return CSL_I * (Wp - Wm) / csl::sqrt_s(2);
301 };
302 replace(W1, W1_expr(W_p, W_m));
303 replace(W2, W2_expr(W_p, W_m));
304 replace(W1->getFieldStrength(), W1_expr(F_W_p, F_W_m));
305 replace(W2->getFieldStrength(), W2_expr(F_W_p, F_W_m));
306 replace(cW1, W1_expr(cWp, cWm));
307 replace(cW2, W2_expr(cWp, cWm));
308}
309
311{
312 using namespace sm_input;
313 replace(v, (2 * M_W * csl::sin_s(theta_W)) / e_em);
314 replace(getParticle("W")->getMass(), M_W);
315 getParticle("W")->setMass(M_W);
316 replace(getParticle("Z")->getMass(), M_Z);
317 getParticle("Z")->setMass(M_Z);
318 promoteToGoldstone("Gp", "W");
319 promoteToGoldstone("G0", "Z");
320 replace(getParticle("Z_X")->getMass(), m_X);
321 getParticle("Z_X")->setMass(m_X);
323}
324
325std::ostream &operator<<(std::ostream &out, ZPrime_Model const &model)
326{
327 return out << *static_cast<Model const *>(&model);
328}
329
330}
Standard Model of particle physics.
Definition sm.h:35
void replaceUpYukawa()
void flavorSymmetryBreaking()
void diagonalizeSMMassMatrices()
void addGaugeFixingTerms()
void replaceDownYukawa()
void replaceLeptonYukawa()
void initYukawas()
Definition ZPrime.h:177
void getToLowEnergyLagrangian()
Definition ZPrime.h:101
void gaugeSymmetryBreaking()
Definition ZPrime.h:259
void flavorSymmetryBreaking()
void initContent()
Definition ZPrime.h:113
void initGauge()
Definition ZPrime.h:122
friend std::ostream & operator<<(std::ostream &out, ZPrime_Model const &model)
Definition ZPrime.h:325
void initFermions()
Definition ZPrime.h:137
void HiggsVEVExpansion()
Definition ZPrime.h:232
void initHiggsPotential()
Definition ZPrime.h:48
ZPrime_Model(bool initialize=true)
Definition ZPrime.h:40
csl::Expr lambda_mix
Definition ZPrime.h:37
csl::Expr m_X
Definition ZPrime.h:34
csl::Expr vphi
Definition ZPrime.h:35
constexpr std::complex< double > I
Definition constants.h:20
constexpr double E
Definition constants.h:13
std::pair< int, int > Index
Definition contour.h:15
Namespace containing SM input parameters, in particular those modifiable with LHA file.
Definition sm.h:68
csl::Expr e_em
Definition sm.h:78
csl::Expr M_Z
Definition sm.h:94
csl::Expr g_s
Definition sm.h:89
csl::Expr v
Definition sm.h:110
csl::Expr theta_W
Definition sm.h:136
csl::Expr M_W
Definition sm.h:106
csl::Expr m_h
Definition sm.h:108
Definition sm.h:30
std::ostream & operator<<(std::ostream &out, THDM_Model< t_type > const &model)
Definition thdm.h:477
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353
double H2(double x, double y)
Computes the two-variable function H2(x, y).