Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
CP6.cpp
Go to the documentation of this file.
1#include <iostream>
2
3using namespace csl;
4using namespace mty;
5using namespace std;
6using namespace sm_input;
7
8void defineLibPath(Library &lib) {
9#ifdef MARTY_LIBRARY_PATH
10 lib.addLPath(MARTY_LIBRARY_PATH);
11 lib.addLPath(MARTY_LIBRARY_PATH "/..");
12 lib.addLPath(MARTY_LIBRARY_PATH "/marty");
13 lib.addLPath(MARTY_LIBRARY_PATH "/marty/lha");
14#endif
15#ifdef MARTY_INCLUDE_PATH
16 lib.addIPath(MARTY_INCLUDE_PATH);
17#endif
18}
19
20vector<Wilson> getO6(const Model& model, const WilsonSet& wilsons, const std::string& up_quark) {
21 auto p = wilsons.kinematics.getOrderedMomenta();
22 auto b = model.getParticle("b");
23 auto s = model.getParticle("s");
24 auto q = model.getParticle(up_quark);
25 auto gamma = dirac4.gamma;
26 auto gamma5 = dirac4.gamma_chir;
27 auto i = model.generateIndices(4, "C", s);
28 auto A = model.generateIndex("C", "G");
29 auto al = DiracIndices(9);
30 auto mu = MinkowskiIndices(3);
31 auto T = model.getGenerator("C", "b");
32
33 Expr O6_vv = GetComplexConjugate(s({i[0], al[0]}, p[1])) * gamma({+mu[0], al[0], al[1]}) * gamma({+mu[1], al[1], al[2]}) * gamma({+mu[2], al[2], al[3]}) * T({A, i[0], i[1]}) * b({i[1], al[3]}, p[0]) *
34 GetComplexConjugate(q({i[2], al[4]}, p[2])) * gamma({mu[0], al[4], al[5]}) * gamma({mu[1], al[5], al[6]}) * gamma({mu[2], al[6], al[7]}) * T({A, i[2], i[3]}) * q({i[3], al[7]}, p[3]);
35 Expr O6_av = GetComplexConjugate(s({i[0], al[0]}, p[1])) * gamma({+mu[0], al[0], al[1]}) * gamma({+mu[1], al[1], al[2]}) * gamma({+mu[2], al[2], al[3]}) * gamma5({al[3], al[8]}) * T({A, i[0], i[1]}) * b({i[1], al[3]}, p[0]) *
36 GetComplexConjugate(q({i[2], al[4]}, p[2])) * gamma({mu[0], al[4], al[5]}) * gamma({mu[1], al[5], al[6]}) * gamma({mu[2], al[6], al[7]}) * T({A, i[2], i[3]}) * q({i[3], al[7]}, p[3]);
37
38 return {{WilsonCoefficient(CSL_HALF), WilsonOperator(O6_vv)}, {WilsonCoefficient(CSL_HALF), WilsonOperator(O6_av)}};
39}
40
41int calculate_C6(Model &model, gauge::Type gauge) {
42
43 model.getParticle("W")->setGaugeChoice(gauge);
44 model.getParticle("Z")->setGaugeChoice(gauge);
45
46 undefineNumericalValues(); // Allow for HIso to set all the parameters' values
47 mty::option::excludeExternalLegsCorrections = true;
48
49 Expr factorOperator = -4 * GetComplexConjugate(V_ts) * V_tb * G_F / csl::sqrt_s(2);
50 FeynOptions opts;
51 opts.setFermionOrder({1, 0, 2, 3});
52 opts.setWilsonOperatorCoefficient(factorOperator);
53
54 auto wil_u = model.computeWilsonCoefficients(mty::Order::TreeLevel,
55 {Incoming("b"), Outgoing("s"),
56 Outgoing("u"), Outgoing(AntiPart("u"))},
57 opts);
58
59 auto O6_u = getO6(model, wil_u, "u");
60 Expr C6_u = getWilsonCoefficient(wil_u, O6_u);
61 Replace(C6_u, e_em, sqrt_s(8 * G_F / sqrt_s(2)) * M_W * sin_s(theta_W));
62
63 auto wil_c = model.computeWilsonCoefficients(mty::Order::TreeLevel,
64 {Incoming("b"), Outgoing("s"),
65 Outgoing("c"), Outgoing(AntiPart("c"))},
66 opts);
67
68 auto O6_c = getO6(model, wil_c, "c");
69 Expr C6_c = getWilsonCoefficient(wil_c, O6_c);
70 Replace(C6_c, e_em, sqrt_s(8 * G_F / sqrt_s(2)) * M_W * sin_s(theta_W));
71
72 [[maybe_unused]] int sysres = system("rm -rf libs/CP6_SM");
73 mty::Library wilsonLib("CP6_SM", "libs");
74 wilsonLib.cleanExistingSources();
75 wilsonLib.addFunction("CP6", C6_u + C6_c);
76 defineLibPath(wilsonLib);
77 wilsonLib.print();
78
79 return 0;
80}
81
82int main() {
83 SM_Model sm;
84 return calculate_C6(sm, gauge::Type::Feynman);
85}
vector< Wilson > getO6(const Model &model, const WilsonSet &wilsons, const std::string &up_quark)
Definition CP6.cpp:20
int calculate_C6(Model &model, gauge::Type gauge)
Definition CP6.cpp:41
void defineLibPath(Library &lib)
Definition CP6.cpp:8
int main()
Definition CP6.cpp:82
Model
Abstract base class representing a Wilson coefficient and its matching information.
Definition Wilson.h:153
Standard Model of particle physics.
Definition sm.h:35
csl::Expr e_em
Definition sm.h:78
csl::Expr G_F
Definition sm.h:84
csl::Expr theta_W
Definition sm.h:136
void undefineNumericalValues()
csl::Expr V_tb
Definition sm.h:244
csl::Expr V_ts
Definition sm.h:306
csl::Expr M_W
Definition sm.h:106
Definition sm.h:30
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353
double T(double x)
Wilson coefficient T(x).