Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
C5.cpp
Go to the documentation of this file.
1#include <iostream>
2
3// HYPERISO_MARTY_OPERATOR_NORM_ABI: ew-input-normalization-v1
4using namespace csl;
5using namespace mty;
6using namespace std;
7using namespace sm_input;
8
9void defineLibPath(Library &lib) {
10#ifdef MARTY_LIBRARY_PATH
11 lib.addLPath(MARTY_LIBRARY_PATH);
12 lib.addLPath(MARTY_LIBRARY_PATH "/..");
13 lib.addLPath(MARTY_LIBRARY_PATH "/marty");
14 lib.addLPath(MARTY_LIBRARY_PATH "/marty/lha");
15#endif
16#ifdef MARTY_INCLUDE_PATH
17 lib.addIPath(MARTY_INCLUDE_PATH);
18#endif
19}
20
21vector<Wilson> getO5(const Model& model, const WilsonSet& wilsons, const std::string& up_quark) {
22 auto p = wilsons.kinematics.getOrderedMomenta();
23 auto b = model.getParticle("b");
24 auto s = model.getParticle("s");
25 auto q = model.getParticle(up_quark);
26 auto gamma = dirac4.gamma;
27 auto gamma5 = dirac4.gamma_chir;
28 auto i = model.generateIndices(2, "C", s);
29 auto al = DiracIndices(9);
30 auto mu = MinkowskiIndices(3);
31
32 Expr O5_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]}) * b({i[0], al[3]}, p[0]) *
33 GetComplexConjugate(q({i[1], 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]}) * q({i[1], al[7]}, p[3]);
34 Expr O5_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]}) * b({i[0], al[8]}, p[0]) *
35 GetComplexConjugate(q({i[1], 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]}) * q({i[1], al[7]}, p[3]);
36
37 return {{WilsonCoefficient(CSL_HALF), WilsonOperator(O5_vv)}, {WilsonCoefficient(-CSL_HALF), WilsonOperator(O5_av)}};
38}
39
40int calculate_C5(Model &model, gauge::Type gauge) {
41
42 model.getParticle("W")->setGaugeChoice(gauge);
43 model.getParticle("Z")->setGaugeChoice(gauge);
44
45 undefineNumericalValues(); // Allow for HIso to set all the parameters' values
46 mty::option::excludeExternalLegsCorrections = true;
47
48 Expr factorOperator = -GetComplexConjugate(V_ts) * V_tb * pow_s(e_em, 2)
49 / (2 * pow_s(sin_s(theta_W), 2) * pow_s(M_W, 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 O5_u = getO5(model, wil_u, "u");
60 Expr C5_u = getWilsonCoefficient(wil_u, O5_u);
61
62 auto wil_c = model.computeWilsonCoefficients(mty::Order::TreeLevel,
63 {Incoming("b"), Outgoing("s"),
64 Outgoing("c"), Outgoing(AntiPart("c"))},
65 opts);
66
67 auto O5_c = getO5(model, wil_c, "c");
68 Expr C5_c = getWilsonCoefficient(wil_c, O5_c);
69
70 [[maybe_unused]] int sysres = system("rm -rf libs/C5_SM");
71 mty::Library wilsonLib("C5_SM", "libs");
72 wilsonLib.cleanExistingSources();
73 wilsonLib.addFunction("C5", C5_u + C5_c);
74 defineLibPath(wilsonLib);
75 wilsonLib.print();
76
77 return 0;
78}
79
80int main() {
81 SM_Model sm;
82 return calculate_C5(sm, gauge::Type::Feynman);
83}
int calculate_C5(Model &model, gauge::Type gauge)
Definition C5.cpp:40
vector< Wilson > getO5(const Model &model, const WilsonSet &wilsons, const std::string &up_quark)
Definition C5.cpp:21
void defineLibPath(Library &lib)
Definition C5.cpp:9
int main()
Definition C5.cpp:80
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 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