23 #ifndef _2HDM_H_INCLUDED 24 #define _2HDM_H_INCLUDED 38 static constexpr
int u = 1;
39 static constexpr
int d = 1;
40 static constexpr
int e = 1;
44 static constexpr
int u = 1;
45 static constexpr
int d = -1;
46 static constexpr
int e = -1;
50 static constexpr
int u = 1;
51 static constexpr
int d = -1;
52 static constexpr
int e = 1;
56 static constexpr
int u = 1;
57 static constexpr
int d = 1;
58 static constexpr
int e = -1;
61 std::pair<csl::Expr, csl::Expr> Z2_coef(
86 getParticle(
"g")->setDrawType(drawer::ParticleType::Gluon);
87 csl::Expr m11 = csl::constant_s(
"m_{11}");
88 csl::Expr m12 = csl::constant_s(
"m_{12}");
89 csl::Expr m22 = csl::constant_s(
"m_{22}");
90 csl::Expr lambda1 = csl::constant_s(
"\\lambda _1");
91 csl::Expr lambda2 = csl::constant_s(
"\\lambda _2");
92 csl::Expr lambda3 = csl::constant_s(
"\\lambda _3");
93 csl::Expr lambda4 = csl::constant_s(
"\\lambda _4");
94 csl::Expr lambda5 = csl::constant_s(
"\\lambda _5");
96 Particle Phi1 = GetParticle(*
this,
"\\Phi _1");
97 Particle Phi2 = GetParticle(*
this,
"\\Phi _2");
102 csl::Expr s11 = csl::GetComplexConjugate(Phi1(i)) * Phi1(i);
103 csl::Expr s12 = csl::GetComplexConjugate(Phi1(i)) * Phi2(i);
104 csl::Expr s21 = csl::GetComplexConjugate(Phi2(j)) * Phi1(j);
105 csl::Expr s22 = csl::GetComplexConjugate(Phi2(j)) * Phi2(j);
109 csl::Expr term_m12 = m12*m12 * (s12 + s21);
111 csl::Expr term_l1 = -lambda1 / 2 * csl::pow_s(s11, 2);
112 csl::Expr term_l2 = -lambda2 / 2 * csl::pow_s(s22, 2);
113 csl::Expr term_l3 = -lambda3 * s11 * s22;
114 csl::Expr term_l4 = -lambda4 * s12 * s21;
115 csl::Expr term_l5 = -lambda5 / 2 * (csl::pow_s(s12, 2) + csl::pow_s(s21, 2));
117 AddTerm(*
this, {term_m11, term_m12, term_m22,
118 term_l1, term_l2, term_l3, term_l4, term_l5});
124 BreakGaugeSymmetry(*
this,
"U1Y");
128 {
"\\Phi _1",
"\\Phi _2",
"W",
"Q",
"L"},
129 {{
"\\Phi _{10}",
"\\Phi _{11}"},
130 {
"\\Phi _{20}",
"\\Phi _{21}"},
131 {
"W^1",
"W^2",
"W^3"},
133 {
"\\Nu _L",
"E_L"}});
139 Particle W1 = GetParticle(*
this,
"W^1");
140 Particle W2 = GetParticle(*
this,
"W^2");
141 Particle W_SM = GenerateSimilarParticle(
"W", W1);
142 SetSelfConjugate(W_SM,
false);
147 csl::Expr W_m = csl::GetComplexConjugate(W_SM(+mu));
149 csl::Expr F_W_m = csl::GetComplexConjugate(W_SM({+
mu, +nu}));
153 (W_p + W_m) / csl::sqrt_s(2));
156 CSL_I * (W_p - W_m) / csl::sqrt_s(2));
158 GetFieldStrength(W1),
159 (F_W_p + F_W_m) / csl::sqrt_s(2));
161 GetFieldStrength(W2),
162 CSL_I * (F_W_p - F_W_m) / csl::sqrt_s(2));
174 Particle Phi_10 = GetParticle(*
this,
"\\Phi _{10}");
175 Particle Phi_11 = GetParticle(*
this,
"\\Phi _{11}");
176 Particle Phi_20 = GetParticle(*
this,
"\\Phi _{20}");
177 Particle Phi_21 = GetParticle(*
this,
"\\Phi _{21}");
185 SetSelfConjugate(rho_1,
true);
186 SetSelfConjugate(rho_2,
true);
187 SetSelfConjugate(eta_1,
true);
188 SetSelfConjugate(eta_2,
true);
195 (rho_1() + CSL_I*eta_1() + v1)/csl::sqrt_s(2));
202 (rho_2() + CSL_I*eta_2() + v2)/csl::sqrt_s(2));
206 - CSL_HALF*lambda1*v1*v1 + v2/v1*m12*m12
207 - v2*v2/2*lambda3 - v2*v2/2*lambda4 - v2*v2/2*lambda5);
211 - CSL_HALF*lambda2*v2*v2 + v1/v2*m12*m12
212 - v1*v1/2*lambda3 - v1*v1/2*lambda4 - v1*v1/2*lambda5);
220 SetSelfConjugate(h,
true);
221 SetSelfConjugate(H,
true);
226 {{-csl::sin_s(alpha), csl::cos_s(alpha)},
227 {csl::cos_s(alpha), csl::sin_s(alpha)}},
230 DiagonalizeMassMatrices(*
this);
231 Rename(*
this,
"B",
"A");
232 Rename(*
this,
"W^3",
"Z");
233 Rename(*
this,
"\\phi _1^+",
"G^+");
234 Rename(*
this,
"\\phi _2^+",
"H^+");
235 Rename(*
this,
"\\eta _1",
"G^0");
236 Rename(*
this,
"\\eta _2",
"A^0");
240 csl::Expr theta_Weinberg = csl::constant_s(
"theta_W");
245 csl::pow_s(gL/csl::cos_s(theta_Weinberg), csl::int_s(2)));
248 e / csl::cos_s(theta_Weinberg));
251 e / csl::sin_s(theta_Weinberg));
266 for (
int i = 0; i != 3; ++i)
267 for (
int j= 0; j != 3; ++j)
269 Ye2_tensor->setArgument(CSL_0, {i, j});
272 csl::Expr m_mu = csl::constant_s(
"m_\\mu");
273 csl::Expr m_tau = csl::constant_s(
"m_\\tau");
281 const csl::Space* flavorSpace = GetSpace(Ye1);
284 {flavorSpace, flavorSpace},
285 csl::matrix_s({{m_e, CSL_0, CSL_0},
286 {CSL_0, m_mu, CSL_0},
287 {CSL_0, CSL_0, m_tau}}));
291 {flavorSpace, flavorSpace},
292 csl::matrix_s({{m_u, CSL_0, CSL_0},
294 {CSL_0, CSL_0, m_t}}));
298 {flavorSpace, flavorSpace},
299 csl::matrix_s({{m_d, CSL_0, CSL_0},
301 {CSL_0, CSL_0, m_b}}));
314 buildCKM(flavorSpace);
321 e_coefs.first * Ye1({f_i, f_j}));
324 e_coefs.second * Ye1({f_i, f_j}));
327 u_coefs.first * Yu1({f_i, f_j}));
330 u_coefs.second * Yu1({f_i, f_j}));
333 d_coefs.first * Yd1({f_i, f_j}));
336 d_coefs.second * Yd1({f_i, f_j}));
343 e_mass_coef * M_e({f_i, f_j}));
346 u_mass_coef * M_u({f_i, f_j}));
349 d_mass_coef * csl::prod_s({V_CKM({f_i, f_k}),
351 GetHermitianConjugate(V_CKM({f_l, f_j}),
361 V_CKM({f_j, f_k}) * D_L({f_k, A, a1}));
364 V_CKM({f_i, f_j}) * D_R({f_j, A, a1}));
366 1 + csl::pow_s(tan_beta, -2),
374 BreakFlavorSymmetry(*
this,
376 {
"U_L",
"U_R",
"D_L",
"D_R",
"E_L",
"E_R",
"\\Nu _L"},
377 {{
"u_L",
"c_L",
"t_L"},
378 {
"u_R",
"c_R",
"t_R"},
379 {
"d_L",
"s_L",
"b_L"},
380 {
"d_R",
"s_R",
"b_R"},
381 {
"e_L",
"mu_L;\\mu_L",
"tau_L;\\tau_L"},
382 {
"e_R",
"mu_R;\\mu_R",
"tau_R;\\tau_R"},
383 {
"nue;\\nu_{eL}",
"num;\\nu_{\\mu L}",
"nut;\\nu_{\\tau L}"}});
386 getParticle(
"W")->getMass(),
388 getParticle(
"W")->setMass(sm_input::M_W);
390 getParticle(
"Z")->getMass(),
392 getParticle(
"Z")->setMass(sm_input::M_Z);
393 PromoteGoldstone(*
this,
"G^+",
"W");
394 PromoteGoldstone(*
this,
"G^0",
"Z");
400 tan_beta + 1/tan_beta,
401 (1 + tan_beta*tan_beta) / tan_beta
405 v / csl::sqrt_s(1 + tan_beta*tan_beta)
409 (2 * sm_input::M_W * csl::sin_s(theta_Weinberg)) / e
412 1 / (1 + tan_beta*tan_beta) + tan_beta*tan_beta / (1 + tan_beta*tan_beta),
431 return out << *static_cast<Model const*>(&model);
void Replaced(mty::Model &model, csl::Expr const &init, csl::Expr const &target)
Replaces an expression in all kinetic / mass / interactions terms of a model.
Definition: mrtInterface.cpp:499
Particle scalarboson_s(Args &&...args)
Delegates the construction of a Scalar boson and returns the result.
Definition: scalarField.h:204
csl::Tensor Delta(const csl::Space *space)
Returns the Kronecker delta of a given vector space.
Definition: mrtInterface.cpp:116
csl::Index DiracIndex(std::string const &name="")
Returns a csl::Index in the 4-dimensional Dirac space mty::dirac4.
Definition: mrtInterface.cpp:44
std::ostream & operator<<(std::ostream &fout, csl::Type type)
This class inherits from std::shared_ptr<QuantumFieldParent> and should be used instead of direct Qua...
Definition: quantumField.h:1409
Namespace of MARTY.
Definition: 2HDM.h:31
Contains the mty::Model class. It contains all objects in the theory. In particular QuantumField obje...
csl::Index GaugeIndex(std::string const &nameIndex, mty::Model const &model, GroupType &&group, FieldType &&part)
Returns a csl::Index living in the representation of a certain field in a certain group...
Definition: mrtInterface.h:166
Contains interface functions for the user.
csl::Index MinkowskiIndex(std::string const &name="")
Returns a csl::Index in csl::Minkowki space.
Definition: mrtInterface.cpp:37
File containing the Standard Model itself as a mty::Model object.
void Rotate(mty::Model &model, std::vector< mty::Particle > const &fields, std::vector< mty::Particle > const &newFields, std::vector< std::vector< csl::Expr >> const &rotation, bool diagonalizeMasses=false)
Rotates a bunch of fields to another using a given matrix.
Definition: mrtInterface.cpp:527
Contains all objects in the theory. In particular QuantumField objects, Gauge, Flavor, Particle...
Definition: model.h:68
Definition: gaugedGroup.h:97