Hyperiso 1.0.3
Modular flavour-physics calculations, Wilson coefficients and statistical inference
Loading...
Searching...
No Matches
main_camilia.cpp
Go to the documentation of this file.
1#include <algorithm>
2#include <chrono>
3#include <cmath>
4#include <cstdlib>
5#include <fstream>
6#include <iomanip>
7#include <iostream>
8#include <limits>
9#include <map>
10#include <set>
11#include <stdexcept>
12#include <string>
13#include <tuple>
14#include <utility>
15#include <vector>
16
17#include "Include.h"
18#include "Logger.h"
19#include "ObservableInterface.h"
20#include "HyperisoMaster.h"
21#include "config.hpp"
23
24/*
25 * Diagnostic HyperIso pour les 230 observables de test_contour_BKstarmumu / myobs.in.
26 *
27 * Usage:
28 * ./hyperiso_allobs_compare.x [out.csv] [lha_path] [dC7] [dC8] [dC9] [dC10]
29 *
30 * Exemple:
31 * ./hyperiso_allobs_compare.x hyperiso_allobs_SM.csv lha/si_input.flha 0 0 0 0
32 *
33 * Les noms si_name sont exactement les noms SuperIso. Le CSV peut donc ĂȘtre mergĂ©
34 * directement avec la sortie de superiso_allobs_compare.c via compare_allobs.py.
35 */
36
38 std::string name;
39 std::chrono::steady_clock::time_point t0;
40 explicit ScopedTimer(std::string n) : name(std::move(n)), t0(std::chrono::steady_clock::now()) {}
42 auto t1 = std::chrono::steady_clock::now();
43 const double ms = std::chrono::duration<double, std::milli>(t1 - t0).count();
44 std::cerr << "[TIMER] " << name << " : " << ms << " ms\n";
45 }
46};
47
48namespace {
49
50struct Row {
51 int idx;
52 std::string si_name;
53 std::string experiment;
54 Observables hyp_obs;
55 std::string hyp_enum;
56 bool binned;
57 double q2min;
58 double q2max;
59};
60
61std::string csv_escape(const std::string& s) {
62 std::string out = "\"";
63 for (char c : s) {
64 if (c == '"') out += "\"\"";
65 else out += c;
66 }
67 out += "\"";
68 return out;
69}
70
71void write_num(std::ofstream& out, double x) {
72 if (std::isfinite(x)) out << std::setprecision(17) << x;
73 else out << "nan";
74}
75
76bool same_bin(double a, double b) {
77 const double scale = std::max({1.0, std::abs(a), std::abs(b)});
78 return std::abs(a - b) <= 1e-10 * scale;
79}
80
81BinnedObservableId make_id(const Row& r) {
82 if (r.binned) return BinnedObservableId{ObservableMapper::to_id(r.hyp_obs), {r.q2min, r.q2max}};
84}
85
86double find_value(const std::map<ObservableId, std::vector<ObservableValue>>& all,
87 const Row& r) {
88 const auto id = make_id(r);
89 auto it = all.find(id.s);
90 if (it == all.end()) {
91 throw std::runtime_error("observable absente de compute_all(): " + r.hyp_enum);
92 }
93
94 for (const auto& v : it->second) {
95 if (!r.binned) {
96 if (!v.bin.has_value()) return v.value;
97 } else if (v.bin.has_value()
98 && same_bin(v.bin->first, r.q2min)
99 && same_bin(v.bin->second, r.q2max)) {
100 return v.value;
101 }
102 }
103
104 throw std::runtime_error("bin absent pour " + r.hyp_enum
105 + " [" + std::to_string(r.q2min)
106 + ", " + std::to_string(r.q2max) + "]");
107}
108
109void add_row(std::vector<Row>& rows,
110 int idx,
111 const std::string& si_name,
112 const std::string& experiment,
113 Observables obs,
114 const std::string& hyp_enum,
115 double q2min = std::numeric_limits<double>::quiet_NaN(),
116 double q2max = std::numeric_limits<double>::quiet_NaN()) {
117 const bool binned = std::isfinite(q2min) && std::isfinite(q2max);
118 rows.push_back(Row{idx, si_name, experiment, obs, hyp_enum, binned, q2min, q2max});
119}
120
121std::vector<Row> make_rows() {
122 using O = Observables;
123 std::vector<Row> rows;
124 rows.reserve(230);
125
126 add_row(rows, 1, "AI_BKstargamma", "DEFAULT", O::IA_B__KSTAR_GAMMA, "IA_B__KSTAR_GAMMA");
127 add_row(rows, 2, "BR_BXsgamma", "DEFAULT", O::BR_B_XS_GAMMA, "BR_B_XS_GAMMA");
128 add_row(rows, 3, "BRuntag_Bsmumu", "DEFAULT", O::BR_BS_MUMU_UNTAG, "BR_BS_MUMU_UNTAG");
129 add_row(rows, 4, "BRuntag_Bsee", "DEFAULT", O::BR_BS_EE_UNTAG, "BR_BS_EE_UNTAG");
130 add_row(rows, 5, "BR_BXsmumu_1_6", "DEFAULT", O::BR_B__Xs_mu_mu, "BR_B__Xs_mu_mu", 1, 6);
131 add_row(rows, 6, "BR_BXsmumu_14.2_22", "DEFAULT", O::BR_B__Xs_mu_mu, "BR_B__Xs_mu_mu", 14.2, 22);
132 add_row(rows, 7, "BR_BXsee_1_6", "DEFAULT", O::BR_B__Xs_e_e, "BR_B__Xs_e_e", 1, 6);
133 add_row(rows, 8, "BR_BXsee_14.2_22", "DEFAULT", O::BR_B__Xs_e_e, "BR_B__Xs_e_e", 14.2, 22);
134 add_row(rows, 9, "BR_B0Kstar0gamma", "DEFAULT", O::BR_B0__KSTAR0_GAMMA, "BR_B0__KSTAR0_GAMMA");
135 add_row(rows, 10, "BR_BKstargamma", "DEFAULT", O::BR_B__KSTAR_GAMMA, "BR_B__KSTAR_GAMMA");
136 add_row(rows, 11, "dGamma/dq2_BKstarmumu_1.1_6", "DEFAULT", O::DBR_DQ2_B__KSTAR_MU_MU, "DBR_DQ2_B__KSTAR_MU_MU", 1.1, 6);
137 add_row(rows, 12, "dGamma/dq2_BKstarmumu_15_19", "DEFAULT", O::DBR_DQ2_B__KSTAR_MU_MU, "DBR_DQ2_B__KSTAR_MU_MU", 15, 19);
138 add_row(rows, 13, "R-1_B0Kstar0ll_0.1_1.1", "DEFAULT", O::R_1_B0__KSTAR0_L_L, "R_1_B0__KSTAR0_L_L", 0.1, 1.1);
139 add_row(rows, 14, "R-1_B0Kstar0ll_1.1_6", "DEFAULT", O::R_1_B0__KSTAR0_L_L, "R_1_B0__KSTAR0_L_L", 1.1, 6);
140 add_row(rows, 15, "R-1_B0Kstar0ll_0.045_1.1_Belle", "Belle", O::R_1_B0__KSTAR0_L_L, "R_1_B0__KSTAR0_L_L", 0.045, 1.1);
141 add_row(rows, 16, "R-1_B0Kstar0ll_1.1_6_Belle", "Belle", O::R_1_B0__KSTAR0_L_L, "R_1_B0__KSTAR0_L_L", 1.1, 6);
142 add_row(rows, 17, "R-1_B0Kstar0ll_15_19_Belle", "Belle", O::R_1_B0__KSTAR0_L_L, "R_1_B0__KSTAR0_L_L", 15, 19);
143 add_row(rows, 18, "dGamma/dq2_B0K0mumu_1.1_6", "DEFAULT", O::DBR_DQ2_B0__K0_MU_MU, "DBR_DQ2_B0__K0_MU_MU", 1.1, 6);
144 add_row(rows, 19, "dGamma/dq2_B0K0mumu_15_22", "DEFAULT", O::DBR_DQ2_B0__K0_MU_MU, "DBR_DQ2_B0__K0_MU_MU", 15, 22);
145 add_row(rows, 20, "dGamma/dq2_BKmumu_1.1_6", "DEFAULT", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 1.1, 6);
146 add_row(rows, 21, "FH_BKmumu_1.1_6", "DEFAULT", O::F_H_B__K_MU_MU, "F_H_B__K_MU_MU", 1.1, 6);
147 add_row(rows, 22, "dGamma/dq2_BKmumu_15_22", "DEFAULT", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 15, 22);
148 add_row(rows, 23, "FH_BKmumu_15_22", "DEFAULT", O::F_H_B__K_MU_MU, "F_H_B__K_MU_MU", 15, 22);
149 add_row(rows, 24, "R-1_BKll_0.1_1.1", "DEFAULT", O::R_1_B__K_L_L, "R_1_B__K_L_L", 0.1, 1.1);
150 add_row(rows, 25, "R-1_BKll_1.1_6", "DEFAULT", O::R_1_B__K_L_L, "R_1_B__K_L_L", 1.1, 6);
151 add_row(rows, 26, "dGamma/dq2_Bsphimumu_0.1_0.98", "DEFAULT", O::DBR_DQ2_BS__PHI_MU_MU, "DBR_DQ2_BS__PHI_MU_MU", 0.1, 0.98);
152 add_row(rows, 27, "FL_Bsphimumu_0.1_0.98", "DEFAULT", O::F_L_BS_PHI_MU_MU, "F_L_BS_PHI_MU_MU", 0.1, 0.98);
153 add_row(rows, 28, "S3_Bsphimumu_0.1_0.98", "DEFAULT", O::S_3_BS_PHI_MU_MU, "S_3_BS_PHI_MU_MU", 0.1, 0.98);
154 add_row(rows, 29, "S4_Bsphimumu_0.1_0.98", "DEFAULT", O::S_4_BS_PHI_MU_MU, "S_4_BS_PHI_MU_MU", 0.1, 0.98);
155 add_row(rows, 30, "S7_Bsphimumu_0.1_0.98", "DEFAULT", O::S_7_BS_PHI_MU_MU, "S_7_BS_PHI_MU_MU", 0.1, 0.98);
156 add_row(rows, 31, "dGamma/dq2_Bsphimumu_1.1_2.5", "DEFAULT", O::DBR_DQ2_BS__PHI_MU_MU, "DBR_DQ2_BS__PHI_MU_MU", 1.1, 2.5);
157 add_row(rows, 32, "dGamma/dq2_Bsphimumu_2.5_4", "DEFAULT", O::DBR_DQ2_BS__PHI_MU_MU, "DBR_DQ2_BS__PHI_MU_MU", 2.5, 4);
158 add_row(rows, 33, "FL_Bsphimumu_1.1_4", "DEFAULT", O::F_L_BS_PHI_MU_MU, "F_L_BS_PHI_MU_MU", 1.1, 4);
159 add_row(rows, 34, "S3_Bsphimumu_1.1_4", "DEFAULT", O::S_3_BS_PHI_MU_MU, "S_3_BS_PHI_MU_MU", 1.1, 4);
160 add_row(rows, 35, "S4_Bsphimumu_1.1_4", "DEFAULT", O::S_4_BS_PHI_MU_MU, "S_4_BS_PHI_MU_MU", 1.1, 4);
161 add_row(rows, 36, "S7_Bsphimumu_1.1_4", "DEFAULT", O::S_7_BS_PHI_MU_MU, "S_7_BS_PHI_MU_MU", 1.1, 4);
162 add_row(rows, 37, "dGamma/dq2_Bsphimumu_4_6", "DEFAULT", O::DBR_DQ2_BS__PHI_MU_MU, "DBR_DQ2_BS__PHI_MU_MU", 4, 6);
163 add_row(rows, 38, "FL_Bsphimumu_4_6", "DEFAULT", O::F_L_BS_PHI_MU_MU, "F_L_BS_PHI_MU_MU", 4, 6);
164 add_row(rows, 39, "S3_Bsphimumu_4_6", "DEFAULT", O::S_3_BS_PHI_MU_MU, "S_3_BS_PHI_MU_MU", 4, 6);
165 add_row(rows, 40, "S4_Bsphimumu_4_6", "DEFAULT", O::S_4_BS_PHI_MU_MU, "S_4_BS_PHI_MU_MU", 4, 6);
166 add_row(rows, 41, "S7_Bsphimumu_4_6", "DEFAULT", O::S_7_BS_PHI_MU_MU, "S_7_BS_PHI_MU_MU", 4, 6);
167 add_row(rows, 42, "dGamma/dq2_Bsphimumu_15_19", "DEFAULT", O::DBR_DQ2_BS__PHI_MU_MU, "DBR_DQ2_BS__PHI_MU_MU", 15, 19);
168 add_row(rows, 43, "FL_Bsphimumu_15_18.9", "DEFAULT", O::F_L_BS_PHI_MU_MU, "F_L_BS_PHI_MU_MU", 15, 18.9);
169 add_row(rows, 44, "S3_Bsphimumu_15_18.9", "DEFAULT", O::S_3_BS_PHI_MU_MU, "S_3_BS_PHI_MU_MU", 15, 18.9);
170 add_row(rows, 45, "S4_Bsphimumu_15_18.9", "DEFAULT", O::S_4_BS_PHI_MU_MU, "S_4_BS_PHI_MU_MU", 15, 18.9);
171 add_row(rows, 46, "S7_Bsphimumu_15_18.9", "DEFAULT", O::S_7_BS_PHI_MU_MU, "S_7_BS_PHI_MU_MU", 15, 18.9);
172 add_row(rows, 47, "dGamma/dq2_LambdabLambdamumu_15_20", "DEFAULT", O::DBR_DQ2_LAMBDA_B__LAMBDA_MU_MU, "DBR_DQ2_LAMBDA_B__LAMBDA_MU_MU", 15, 20);
173 add_row(rows, 48, "AlFB_LambdabLambdamumu_15_20", "DEFAULT", O::A_FB_L_LAMBDA_B__LAMBDA_MU_MU, "A_FB_L_LAMBDA_B__LAMBDA_MU_MU", 15, 20);
174 add_row(rows, 49, "AhFB_LambdabLambdamumu_15_20", "DEFAULT", O::A_FB_H_LAMBDA_B__LAMBDA_MU_MU, "A_FB_H_LAMBDA_B__LAMBDA_MU_MU", 15, 20);
175 add_row(rows, 50, "AlhFB_LambdabLambdamumu_15_20", "DEFAULT", O::A_FB_LH_LAMBDA_B__LAMBDA_MU_MU, "A_FB_LH_LAMBDA_B__LAMBDA_MU_MU", 15, 20);
176 add_row(rows, 51, "FL_LambdabLambdamumu_15_20", "DEFAULT", O::F_L_LAMBDA_B__LAMBDA_MU_MU, "F_L_LAMBDA_B__LAMBDA_MU_MU", 15, 20);
177 add_row(rows, 52, "FL_BKstarmumu_0.1_0.98", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 0.1, 0.98);
178 add_row(rows, 53, "AFB_BKstarmumu_0.1_0.98", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 0.1, 0.98);
179 add_row(rows, 54, "S3_BKstarmumu_0.1_0.98", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 0.1, 0.98);
180 add_row(rows, 55, "S4_BKstarmumu_0.1_0.98", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 0.1, 0.98);
181 add_row(rows, 56, "S5_BKstarmumu_0.1_0.98", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 0.1, 0.98);
182 add_row(rows, 57, "S7_BKstarmumu_0.1_0.98", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 0.1, 0.98);
183 add_row(rows, 58, "S8_BKstarmumu_0.1_0.98", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 0.1, 0.98);
184 add_row(rows, 59, "S9_BKstarmumu_0.1_0.98", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 0.1, 0.98);
185 add_row(rows, 60, "FL_BKstarmumu_1.1_2.5", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 1.1, 2.5);
186 add_row(rows, 61, "AFB_BKstarmumu_1.1_2.5", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 1.1, 2.5);
187 add_row(rows, 62, "S3_BKstarmumu_1.1_2.5", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 1.1, 2.5);
188 add_row(rows, 63, "S4_BKstarmumu_1.1_2.5", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 1.1, 2.5);
189 add_row(rows, 64, "S5_BKstarmumu_1.1_2.5", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 1.1, 2.5);
190 add_row(rows, 65, "S7_BKstarmumu_1.1_2.5", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 1.1, 2.5);
191 add_row(rows, 66, "S8_BKstarmumu_1.1_2.5", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 1.1, 2.5);
192 add_row(rows, 67, "S9_BKstarmumu_1.1_2.5", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 1.1, 2.5);
193 add_row(rows, 68, "FL_BKstarmumu_2.5_4", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 2.5, 4);
194 add_row(rows, 69, "AFB_BKstarmumu_2.5_4", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 2.5, 4);
195 add_row(rows, 70, "S3_BKstarmumu_2.5_4", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 2.5, 4);
196 add_row(rows, 71, "S4_BKstarmumu_2.5_4", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 2.5, 4);
197 add_row(rows, 72, "S5_BKstarmumu_2.5_4", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 2.5, 4);
198 add_row(rows, 73, "S7_BKstarmumu_2.5_4", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 2.5, 4);
199 add_row(rows, 74, "S8_BKstarmumu_2.5_4", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 2.5, 4);
200 add_row(rows, 75, "S9_BKstarmumu_2.5_4", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 2.5, 4);
201 add_row(rows, 76, "FL_BKstarmumu_4_6", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 4, 6);
202 add_row(rows, 77, "AFB_BKstarmumu_4_6", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 4, 6);
203 add_row(rows, 78, "S3_BKstarmumu_4_6", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 4, 6);
204 add_row(rows, 79, "S4_BKstarmumu_4_6", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 4, 6);
205 add_row(rows, 80, "S5_BKstarmumu_4_6", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 4, 6);
206 add_row(rows, 81, "S7_BKstarmumu_4_6", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 4, 6);
207 add_row(rows, 82, "S8_BKstarmumu_4_6", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 4, 6);
208 add_row(rows, 83, "S9_BKstarmumu_4_6", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 4, 6);
209 add_row(rows, 84, "FL_BKstarmumu_15_17", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 15, 17);
210 add_row(rows, 85, "AFB_BKstarmumu_15_17", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 15, 17);
211 add_row(rows, 86, "S3_BKstarmumu_15_17", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 15, 17);
212 add_row(rows, 87, "S4_BKstarmumu_15_17", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 15, 17);
213 add_row(rows, 88, "S5_BKstarmumu_15_17", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 15, 17);
214 add_row(rows, 89, "S7_BKstarmumu_15_17", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 15, 17);
215 add_row(rows, 90, "S8_BKstarmumu_15_17", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 15, 17);
216 add_row(rows, 91, "S9_BKstarmumu_15_17", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 15, 17);
217 add_row(rows, 92, "FL_BKstarmumu_17_19", "DEFAULT", O::F_L_B__KSTAR_MU_MU, "F_L_B__KSTAR_MU_MU", 17, 19);
218 add_row(rows, 93, "AFB_BKstarmumu_17_19", "DEFAULT", O::A_FB_B__KSTAR_MU_MU, "A_FB_B__KSTAR_MU_MU", 17, 19);
219 add_row(rows, 94, "S3_BKstarmumu_17_19", "DEFAULT", O::S_3_B__KSTAR_MU_MU, "S_3_B__KSTAR_MU_MU", 17, 19);
220 add_row(rows, 95, "S4_BKstarmumu_17_19", "DEFAULT", O::S_4_B__KSTAR_MU_MU, "S_4_B__KSTAR_MU_MU", 17, 19);
221 add_row(rows, 96, "S5_BKstarmumu_17_19", "DEFAULT", O::S_5_B__KSTAR_MU_MU, "S_5_B__KSTAR_MU_MU", 17, 19);
222 add_row(rows, 97, "S7_BKstarmumu_17_19", "DEFAULT", O::S_7_B__KSTAR_MU_MU, "S_7_B__KSTAR_MU_MU", 17, 19);
223 add_row(rows, 98, "S8_BKstarmumu_17_19", "DEFAULT", O::S_8_B__KSTAR_MU_MU, "S_8_B__KSTAR_MU_MU", 17, 19);
224 add_row(rows, 99, "S9_BKstarmumu_17_19", "DEFAULT", O::S_9_B__KSTAR_MU_MU, "S_9_B__KSTAR_MU_MU", 17, 19);
225 add_row(rows, 100, "R-1_BKstarll_0.045_6", "DEFAULT", O::R_1_B__KSTAR_L_L, "R_1_B__KSTAR_L_L", 0.045, 6);
226 add_row(rows, 101, "R-1_B0K0ll_1.1_6", "DEFAULT", O::R_1_B0__K0_L_L, "R_1_B0__K0_L_L", 1.1, 6);
227 add_row(rows, 102, "R-1_BKll_1_6_Belle", "Belle", O::R_1_B__K_L_L, "R_1_B__K_L_L", 1, 6);
228 add_row(rows, 103, "FH_BKmumu_1_6_CMS", "CMS", O::F_H_B__K_MU_MU, "F_H_B__K_MU_MU", 1, 6);
229 add_row(rows, 104, "dGamma/dq2_B0Kstar0ee_0.0009_1", "DEFAULT", O::DBR_DQ2_B0__KSTAR0_E_E, "DBR_DQ2_B0__KSTAR0_E_E", 0.0009, 1);
230 add_row(rows, 105, "FL_B0Kstar0ee_0.0008_0.257", "DEFAULT", O::F_L_B0__KSTAR0_E_E, "F_L_B0__KSTAR0_E_E", 0.0008, 0.257);
231 add_row(rows, 106, "ATRe_B0Kstar0ee_0.0008_0.257", "DEFAULT", O::A_T_RE_B0__KSTAR0_E_E, "A_T_RE_B0__KSTAR0_E_E", 0.0008, 0.257);
232 add_row(rows, 107, "AT2_B0Kstar0ee_0.0008_0.257", "DEFAULT", O::A_T_2_B0__KSTAR0_E_E, "A_T_2_B0__KSTAR0_E_E", 0.0008, 0.257);
233 add_row(rows, 108, "dGamma/dq2_BKmumu_0.1_0.98_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 0.1, 0.98);
234 add_row(rows, 109, "dGamma/dq2_BKmumu_1.1_2_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 1.1, 2);
235 add_row(rows, 110, "dGamma/dq2_BKmumu_2_3_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 2, 3);
236 add_row(rows, 111, "dGamma/dq2_BKmumu_3_4_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 3, 4);
237 add_row(rows, 112, "dGamma/dq2_BKmumu_4_5_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 4, 5);
238 add_row(rows, 113, "dGamma/dq2_BKmumu_5_6_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 5, 6);
239 add_row(rows, 114, "dGamma/dq2_BKmumu_14.82_16_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 14.82, 16);
240 add_row(rows, 115, "dGamma/dq2_BKmumu_16_17_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 16, 17);
241 add_row(rows, 116, "dGamma/dq2_BKmumu_17_18_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 17, 18);
242 add_row(rows, 117, "dGamma/dq2_BKmumu_18_19.24_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 18, 19.24);
243 add_row(rows, 118, "dGamma/dq2_BKmumu_19.24_22.9_CMS", "CMS", O::DBR_DQ2_B__K_MU_MU, "DBR_DQ2_B__K_MU_MU", 19.24, 22.9);
244 add_row(rows, 119, "R-1_BKll_1.1_6_CMS", "CMS", O::R_1_B__K_L_L, "R_1_B__K_L_L", 1.1, 6);
245 add_row(rows, 120, "FL_B0Kstar0mumu_1.1_2_CMS", "CMS", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 1.1, 2);
246 add_row(rows, 121, "P1_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 1.1, 2);
247 add_row(rows, 122, "P2_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 1.1, 2);
248 add_row(rows, 123, "P3_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 1.1, 2);
249 add_row(rows, 124, "P4prime_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 1.1, 2);
250 add_row(rows, 125, "P5prime_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 1.1, 2);
251 add_row(rows, 126, "P6prime_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 1.1, 2);
252 add_row(rows, 127, "P8prime_B0Kstar0mumu_1.1_2_CMS", "CMS", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 1.1, 2);
253 add_row(rows, 128, "FL_B0Kstar0mumu_2_4.3_CMS", "CMS", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 2, 4.3);
254 add_row(rows, 129, "P1_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 2, 4.3);
255 add_row(rows, 130, "P2_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 2, 4.3);
256 add_row(rows, 131, "P3_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 2, 4.3);
257 add_row(rows, 132, "P4prime_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 2, 4.3);
258 add_row(rows, 133, "P5prime_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 2, 4.3);
259 add_row(rows, 134, "P6prime_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 2, 4.3);
260 add_row(rows, 135, "P8prime_B0Kstar0mumu_2_4.3_CMS", "CMS", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 2, 4.3);
261 add_row(rows, 136, "FL_B0Kstar0mumu_4.3_6_CMS", "CMS", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 4.3, 6);
262 add_row(rows, 137, "P1_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 4.3, 6);
263 add_row(rows, 138, "P2_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 4.3, 6);
264 add_row(rows, 139, "P3_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 4.3, 6);
265 add_row(rows, 140, "P4prime_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 4.3, 6);
266 add_row(rows, 141, "P5prime_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 4.3, 6);
267 add_row(rows, 142, "P6prime_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 4.3, 6);
268 add_row(rows, 143, "P8prime_B0Kstar0mumu_4.3_6_CMS", "CMS", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 4.3, 6);
269 add_row(rows, 144, "FL_B0Kstar0mumu_14.18_16_CMS", "CMS", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 14.18, 16);
270 add_row(rows, 145, "P1_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 14.18, 16);
271 add_row(rows, 146, "P2_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 14.18, 16);
272 add_row(rows, 147, "P3_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 14.18, 16);
273 add_row(rows, 148, "P4prime_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 14.18, 16);
274 add_row(rows, 149, "P5prime_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 14.18, 16);
275 add_row(rows, 150, "P6prime_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 14.18, 16);
276 add_row(rows, 151, "P8prime_B0Kstar0mumu_14.18_16_CMS", "CMS", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 14.18, 16);
277 add_row(rows, 152, "dGamma/dq2_Bsphiee_0.1_1.1", "DEFAULT", O::DBR_DQ2_BS__PHI_E_E, "DBR_DQ2_BS__PHI_E_E", 0.1, 1.1);
278 add_row(rows, 153, "dGamma/dq2_Bsphiee_1.1_6", "DEFAULT", O::DBR_DQ2_BS__PHI_E_E, "DBR_DQ2_BS__PHI_E_E", 1.1, 6);
279 add_row(rows, 154, "dGamma/dq2_Bsphiee_15_19", "DEFAULT", O::DBR_DQ2_BS__PHI_E_E, "DBR_DQ2_BS__PHI_E_E", 15, 19);
280 add_row(rows, 155, "R-1_Bsphill_0.1_1.1", "DEFAULT", O::R_1_BS__PHI_L_L, "R_1_BS__PHI_L_L", 0.1, 1.1);
281 add_row(rows, 156, "R-1_Bsphill_1.1_6", "DEFAULT", O::R_1_BS__PHI_L_L, "R_1_BS__PHI_L_L", 1.1, 6);
282 add_row(rows, 157, "R-1_Bsphill_15_19", "DEFAULT", O::R_1_BS__PHI_L_L, "R_1_BS__PHI_L_L", 15, 19);
283 add_row(rows, 158, "FL_Bsphiee_0.0009_0.2615", "DEFAULT", O::F_L_BS_PHI_E_E, "F_L_BS_PHI_E_E", 0.0009, 0.2615);
284 add_row(rows, 159, "AT2_Bsphiee_0.0009_0.2615", "DEFAULT", O::A_T_2_BS_PHI_E_E, "A_T_2_BS_PHI_E_E", 0.0009, 0.2615);
285 add_row(rows, 160, "AT2_B0Kstar0ee_0.0008_1.12_Belle", "Belle", O::A_T_2_B0__KSTAR0_E_E, "A_T_2_B0__KSTAR0_E_E", 0.0008, 1.12);
286 add_row(rows, 161, "FL_B0Kstar0ee_1.1_6", "DEFAULT", O::F_L_B0__KSTAR0_E_E, "F_L_B0__KSTAR0_E_E", 1.1, 6);
287 add_row(rows, 162, "P1_B0Kstar0ee_1.1_6", "DEFAULT", O::P_1_B0__KSTAR0_E_E, "P_1_B0__KSTAR0_E_E", 1.1, 6);
288 add_row(rows, 163, "P2_B0Kstar0ee_1.1_6", "DEFAULT", O::P_2_B0__KSTAR0_E_E, "P_2_B0__KSTAR0_E_E", 1.1, 6);
289 add_row(rows, 164, "P3_B0Kstar0ee_1.1_6", "DEFAULT", O::P_3_B0__KSTAR0_E_E, "P_3_B0__KSTAR0_E_E", 1.1, 6);
290 add_row(rows, 165, "P4prime_B0Kstar0ee_1.1_6", "DEFAULT", O::P_PRIME_4_B0__KSTAR0_E_E, "P_PRIME_4_B0__KSTAR0_E_E", 1.1, 6);
291 add_row(rows, 166, "P5prime_B0Kstar0ee_1.1_6", "DEFAULT", O::P_PRIME_5_B0__KSTAR0_E_E, "P_PRIME_5_B0__KSTAR0_E_E", 1.1, 6);
292 add_row(rows, 167, "P6prime_B0Kstar0ee_1.1_6", "DEFAULT", O::P_PRIME_6_B0__KSTAR0_E_E, "P_PRIME_6_B0__KSTAR0_E_E", 1.1, 6);
293 add_row(rows, 168, "P8prime_B0Kstar0ee_1.1_6", "DEFAULT", O::P_PRIME_8_B0__KSTAR0_E_E, "P_PRIME_8_B0__KSTAR0_E_E", 1.1, 6);
294 add_row(rows, 169, "FL_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 0.06, 0.98);
295 add_row(rows, 170, "S2s_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::S_2S_B0__KSTAR0_MU_MU, "S_2S_B0__KSTAR0_MU_MU", 0.06, 0.98);
296 add_row(rows, 171, "S1c_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 0.06, 0.98);
297 add_row(rows, 172, "P1_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 0.06, 0.98);
298 add_row(rows, 173, "P2_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 0.06, 0.98);
299 add_row(rows, 174, "P3_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 0.06, 0.98);
300 add_row(rows, 175, "P4prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 0.06, 0.98);
301 add_row(rows, 176, "P5prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 0.06, 0.98);
302 add_row(rows, 177, "P6prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 0.06, 0.98);
303 add_row(rows, 178, "P8prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 0.06, 0.98);
304 add_row(rows, 179, "S6c_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::S_6C_B0__KSTAR0_MU_MU, "S_6C_B0__KSTAR0_MU_MU", 0.06, 0.98);
305 add_row(rows, 180, "dGamma/dq2_B0Kstar0mumu_0.06_0.98_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 0.06, 0.98);
306 add_row(rows, 181, "FL_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 1.1, 2.5);
307 add_row(rows, 182, "S1c_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 1.1, 2.5);
308 add_row(rows, 183, "P1_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 1.1, 2.5);
309 add_row(rows, 184, "P2_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 1.1, 2.5);
310 add_row(rows, 185, "P3_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 1.1, 2.5);
311 add_row(rows, 186, "P4prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 1.1, 2.5);
312 add_row(rows, 187, "P5prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 1.1, 2.5);
313 add_row(rows, 188, "P6prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 1.1, 2.5);
314 add_row(rows, 189, "P8prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 1.1, 2.5);
315 add_row(rows, 190, "dGamma/dq2_B0Kstar0mumu_1.1_2.5_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 1.1, 2.5);
316 add_row(rows, 191, "FL_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 2.5, 4);
317 add_row(rows, 192, "S1c_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 2.5, 4);
318 add_row(rows, 193, "P1_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 2.5, 4);
319 add_row(rows, 194, "P2_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 2.5, 4);
320 add_row(rows, 195, "P3_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 2.5, 4);
321 add_row(rows, 196, "P4prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 2.5, 4);
322 add_row(rows, 197, "P5prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 2.5, 4);
323 add_row(rows, 198, "P6prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 2.5, 4);
324 add_row(rows, 199, "P8prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 2.5, 4);
325 add_row(rows, 200, "dGamma/dq2_B0Kstar0mumu_2.5_4.0_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 2.5, 4);
326 add_row(rows, 201, "FL_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 4, 6);
327 add_row(rows, 202, "S1c_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 4, 6);
328 add_row(rows, 203, "P1_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 4, 6);
329 add_row(rows, 204, "P2_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 4, 6);
330 add_row(rows, 205, "P3_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 4, 6);
331 add_row(rows, 206, "P4prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 4, 6);
332 add_row(rows, 207, "P5prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 4, 6);
333 add_row(rows, 208, "P6prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 4, 6);
334 add_row(rows, 209, "P8prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 4, 6);
335 add_row(rows, 210, "dGamma/dq2_B0Kstar0mumu_4.0_6.0_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 4, 6);
336 add_row(rows, 211, "FL_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 15, 17);
337 add_row(rows, 212, "S1c_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 15, 17);
338 add_row(rows, 213, "P1_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 15, 17);
339 add_row(rows, 214, "P2_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 15, 17);
340 add_row(rows, 215, "P3_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 15, 17);
341 add_row(rows, 216, "P4prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 15, 17);
342 add_row(rows, 217, "P5prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 15, 17);
343 add_row(rows, 218, "P6prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 15, 17);
344 add_row(rows, 219, "P8prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 15, 17);
345 add_row(rows, 220, "dGamma/dq2_B0Kstar0mumu_15.0_17.0_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 15, 17);
346 add_row(rows, 221, "FL_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::F_L_B0__KSTAR0_MU_MU, "F_L_B0__KSTAR0_MU_MU", 17, 19);
347 add_row(rows, 222, "S1c_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::S_1C_B0__KSTAR0_MU_MU, "S_1C_B0__KSTAR0_MU_MU", 17, 19);
348 add_row(rows, 223, "P1_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_1_B0__KSTAR0_MU_MU, "P_1_B0__KSTAR0_MU_MU", 17, 19);
349 add_row(rows, 224, "P2_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_2_B0__KSTAR0_MU_MU, "P_2_B0__KSTAR0_MU_MU", 17, 19);
350 add_row(rows, 225, "P3_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_3_B0__KSTAR0_MU_MU, "P_3_B0__KSTAR0_MU_MU", 17, 19);
351 add_row(rows, 226, "P4prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_4_B0__KSTAR0_MU_MU, "P_PRIME_4_B0__KSTAR0_MU_MU", 17, 19);
352 add_row(rows, 227, "P5prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_5_B0__KSTAR0_MU_MU, "P_PRIME_5_B0__KSTAR0_MU_MU", 17, 19);
353 add_row(rows, 228, "P6prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_6_B0__KSTAR0_MU_MU, "P_PRIME_6_B0__KSTAR0_MU_MU", 17, 19);
354 add_row(rows, 229, "P8prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::P_PRIME_8_B0__KSTAR0_MU_MU, "P_PRIME_8_B0__KSTAR0_MU_MU", 17, 19);
355 add_row(rows, 230, "dGamma/dq2_B0Kstar0mumu_17.0_19.0_LHCb2025c2", "LHCb2025c2", O::DBR_DQ2_B0__KSTAR0_MU_MU, "DBR_DQ2_B0__KSTAR0_MU_MU", 17, 19);
356
357 return rows;
358}
359
360void apply_bsm_point(double dC7, double dC8, double dC9, double dC10) {
361 if (std::abs(dC7) + std::abs(dC8) + std::abs(dC9) + std::abs(dC10) <= 1e-15) return;
362
363 const std::string had_bsm_block =
365 + "__BSM_INTERMEDIATE";
366
368 auto set_wc = [&](WCoef c, double v) {
369 spop.set_value(had_bsm_block,
371 v);
372 };
373
374 set_wc(WCoef::C7, dC7);
375 set_wc(WCoef::C8, dC8);
376 set_wc(WCoef::C9, dC9);
377 set_wc(WCoef::C10, dC10);
378 spop.commit();
379}
380
381} // namespace
382
383int main(int argc, char** argv) {
384 ScopedTimer total("main total");
385
386 const std::string out_path = (argc >= 2) ? argv[1] : "hyperiso_allobs.csv";
387 const std::string lha_path = (argc >= 3) ? argv[2] : "lha/si_input.flha";
388 const double dC7 = (argc >= 4) ? std::atof(argv[3]) : 0.0;
389 const double dC8 = (argc >= 5) ? std::atof(argv[4]) : 0.0;
390 const double dC9 = (argc >= 6) ? std::atof(argv[5]) : 0.0;
391 const double dC10 = (argc >= 7) ? std::atof(argv[6]) : 0.0;
392
393 try {
395 std::cerr << "[INFO] LHA = " << lha_path << "\n";
396
397 HyperisoMaster hyp;
398 HyperisoConfig config;
399 config.model = Model::SM;
400
401 {
402 ScopedTimer t("hyp.init");
403 hyp.init(lha_path, config);
404 }
405
406 apply_bsm_point(dC7, dC8, dC9, dC10);
407
409 constexpr bool add_deps = false;
410
411 BKstarllConfig cfg_BKs;
412 cfg_BKs.ff_src = BV_FF_Src::GRvDV;
415
416 BKstarGammaConfig cfg_BKsgamma;
417 cfg_BKsgamma.ff_src = BV_FF_Src::GRvDV;
419
420 BsPhiConfig cfg_BsPhi;
421 cfg_BsPhi.ff_src = BV_FF_Src::GRvDV;
423 oi.set_bsphi_threads(4);
424
425 BKllConfig cfg_BK;
428 oi.set_bkll_threads(4);
429
430 const auto rows = make_rows();
431 std::set<Observables> seen_unbinned;
432 std::set<std::tuple<Observables,double,double>> seen_binned;
433
434 {
435 ScopedTimer t("add_observable loop");
436 for (const auto& r : rows) {
437 if (r.binned) {
438 auto key = std::make_tuple(r.hyp_obs, r.q2min, r.q2max);
439 if (seen_binned.insert(key).second) {
441 BinnedObservableId{ObservableMapper::to_id(r.hyp_obs), {r.q2min, r.q2max}},
443 add_deps
444 );
445 }
446 } else {
447 if (seen_unbinned.insert(r.hyp_obs).second) {
448 oi.add_observable(ObservableMapper::to_id(r.hyp_obs), QCDOrder::NNLO, add_deps);
449 }
450 }
451 }
452 }
453
454 std::map<ObservableId, std::vector<ObservableValue>> all;
455 {
456 ScopedTimer t("compute_all");
457 all = oi.compute_all();
458 }
459
460 std::ofstream out(out_path);
461 if (!out) throw std::runtime_error("Impossible d'ouvrir le CSV: " + out_path);
462
463 out << "code,idx,si_name,experiment,hyper_enum,bin_low,bin_high,value,err_down,err_up,dC7,dC8,dC9,dC10,lha,status\n";
464 out << std::setprecision(17);
465
466 int nok = 0;
467 int nfail = 0;
468 for (const auto& r : rows) {
469 double value = std::numeric_limits<double>::quiet_NaN();
470 std::string status = "ok";
471 try {
472 value = find_value(all, r);
473 ++nok;
474 } catch (const std::exception& e) {
475 status = e.what();
476 ++nfail;
477 }
478
479 out << "hyperiso," << r.idx << ","
480 << csv_escape(r.si_name) << ","
481 << csv_escape(r.experiment) << ","
482 << csv_escape(r.hyp_enum) << ",";
483 if (r.binned) {
484 write_num(out, r.q2min); out << ","; write_num(out, r.q2max);
485 } else {
486 out << "nan,nan";
487 }
488 out << ",";
489 write_num(out, value);
490 out << ",nan,nan,";
491 write_num(out, dC7); out << ",";
492 write_num(out, dC8); out << ",";
493 write_num(out, dC9); out << ",";
494 write_num(out, dC10); out << ",";
495 out << csv_escape(lha_path) << ",";
496 out << csv_escape(status) << "\n";
497 }
498
499 std::cout << "CSV ecrit dans " << out_path << " (ok=" << nok << ", fail=" << nfail << ")\n";
500 return nfail == 0 ? 0 : 2;
501 } catch (const std::exception& e) {
502 std::cerr << "[FATAL] " << e.what() << "\n";
503 return 1;
504 }
505}
Observables
Definition GeneralEnum.h:4
@ B__Kstar_l_l
@ Bs__phi_l_l
@ B__Kstar_gamma
WCoef
High-level helpers for initializing and monitoring the Hyperiso framework.
High-level, user-facing entry point to compute flavor observables.
Adapter between IParamOptimizer and ParamOptimizer.
static IdOf< ObservableTag > to_id(Observables e)
Converts an enum value to an IdOf<Tag>.
static std::string str(const WGroupId &gid, ScaleType s, WilsonBasis b=WilsonBasis::B_STANDARD)
Builds a composite block name using a WGroupId, scale and basis.
High-level interface to initialize and monitor the main framework configuration.
void init(const std::string &lhaFile, HyperisoConfig config)
Initializes Hyperiso using a LHA file and a full Config object.
void setLevel(LogLevel level)
Sets the logging level.
Definition Logger.cpp:38
static Logger * getInstance()
Retrieves the singleton instance of the Logger.
Definition Logger.cpp:5
void set_bkstarll_threads(size_t n_threads)
Set the thread option for the bkstarll decay.
void set_bkll_threads(size_t n_threads)
Set the thread option for the bkll decay.
void set_decay_config(Decays dec, std::any config)
Set configuration for a given decay.
std::map< ObservableId, std::vector< ObservableValue > > compute_all()
Compute all currently registered observables.
ObservableInterface & add_observable(Observables obs, QCDOrder order, bool add_dependencies=false)
Add an observable to the manager (enum API).
void set_bsphi_threads(size_t n_threads)
Set the thread option for the bsphi decay.
Adapter that builds a ParamOptimizer from Parameters instances.
void set_value(const BlockName &block, const LhaID &id, scalar_t v) override
Stage a change of central value for a parameter.
static LhaID flha_full(WCoef e, QCDOrder q, ContributionType c)
csl::Expr v
Definition sm.h:110
Hash specialization for SymbolId<Tag>.
Definition BlockName.h:353
BP_FF_Src ff_src
Definition BKllDecay.h:142
BV_FF_Src ff_src
Definition BKsllDecay.h:19
Identifies an observable together with a numerical bin.
BV_FF_Src ff_src
Definition BsPhiDecay.h:17
Configuration object controlling model, input flags and optional MARTY resources.
Definition Config.h:24
Model model
Current model.
Definition Config.h:33
std::string name
ScopedTimer(std::string n)
std::chrono::steady_clock::time_point t0