820int main(
int argc,
char** argv) {
821 const std::size_t top_n =
822 (argc >= 2) ?
static_cast<std::size_t
>(std::stoul(argv[1])) : 10U;
828 hyp.
init(
"lha/si_input.flha", config_hyp);
830 auto oint = std::make_shared<ObservableInterface>();
835 oint->set_bkstarll_threads(24);
844 oint->set_bsphi_threads(24);
849 oint->set_bkll_threads(24);
852 constexpr bool kAddDeps =
false;
854 std::vector<ObsRow> rows;
855 std::set<Observables> seen_unbinned;
856 std::set<std::tuple<Observables, double, double>> seen_binned;
859 const std::string& obs_name,
860 const std::string& label,
861 const std::string& experiment) {
862 if (seen_unbinned.insert(obs).second) {
868 rows.push_back(ObsRow{
874 resolve_experiment_from_label(label, experiment)
879 const std::string& obs_name,
882 const std::string& label,
883 const std::string& experiment) {
884 const auto key = std::make_tuple(obs, q2min, q2max);
885 if (seen_binned.insert(key).second) {
886 oint->add_observable(
893 rows.push_back(ObsRow{
899 resolve_experiment_from_label(label, experiment)
903#define ADD_UNBINNED(obs, label, experiment) add_unbinned((obs), #obs, (label), (experiment))
904#define ADD_BIN(obs, q2min, q2max, label, experiment) add_bin((obs), #obs, (q2min), (q2max), (label), (experiment))
906 ADD_UNBINNED(O::IA_B__KSTAR_GAMMA,
"AI_BKstargamma",
"DEFAULT");
907 ADD_UNBINNED(O::BR_B_XS_GAMMA,
"BR_BXsgamma",
"DEFAULT");
908 ADD_UNBINNED(O::BR_BS_MUMU_UNTAG,
"BRuntag_Bsmumu",
"DEFAULT");
909 ADD_UNBINNED(O::BR_BS_EE_UNTAG,
"BRuntag_Bsee",
"DEFAULT");
910 ADD_BIN(O::BR_B__Xs_mu_mu, 1, 6,
"BR_BXsmumu_1_6",
"DEFAULT");
911 ADD_BIN(O::BR_B__Xs_mu_mu, 14.2, 22,
"BR_BXsmumu_14.2_22",
"DEFAULT");
912 ADD_BIN(O::BR_B__Xs_e_e, 1, 6,
"BR_BXsee_1_6",
"DEFAULT");
913 ADD_BIN(O::BR_B__Xs_e_e, 14.2, 22,
"BR_BXsee_14.2_22",
"DEFAULT");
914 ADD_UNBINNED(O::BR_B0__KSTAR0_GAMMA,
"BR_B0Kstar0gamma",
"DEFAULT");
915 ADD_UNBINNED(O::BR_B__KSTAR_GAMMA,
"BR_BKstargamma",
"DEFAULT");
916 ADD_BIN(O::DBR_DQ2_B__KSTAR_MU_MU, 1.1, 6,
"dBR/dq2_BKstarmumu_1.1_6",
"DEFAULT");
917 ADD_BIN(O::DBR_DQ2_B__KSTAR_MU_MU, 15, 19,
"dBR/dq2_BKstarmumu_15_19",
"DEFAULT");
918 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 0.1, 1.1,
"R-1_B0Kstar0ll_0.1_1.1",
"DEFAULT");
919 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 1.1, 6,
"R-1_B0Kstar0ll_1.1_6",
"DEFAULT");
920 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 0.045, 1.1,
"R-1_B0Kstar0ll_0.045_1.1_Belle",
"Belle");
921 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 1.1, 6,
"R-1_B0Kstar0ll_1.1_6_Belle",
"Belle");
922 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 15, 19,
"R-1_B0Kstar0ll_15_19_Belle",
"Belle");
923 ADD_BIN(O::DBR_DQ2_B0__K0_MU_MU, 1.1, 6,
"dBR/dq2_B0K0mumu_1.1_6",
"DEFAULT");
924 ADD_BIN(O::DBR_DQ2_B0__K0_MU_MU, 15, 22,
"dBR/dq2_B0K0mumu_15_22",
"DEFAULT");
925 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 1.1, 6,
"dBR/dq2_BKmumu_1.1_6",
"DEFAULT");
926 ADD_BIN(O::F_H_B__K_MU_MU, 1.1, 6,
"FH_BKmumu_1.1_6",
"DEFAULT");
927 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 15, 22,
"dBR/dq2_BKmumu_15_22",
"DEFAULT");
928 ADD_BIN(O::F_H_B__K_MU_MU, 15, 22,
"FH_BKmumu_15_22",
"DEFAULT");
929 ADD_BIN(O::R_1_B__K_L_L, 0.1, 1.1,
"R-1_BKll_0.1_1.1",
"DEFAULT");
930 ADD_BIN(O::R_1_B__K_L_L, 1.1, 6,
"R-1_BKll_1.1_6",
"DEFAULT");
931 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 0.1, 0.98,
"dBR/dq2_Bsphimumu_0.1_0.98",
"DEFAULT");
932 ADD_BIN(O::F_L_BS_PHI_MU_MU, 0.1, 0.98,
"FL_Bsphimumu_0.1_0.98",
"DEFAULT");
933 ADD_BIN(O::S_3_BS_PHI_MU_MU, 0.1, 0.98,
"S3_Bsphimumu_0.1_0.98",
"DEFAULT");
934 ADD_BIN(O::S_4_BS_PHI_MU_MU, 0.1, 0.98,
"S4_Bsphimumu_0.1_0.98",
"DEFAULT");
935 ADD_BIN(O::S_7_BS_PHI_MU_MU, 0.1, 0.98,
"S7_Bsphimumu_0.1_0.98",
"DEFAULT");
936 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 1.1, 2.5,
"dBR/dq2_Bsphimumu_1.1_2.5",
"DEFAULT");
937 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 2.5, 4,
"dBR/dq2_Bsphimumu_2.5_4",
"DEFAULT");
938 ADD_BIN(O::F_L_BS_PHI_MU_MU, 1.1, 4,
"FL_Bsphimumu_1.1_4",
"DEFAULT");
939 ADD_BIN(O::S_3_BS_PHI_MU_MU, 1.1, 4,
"S3_Bsphimumu_1.1_4",
"DEFAULT");
940 ADD_BIN(O::S_4_BS_PHI_MU_MU, 1.1, 4,
"S4_Bsphimumu_1.1_4",
"DEFAULT");
941 ADD_BIN(O::S_7_BS_PHI_MU_MU, 1.1, 4,
"S7_Bsphimumu_1.1_4",
"DEFAULT");
942 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 4, 6,
"dBR/dq2_Bsphimumu_4_6",
"DEFAULT");
943 ADD_BIN(O::F_L_BS_PHI_MU_MU, 4, 6,
"FL_Bsphimumu_4_6",
"DEFAULT");
944 ADD_BIN(O::S_3_BS_PHI_MU_MU, 4, 6,
"S3_Bsphimumu_4_6",
"DEFAULT");
945 ADD_BIN(O::S_4_BS_PHI_MU_MU, 4, 6,
"S4_Bsphimumu_4_6",
"DEFAULT");
946 ADD_BIN(O::S_7_BS_PHI_MU_MU, 4, 6,
"S7_Bsphimumu_4_6",
"DEFAULT");
947 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 15, 19,
"dBR/dq2_Bsphimumu_15_19 // [2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
948 ADD_BIN(O::F_L_BS_PHI_MU_MU, 15, 18.9,
"FL_Bsphimumu_15_18.9",
"DEFAULT");
949 ADD_BIN(O::S_3_BS_PHI_MU_MU, 15, 18.9,
"S3_Bsphimumu_15_18.9",
"DEFAULT");
950 ADD_BIN(O::S_4_BS_PHI_MU_MU, 15, 18.9,
"S4_Bsphimumu_15_18.9",
"DEFAULT");
951 ADD_BIN(O::S_7_BS_PHI_MU_MU, 15, 18.9,
"S7_Bsphimumu_15_18.9",
"DEFAULT");
952 ADD_BIN(O::DBR_DQ2_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"dBR/dq2_LambdabLambdamumu_15_20",
"DEFAULT");
953 ADD_BIN(O::A_FB_L_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AlFB_LambdabLambdamumu_15_20",
"DEFAULT");
954 ADD_BIN(O::A_FB_H_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AhFB_LambdabLambdamumu_15_20",
"DEFAULT");
955 ADD_BIN(O::A_FB_LH_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AlhFB_LambdabLambdamumu_15_20",
"DEFAULT");
956 ADD_BIN(O::F_L_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"FL_LambdabLambdamumu_15_20",
"DEFAULT");
957 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 0.1, 0.98,
"FL_BKstarmumu_0.1_0.98",
"DEFAULT");
958 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 0.1, 0.98,
"AFB_BKstarmumu_0.1_0.98",
"DEFAULT");
959 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 0.1, 0.98,
"S3_BKstarmumu_0.1_0.98",
"DEFAULT");
960 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 0.1, 0.98,
"S4_BKstarmumu_0.1_0.98",
"DEFAULT");
961 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 0.1, 0.98,
"S5_BKstarmumu_0.1_0.98",
"DEFAULT");
962 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 0.1, 0.98,
"S7_BKstarmumu_0.1_0.98",
"DEFAULT");
963 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 0.1, 0.98,
"S8_BKstarmumu_0.1_0.98",
"DEFAULT");
964 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 0.1, 0.98,
"S9_BKstarmumu_0.1_0.98",
"DEFAULT");
965 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 1.1, 2.5,
"FL_BKstarmumu_1.1_2.5",
"DEFAULT");
966 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 1.1, 2.5,
"AFB_BKstarmumu_1.1_2.5",
"DEFAULT");
967 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 1.1, 2.5,
"S3_BKstarmumu_1.1_2.5",
"DEFAULT");
968 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 1.1, 2.5,
"S4_BKstarmumu_1.1_2.5",
"DEFAULT");
969 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 1.1, 2.5,
"S5_BKstarmumu_1.1_2.5",
"DEFAULT");
970 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 1.1, 2.5,
"S7_BKstarmumu_1.1_2.5",
"DEFAULT");
971 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 1.1, 2.5,
"S8_BKstarmumu_1.1_2.5",
"DEFAULT");
972 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 1.1, 2.5,
"S9_BKstarmumu_1.1_2.5",
"DEFAULT");
973 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 2.5, 4,
"FL_BKstarmumu_2.5_4",
"DEFAULT");
974 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 2.5, 4,
"AFB_BKstarmumu_2.5_4",
"DEFAULT");
975 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 2.5, 4,
"S3_BKstarmumu_2.5_4",
"DEFAULT");
976 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 2.5, 4,
"S4_BKstarmumu_2.5_4",
"DEFAULT");
977 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 2.5, 4,
"S5_BKstarmumu_2.5_4",
"DEFAULT");
978 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 2.5, 4,
"S7_BKstarmumu_2.5_4",
"DEFAULT");
979 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 2.5, 4,
"S8_BKstarmumu_2.5_4",
"DEFAULT");
980 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 2.5, 4,
"S9_BKstarmumu_2.5_4",
"DEFAULT");
981 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 4, 6,
"FL_BKstarmumu_4_6",
"DEFAULT");
982 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 4, 6,
"AFB_BKstarmumu_4_6",
"DEFAULT");
983 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 4, 6,
"S3_BKstarmumu_4_6",
"DEFAULT");
984 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 4, 6,
"S4_BKstarmumu_4_6",
"DEFAULT");
985 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 4, 6,
"S5_BKstarmumu_4_6",
"DEFAULT");
986 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 4, 6,
"S7_BKstarmumu_4_6",
"DEFAULT");
987 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 4, 6,
"S8_BKstarmumu_4_6",
"DEFAULT");
988 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 4, 6,
"S9_BKstarmumu_4_6",
"DEFAULT");
989 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 15, 17,
"FL_BKstarmumu_15_17",
"DEFAULT");
990 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 15, 17,
"AFB_BKstarmumu_15_17",
"DEFAULT");
991 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 15, 17,
"S3_BKstarmumu_15_17",
"DEFAULT");
992 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 15, 17,
"S4_BKstarmumu_15_17",
"DEFAULT");
993 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 15, 17,
"S5_BKstarmumu_15_17",
"DEFAULT");
994 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 15, 17,
"S7_BKstarmumu_15_17",
"DEFAULT");
995 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 15, 17,
"S8_BKstarmumu_15_17",
"DEFAULT");
996 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 15, 17,
"S9_BKstarmumu_15_17",
"DEFAULT");
997 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 17, 19,
"FL_BKstarmumu_17_19",
"DEFAULT");
998 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 17, 19,
"AFB_BKstarmumu_17_19",
"DEFAULT");
999 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 17, 19,
"S3_BKstarmumu_17_19",
"DEFAULT");
1000 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 17, 19,
"S4_BKstarmumu_17_19",
"DEFAULT");
1001 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 17, 19,
"S5_BKstarmumu_17_19",
"DEFAULT");
1002 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 17, 19,
"S7_BKstarmumu_17_19",
"DEFAULT");
1003 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 17, 19,
"S8_BKstarmumu_17_19",
"DEFAULT");
1004 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 17, 19,
"S9_BKstarmumu_17_19",
"DEFAULT");
1005 ADD_BIN(O::R_1_B__KSTAR_L_L, 0.045, 6,
"R-1_BKstarll_0.045_6",
"DEFAULT");
1006 ADD_BIN(O::R_1_B0__K0_L_L, 1.1, 6,
"R-1_B0K0ll_1.1_6",
"DEFAULT");
1007 ADD_BIN(O::R_1_B__K_L_L, 1, 6,
"R-1_BKll_1_6_Belle",
"Belle");
1008 ADD_BIN(O::F_H_B__K_MU_MU, 1, 6,
"FH_BKmumu_1_6_CMS",
"CMS");
1009 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_E_E, 0.0009, 1,
"dBR/dq2_B0Kstar0ee_0.0009_1 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1010 ADD_BIN(O::F_L_B0__KSTAR0_E_E, 0.0008, 0.257,
"FL_B0Kstar0ee_0.0008_0.257 //Rejected MC nuisance sample 125 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1011 ADD_BIN(O::A_T_RE_B0__KSTAR0_E_E, 0.0008, 0.257,
"ATRe_B0Kstar0ee_0.0008_0.257 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1012 ADD_BIN(O::A_T_2_B0__KSTAR0_E_E, 0.0008, 0.257,
"AT2_B0Kstar0ee_0.0008_0.257 // [2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1013 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 0.1, 0.98,
"dBR/dq2_BKmumu_0.1_0.98_CMS",
"CMS");
1014 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 1.1, 2,
"dBR/dq2_BKmumu_1.1_2_CMS",
"CMS");
1015 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 2, 3,
"dBR/dq2_BKmumu_2_3_CMS",
"CMS");
1016 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 3, 4,
"dBR/dq2_BKmumu_3_4_CMS",
"CMS");
1017 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 4, 5,
"dBR/dq2_BKmumu_4_5_CMS",
"CMS");
1018 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 5, 6,
"dBR/dq2_BKmumu_5_6_CMS",
"CMS");
1019 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 14.82, 16,
"dBR/dq2_BKmumu_14.82_16_CMS",
"CMS");
1020 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 16, 17,
"dBR/dq2_BKmumu_16_17_CMS",
"CMS");
1021 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 17, 18,
"dBR/dq2_BKmumu_17_18_CMS",
"CMS");
1022 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 18, 19.24,
"dBR/dq2_BKmumu_18_19.24_CMS",
"CMS");
1023 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 19.24, 22.9,
"dBR/dq2_BKmumu_19.24_22.9_CMS",
"CMS");
1024 ADD_BIN(O::R_1_B__K_L_L, 1.1, 6,
"R-1_BKll_1.1_6_CMS",
"CMS");
1025 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 1.1, 2,
"FL_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1026 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 1.1, 2,
"P1_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1027 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 1.1, 2,
"P2_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1028 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 1.1, 2,
"P3_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1029 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 1.1, 2,
"P4prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1030 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 1.1, 2,
"P5prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1031 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 1.1, 2,
"P6prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1032 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 1.1, 2,
"P8prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
1033 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 2, 4.3,
"FL_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1034 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 2, 4.3,
"P1_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1035 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 2, 4.3,
"P2_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1036 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 2, 4.3,
"P3_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1037 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 2, 4.3,
"P4prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1038 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 2, 4.3,
"P5prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1039 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 2, 4.3,
"P6prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1040 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 2, 4.3,
"P8prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
1041 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 4.3, 6,
"FL_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1042 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 4.3, 6,
"P1_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1043 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 4.3, 6,
"P2_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1044 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 4.3, 6,
"P3_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1045 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 4.3, 6,
"P4prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1046 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 4.3, 6,
"P5prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1047 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 4.3, 6,
"P6prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1048 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 4.3, 6,
"P8prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
1049 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 14.18, 16,
"FL_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1050 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 14.18, 16,
"P1_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1051 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 14.18, 16,
"P2_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1052 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 14.18, 16,
"P3_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1053 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 14.18, 16,
"P4prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1054 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 14.18, 16,
"P5prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1055 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 14.18, 16,
"P6prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1056 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 14.18, 16,
"P8prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
1057 ADD_BIN(O::DBR_DQ2_BS__PHI_E_E, 0.1, 1.1,
"dBR/dq2_Bsphiee_0.1_1.1",
"DEFAULT");
1058 ADD_BIN(O::DBR_DQ2_BS__PHI_E_E, 1.1, 6,
"dBR/dq2_Bsphiee_1.1_6",
"DEFAULT");
1059 ADD_BIN(O::DBR_DQ2_BS__PHI_E_E, 15, 19,
"dBR/dq2_Bsphiee_15_19 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1060 ADD_BIN(O::R_1_BS__PHI_L_L, 0.1, 1.1,
"R-1_Bsphill_0.1_1.1",
"DEFAULT");
1061 ADD_BIN(O::R_1_BS__PHI_L_L, 1.1, 6,
"R-1_Bsphill_1.1_6",
"DEFAULT");
1062 ADD_BIN(O::R_1_BS__PHI_L_L, 15, 19,
"R-1_Bsphill_15_19 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1063 ADD_BIN(O::F_L_BS_PHI_E_E, 0.0009, 0.2615,
"FL_Bsphiee_0.0009_0.2615 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1064 ADD_BIN(O::A_T_2_BS_PHI_E_E, 0.0009, 0.2615,
"AT2_Bsphiee_0.0009_0.2615 //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"DEFAULT");
1065 ADD_BIN(O::A_T_2_B0__KSTAR0_E_E, 0.0008, 1.12,
"AT2_B0Kstar0ee_0.0008_1.12_Belle //[2026-05-24_01] [WARN] Rejected MC nuisance sample 1 while trying to fill accepted sample 1 of 1000 : MC prediction contains non-finite observable",
"Belle");
1066 ADD_BIN(O::F_L_B0__KSTAR0_E_E, 1.1, 6,
"FL_B0Kstar0ee_1.1_6",
"DEFAULT");
1067 ADD_BIN(O::P_1_B0__KSTAR0_E_E, 1.1, 6,
"P1_B0Kstar0ee_1.1_6",
"DEFAULT");
1068 ADD_BIN(O::P_2_B0__KSTAR0_E_E, 1.1, 6,
"P2_B0Kstar0ee_1.1_6",
"DEFAULT");
1069 ADD_BIN(O::P_3_B0__KSTAR0_E_E, 1.1, 6,
"P3_B0Kstar0ee_1.1_6",
"DEFAULT");
1070 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_E_E, 1.1, 6,
"P4prime_B0Kstar0ee_1.1_6",
"DEFAULT");
1071 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_E_E, 1.1, 6,
"P5prime_B0Kstar0ee_1.1_6",
"DEFAULT");
1072 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_E_E, 1.1, 6,
"P6prime_B0Kstar0ee_1.1_6",
"DEFAULT");
1073 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_E_E, 1.1, 6,
"P8prime_B0Kstar0ee_1.1_6",
"DEFAULT");
1074 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 0.06, 0.98,
"FL_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1075 ADD_BIN(O::S_2S_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S2s_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1076 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S1c_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1077 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P1_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1078 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P2_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1079 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P3_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1080 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P4prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1081 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P5prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1082 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P6prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1083 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P8prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1084 ADD_BIN(O::S_6C_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S6c_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1085 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 0.06, 0.98,
"dBR/dq2_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
1086 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 1.1, 2.5,
"FL_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1087 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 1.1, 2.5,
"S1c_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1088 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P1_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1089 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P2_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1090 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P3_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1091 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P4prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1092 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P5prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1093 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P6prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1094 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P8prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1095 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 1.1, 2.5,
"dBR/dq2_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1096 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 2.5, 4,
"FL_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1097 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 2.5, 4,
"S1c_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1098 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 2.5, 4,
"P1_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1099 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 2.5, 4,
"P2_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1100 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 2.5, 4,
"P3_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1101 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 2.5, 4,
"P4prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1102 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 2.5, 4,
"P5prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1103 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 2.5, 4,
"P6prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1104 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 2.5, 4,
"P8prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1105 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 2.5, 4,
"dBR/dq2_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1106 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 4, 6,
"FL_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1107 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 4, 6,
"S1c_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1108 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 4, 6,
"P1_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1109 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 4, 6,
"P2_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1110 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 4, 6,
"P3_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1111 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 4, 6,
"P4prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1112 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 4, 6,
"P5prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1113 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 4, 6,
"P6prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1114 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 4, 6,
"P8prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1115 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 4, 6,
"dBR/dq2_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1116 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 15, 17,
"FL_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1117 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 15, 17,
"S1c_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1118 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 15, 17,
"P1_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1119 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 15, 17,
"P2_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1120 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 15, 17,
"P3_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1121 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 15, 17,
"P4prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1122 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 15, 17,
"P5prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1123 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 15, 17,
"P6prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1124 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 15, 17,
"P8prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1125 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 15, 17,
"dBR/dq2_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1126 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 17, 19,
"FL_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1127 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 17, 19,
"S1c_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1128 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 17, 19,
"P1_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1129 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 17, 19,
"P2_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1130 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 17, 19,
"P3_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1131 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 17, 19,
"P4prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1132 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 17, 19,
"P5prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1133 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 17, 19,
"P6prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1134 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 17, 19,
"P8prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1135 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 17, 19,
"dBR/dq2_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1140 std::cout <<
"[INFO] Registered rows: " << rows.size() <<
"\n";
1141 std::cout <<
"[INFO] Unique unbinned: " << seen_unbinned.size()
1142 <<
", unique binned: " << seen_binned.size() <<
"\n";
1144 const auto all_theory = oint->compute_all();
1146 std::vector<RankedObs> ranked;
1147 ranked.reserve(rows.size());
1149 for (
const auto& row : rows) {
1152 r.experiment = row.experiment;
1153 std::ostringstream error;
1156 r.key = flha_key(row.id);
1157 r.flha_code = flha_observable_code(row.id);
1158 r.quantity = quantity_from_enum_name(row.obs_name);
1159 r.flha_enum_ok = flha_code_matches_enum_quantity(row.obs_name, r.flha_code);
1160 if (!r.flha_enum_ok) {
1161 error <<
"flha_enum_quantity_mismatch:obs=" << row.obs_name
1162 <<
",flha_code=" << r.flha_code <<
";";
1165 const std::string resolved = choose_available_experiment(row, r.key);
1166 if (!resolved.empty()) {
1167 r.experiment = resolved;
1169 error <<
"exp_key_not_found_in_known_FOBS_blocks:" << r.key <<
";";
1171 }
catch (
const std::exception& e) {
1172 error <<
"flha_key_exception:" << e.what() <<
";";
1174 error <<
"flha_key_unknown_exception;";
1178 const auto obs_id = row.id.s;
1179 auto it = all_theory.find(obs_id);
1180 if (it != all_theory.end()) {
1181 r.theory_ok = find_theory_value(it->second, row, r.theory);
1184 error <<
"theory_not_found_for_bin;";
1186 }
catch (
const std::exception& e) {
1187 error <<
"theory_exception:" << e.what() <<
";";
1189 error <<
"theory_unknown_exception;";
1192 if (!r.key.empty() && has_exp_key(r.experiment, r.key)) {
1194 r.exp = get_exp_value_for_row(oint, row, r.experiment);
1195 r.exp_ok = std::isfinite(r.exp);
1196 }
catch (
const std::exception& e) {
1197 error <<
"exp_exception:" << e.what() <<
";";
1199 error <<
"exp_unknown_exception;";
1203 r.stat = get_exp_stat_for_row(oint, row, r.experiment);
1204 r.stat_ok = std::isfinite(r.stat);
1205 }
catch (
const std::exception& e) {
1206 error <<
"stat_exception:" << e.what() <<
";";
1208 error <<
"stat_unknown_exception;";
1212 r.combined = get_exp_combined_for_row(oint, row, r.experiment);
1213 r.combined_ok = std::isfinite(r.combined);
1214 if (r.combined_ok && r.stat_ok) {
1215 const double syst2 = r.combined * r.combined - r.stat * r.stat;
1216 r.syst_from_combined = (syst2 > 0.0) ? std::sqrt(syst2) : 0.0;
1218 }
catch (
const std::exception& e) {
1219 error <<
"combined_exception:" << e.what() <<
";";
1221 error <<
"combined_unknown_exception;";
1224 error <<
"skip_exp_lookup_missing_key;";
1227 if (r.theory_ok && r.exp_ok) {
1228 r.delta = r.theory - r.exp;
1230 r.rel_delta = r.delta / r.exp;
1231 r.ratio = r.theory / r.exp;
1235 if (r.theory_ok && r.exp_ok && r.stat_ok && r.stat > 0.0) {
1236 r.pull = r.delta / r.stat;
1237 r.usable = std::isfinite(r.pull);
1240 r.error = error.str();
1242 ranked.push_back(r);
1246 std::sort(ranked.begin(), ranked.end(), [](
const RankedObs& a,
const RankedObs& b) {
1247 const double ap = std::abs(a.pull);
1248 const double bp = std::abs(b.pull);
1249 if (ap != bp) return ap > bp;
1250 return std::abs(a.delta) > std::abs(b.delta);
1253 const std::size_t n = std::min(top_n, ranked.size());
1255 std::cout <<
"########################################################################\n";
1256 std::cout <<
"# TOP " << n <<
" largest theory/experiment discrepancies\n";
1257 std::cout <<
"# Ranking: descending |pull| = |theory - exp| / stat_unc\n";
1258 std::cout <<
"# Total usable rows: " << ranked.size() <<
" / " << rows.size() <<
"\n";
1259 std::cout <<
"########################################################################\n";
1261 for (std::size_t i = 0; i < n; ++i) {
1262 print_ranked_obs_card(ranked[i], i + 1);
1265 std::cout <<
"\n======================================================================\n";
1266 std::cout <<
"Compact summary\n";
1267 std::cout <<
"======================================================================\n";
1268 std::cout << std::left
1269 << std::setw(5) <<
"rank"
1270 << std::setw(9) <<
"idx"
1271 << std::setw(14) <<
"|pull|"
1272 << std::setw(14) <<
"th/exp"
1273 << std::setw(16) <<
"delta"
1274 << std::setw(13) <<
"stat"
1276 std::cout << std::string(110,
'-') <<
"\n";
1277 for (std::size_t i = 0; i < n; ++i) {
1278 const RankedObs& r = ranked[i];
1279 std::cout << std::left
1280 << std::setw(5) << (i + 1)
1281 << std::setw(9) << r.row.index
1282 << std::setw(14) << fmt_num(std::abs(r.pull), 4)
1283 << std::setw(14) << fmt_num(r.ratio, 4)
1284 << std::setw(16) << fmt_signed(r.delta, 4)
1285 << std::setw(13) << fmt_num(r.stat, 4)
1286 << r.row.label <<
"\n";
1294 std::cout <<
"\n[INFO] Done. Pass an integer argument to change the number of printed rows, e.g. ./main_top_obs 20\n";
1297 }
catch (
const std::exception& e) {
1298 std::cerr <<
"[FATAL] " << e.what() <<
"\n";
1301 std::cerr <<
"[FATAL] Unknown exception\n";