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");
16#ifdef MARTY_INCLUDE_PATH
17 lib.addIPath(MARTY_INCLUDE_PATH);
21vector<Wilson>
getO6(
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(4,
"C", s);
29 auto A = model.generateIndex(
"C",
"G");
30 auto al = DiracIndices(9);
31 auto mu = MinkowskiIndices(3);
32 auto T = model.getGenerator(
"C",
"b");
34 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]) *
35 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]);
36 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]) *
37 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]);
44 model.getParticle(
"W")->setGaugeChoice(gauge);
45 model.getParticle(
"Z")->setGaugeChoice(gauge);
48 mty::option::excludeExternalLegsCorrections =
true;
50 Expr factorOperator = -GetComplexConjugate(
V_ts) *
V_tb * pow_s(
e_em, 2)
51 / (2 * pow_s(sin_s(
theta_W), 2) * pow_s(
M_W, 2));
53 opts.setFermionOrder({1, 0, 2, 3});
54 opts.setWilsonOperatorCoefficient(factorOperator);
56 auto wil_u = model.computeWilsonCoefficients(mty::Order::TreeLevel,
57 {Incoming(
"b"), Outgoing(
"s"),
58 Outgoing(
"u"), Outgoing(AntiPart(
"u"))},
61 auto O6_u =
getO6(model, wil_u,
"u");
62 Expr C6_u = getWilsonCoefficient(wil_u, O6_u);
64 auto wil_c = model.computeWilsonCoefficients(mty::Order::TreeLevel,
65 {Incoming(
"b"), Outgoing(
"s"),
66 Outgoing(
"c"), Outgoing(AntiPart(
"c"))},
69 auto O6_c =
getO6(model, wil_c,
"c");
70 Expr C6_c = getWilsonCoefficient(wil_c, O6_c);
72 [[maybe_unused]]
int sysres = system(
"rm -rf libs/C6_SM");
73 mty::Library wilsonLib(
"C6_SM",
"libs");
74 wilsonLib.cleanExistingSources();
75 wilsonLib.addFunction(
"C6", C6_u + C6_c);