Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
C10.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
9// HYPERISO_MARTY_TEMPLATE_ABI: semileptonic-c10-tree-first-full-4f-v9
10
11void defineLibPath(Library &lib) {
12#ifdef MARTY_LIBRARY_PATH
13 lib.addLPath(MARTY_LIBRARY_PATH);
14 lib.addLPath(MARTY_LIBRARY_PATH "/..");
15 lib.addLPath(MARTY_LIBRARY_PATH "/marty");
16 lib.addLPath(MARTY_LIBRARY_PATH "/marty/lha");
17#endif
18#ifdef MARTY_INCLUDE_PATH
19 lib.addIPath(MARTY_INCLUDE_PATH);
20#endif
21}
22
24 // Keep the historical Hyperiso/SuperIso C10 normalization. In particular,
25 // do not use the EW-input factor introduced for the current-current and
26 // dipole templates: the MARTY C9/C10 examples normalize the full bsll
27 // four-fermion amplitude with this G_F convention before extracting the
28 // axial lepton coefficient.
29 return -4 * GetComplexConjugate(V_ts) * V_tb * G_F
30 * csl::pow_s(e_em / (4 * CSL_PI), 2) / csl::sqrt_s(2);
31}
32
33std::vector<Insertion> hyperiso_bsll_insertions() {
34 return {Incoming("b"), Outgoing("s"), Outgoing("mu"), Outgoing(AntiPart("mu"))};
35}
36
37int calculate_C10mu(Model &model, gauge::Type gauge) {
38
39 model.getParticle("W")->setGaugeChoice(gauge);
40 model.getParticle("Z")->setGaugeChoice(gauge);
41
43
44 // Important for C10: keep MARTY's external-leg corrections in the amplitude.
45 // The earlier decomposed template used excludeExternalLegsCorrections=true
46 // and then compensated boxes by hand. This template intentionally goes back
47 // to the full four-fermion extraction: no /3 projection factor, no
48 // C10_full - 2*C10_box sign surgery.
49 mty::option::excludeExternalLegsCorrections = false;
50
51 Expr factorOperator = hyperiso_c10_operator_factor();
52
53 FeynOptions opts;
54 opts.setFermionOrder({1, 0, 2, 3});
55 opts.setWilsonOperatorCoefficient(factorOperator);
56
57 auto insertions = hyperiso_bsll_insertions();
58
59 auto extract_C10 = [&](const WilsonSet& wil) {
60 return getWilsonCoefficient(
61 wil,
62 dimension6Operator(
63 model,
64 wil,
65 DiracCoupling::VL,
66 DiracCoupling::A
67 )
68 );
69 };
70
71 auto wil_tree = model.computeWilsonCoefficients(
72 mty::Order::TreeLevel,
73 insertions,
74 opts
75 );
76 Expr C10_tree = extract_C10(wil_tree);
77
78 // Tree-first policy: when the selected operator already has a non-zero
79 // tree-level coefficient (for example a Z' or leptoquark mediator), do not
80 // evaluate OneLoop at all. This avoids mixing loop corrections into a
81 // matching problem whose leading BSM contribution is tree level.
82 Expr C10_full = CSL_0;
83 if (C10_tree == CSL_0) {
84 auto wil_full = model.computeWilsonCoefficients(
85 mty::Order::OneLoop,
86 insertions,
87 opts
88 );
89 C10_full = extract_C10(wil_full);
90 }
91
92 Expr C10_mu = (C10_tree != CSL_0) ? C10_tree : C10_full;
93 std::cout << "[MARTY C10] selected order="
94 << ((C10_tree != CSL_0) ? "TreeLevel" : "OneLoop")
95 << std::endl;
96
97 [[maybe_unused]] int sysres = system("rm -rf libs/C10_SM");
98
99 mty::Library wilsonLib("C10_SM", "libs");
100 wilsonLib.cleanExistingSources();
101 wilsonLib.addFunction("C10", C10_mu);
102 wilsonLib.addFunction("C10_tree", C10_tree);
103 wilsonLib.addFunction("C10_full", C10_full);
104 wilsonLib.addFunction("C10_oneloop_full", C10_full);
105 defineLibPath(wilsonLib);
106 wilsonLib.print();
107
108 return 0;
109}
110
111int main() {
112 SM_Model sm;
113 return calculate_C10mu(sm, gauge::Type::Feynman);
114}
std::vector< Insertion > hyperiso_bsll_insertions()
Definition C10.cpp:33
Expr hyperiso_c10_operator_factor()
Definition C10.cpp:23
int calculate_C10mu(Model &model, gauge::Type gauge)
Definition C10.cpp:37
void defineLibPath(Library &lib)
Definition C10.cpp:11
int main()
Definition C10.cpp:111
Model
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
void undefineNumericalValues()
csl::Expr V_tb
Definition sm.h:244
csl::Expr V_ts
Definition sm.h:306
Definition sm.h:30
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353