725int main(
int argc,
char** argv) {
726 const std::string out_path =
727 (argc >= 2) ? std::string(argv[1]) :
"observable_comparison.csv";
733 hyp.
init(
"lha/si_input.flha", config_hyp);
735 auto oint = std::make_shared<ObservableInterface>();
740 oint->set_bkstarll_threads(24);
749 oint->set_bsphi_threads(24);
754 oint->set_bkll_threads(24);
757 constexpr bool kAddDeps =
false;
759 std::vector<ObsRow> rows;
760 std::set<Observables> seen_unbinned;
761 std::set<std::tuple<Observables, double, double>> seen_binned;
764 const std::string& obs_name,
765 const std::string& label,
766 const std::string& experiment) {
767 if (seen_unbinned.insert(obs).second) {
773 rows.push_back(ObsRow{
779 resolve_experiment_from_label(label, experiment)
784 const std::string& obs_name,
787 const std::string& label,
788 const std::string& experiment) {
789 const auto key = std::make_tuple(obs, q2min, q2max);
790 if (seen_binned.insert(key).second) {
791 oint->add_observable(
798 rows.push_back(ObsRow{
804 resolve_experiment_from_label(label, experiment)
808#define ADD_UNBINNED(obs, label, experiment) add_unbinned((obs), #obs, (label), (experiment))
809#define ADD_BIN(obs, q2min, q2max, label, experiment) add_bin((obs), #obs, (q2min), (q2max), (label), (experiment))
811 ADD_UNBINNED(O::IA_B__KSTAR_GAMMA,
"AI_BKstargamma",
"DEFAULT");
812 ADD_UNBINNED(O::BR_B_XS_GAMMA,
"BR_BXsgamma",
"DEFAULT");
813 ADD_UNBINNED(O::BR_BS_MUMU_UNTAG,
"BRuntag_Bsmumu",
"DEFAULT");
814 ADD_UNBINNED(O::BR_BS_EE_UNTAG,
"BRuntag_Bsee",
"DEFAULT");
815 ADD_BIN(O::BR_B__Xs_mu_mu, 1, 6,
"BR_BXsmumu_1_6",
"DEFAULT");
816 ADD_BIN(O::BR_B__Xs_mu_mu, 14.2, 22,
"BR_BXsmumu_14.2_22",
"DEFAULT");
817 ADD_BIN(O::BR_B__Xs_e_e, 1, 6,
"BR_BXsee_1_6",
"DEFAULT");
818 ADD_BIN(O::BR_B__Xs_e_e, 14.2, 22,
"BR_BXsee_14.2_22",
"DEFAULT");
819 ADD_UNBINNED(O::BR_B0__KSTAR0_GAMMA,
"BR_B0Kstar0gamma",
"DEFAULT");
820 ADD_UNBINNED(O::BR_B__KSTAR_GAMMA,
"BR_BKstargamma",
"DEFAULT");
821 ADD_BIN(O::DBR_DQ2_B__KSTAR_MU_MU, 1.1, 6,
"dBR/dq2_BKstarmumu_1.1_6",
"DEFAULT");
822 ADD_BIN(O::DBR_DQ2_B__KSTAR_MU_MU, 15, 19,
"dBR/dq2_BKstarmumu_15_19",
"DEFAULT");
823 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 0.1, 1.1,
"R-1_B0Kstar0ll_0.1_1.1",
"DEFAULT");
824 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 1.1, 6,
"R-1_B0Kstar0ll_1.1_6",
"DEFAULT");
825 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 0.045, 1.1,
"R-1_B0Kstar0ll_0.045_1.1_Belle",
"Belle");
826 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 1.1, 6,
"R-1_B0Kstar0ll_1.1_6_Belle",
"Belle");
827 ADD_BIN(O::R_1_B0__KSTAR0_L_L, 15, 19,
"R-1_B0Kstar0ll_15_19_Belle",
"Belle");
828 ADD_BIN(O::DBR_DQ2_B0__K0_MU_MU, 1.1, 6,
"dBR/dq2_B0K0mumu_1.1_6",
"DEFAULT");
829 ADD_BIN(O::DBR_DQ2_B0__K0_MU_MU, 15, 22,
"dBR/dq2_B0K0mumu_15_22",
"DEFAULT");
830 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 1.1, 6,
"dBR/dq2_BKmumu_1.1_6",
"DEFAULT");
831 ADD_BIN(O::F_H_B__K_MU_MU, 1.1, 6,
"FH_BKmumu_1.1_6",
"DEFAULT");
832 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 15, 22,
"dBR/dq2_BKmumu_15_22",
"DEFAULT");
833 ADD_BIN(O::F_H_B__K_MU_MU, 15, 22,
"FH_BKmumu_15_22",
"DEFAULT");
834 ADD_BIN(O::R_1_B__K_L_L, 0.1, 1.1,
"R-1_BKll_0.1_1.1",
"DEFAULT");
835 ADD_BIN(O::R_1_B__K_L_L, 1.1, 6,
"R-1_BKll_1.1_6",
"DEFAULT");
836 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 0.1, 0.98,
"dBR/dq2_Bsphimumu_0.1_0.98",
"DEFAULT");
837 ADD_BIN(O::F_L_BS_PHI_MU_MU, 0.1, 0.98,
"FL_Bsphimumu_0.1_0.98",
"DEFAULT");
838 ADD_BIN(O::S_3_BS_PHI_MU_MU, 0.1, 0.98,
"S3_Bsphimumu_0.1_0.98",
"DEFAULT");
839 ADD_BIN(O::S_4_BS_PHI_MU_MU, 0.1, 0.98,
"S4_Bsphimumu_0.1_0.98",
"DEFAULT");
840 ADD_BIN(O::S_7_BS_PHI_MU_MU, 0.1, 0.98,
"S7_Bsphimumu_0.1_0.98",
"DEFAULT");
841 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 1.1, 2.5,
"dBR/dq2_Bsphimumu_1.1_2.5",
"DEFAULT");
842 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 2.5, 4,
"dBR/dq2_Bsphimumu_2.5_4",
"DEFAULT");
843 ADD_BIN(O::F_L_BS_PHI_MU_MU, 1.1, 4,
"FL_Bsphimumu_1.1_4",
"DEFAULT");
844 ADD_BIN(O::S_3_BS_PHI_MU_MU, 1.1, 4,
"S3_Bsphimumu_1.1_4",
"DEFAULT");
845 ADD_BIN(O::S_4_BS_PHI_MU_MU, 1.1, 4,
"S4_Bsphimumu_1.1_4",
"DEFAULT");
846 ADD_BIN(O::S_7_BS_PHI_MU_MU, 1.1, 4,
"S7_Bsphimumu_1.1_4",
"DEFAULT");
847 ADD_BIN(O::DBR_DQ2_BS__PHI_MU_MU, 4, 6,
"dBR/dq2_Bsphimumu_4_6",
"DEFAULT");
848 ADD_BIN(O::F_L_BS_PHI_MU_MU, 4, 6,
"FL_Bsphimumu_4_6",
"DEFAULT");
849 ADD_BIN(O::S_3_BS_PHI_MU_MU, 4, 6,
"S3_Bsphimumu_4_6",
"DEFAULT");
850 ADD_BIN(O::S_4_BS_PHI_MU_MU, 4, 6,
"S4_Bsphimumu_4_6",
"DEFAULT");
851 ADD_BIN(O::S_7_BS_PHI_MU_MU, 4, 6,
"S7_Bsphimumu_4_6",
"DEFAULT");
852 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");
853 ADD_BIN(O::F_L_BS_PHI_MU_MU, 15, 18.9,
"FL_Bsphimumu_15_18.9",
"DEFAULT");
854 ADD_BIN(O::S_3_BS_PHI_MU_MU, 15, 18.9,
"S3_Bsphimumu_15_18.9",
"DEFAULT");
855 ADD_BIN(O::S_4_BS_PHI_MU_MU, 15, 18.9,
"S4_Bsphimumu_15_18.9",
"DEFAULT");
856 ADD_BIN(O::S_7_BS_PHI_MU_MU, 15, 18.9,
"S7_Bsphimumu_15_18.9",
"DEFAULT");
857 ADD_BIN(O::DBR_DQ2_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"dBR/dq2_LambdabLambdamumu_15_20",
"DEFAULT");
858 ADD_BIN(O::A_FB_L_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AlFB_LambdabLambdamumu_15_20",
"DEFAULT");
859 ADD_BIN(O::A_FB_H_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AhFB_LambdabLambdamumu_15_20",
"DEFAULT");
860 ADD_BIN(O::A_FB_LH_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"AlhFB_LambdabLambdamumu_15_20",
"DEFAULT");
861 ADD_BIN(O::F_L_LAMBDA_B__LAMBDA_MU_MU, 15, 20,
"FL_LambdabLambdamumu_15_20",
"DEFAULT");
862 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 0.1, 0.98,
"FL_BKstarmumu_0.1_0.98",
"DEFAULT");
863 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 0.1, 0.98,
"AFB_BKstarmumu_0.1_0.98",
"DEFAULT");
864 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 0.1, 0.98,
"S3_BKstarmumu_0.1_0.98",
"DEFAULT");
865 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 0.1, 0.98,
"S4_BKstarmumu_0.1_0.98",
"DEFAULT");
866 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 0.1, 0.98,
"S5_BKstarmumu_0.1_0.98",
"DEFAULT");
867 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 0.1, 0.98,
"S7_BKstarmumu_0.1_0.98",
"DEFAULT");
868 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 0.1, 0.98,
"S8_BKstarmumu_0.1_0.98",
"DEFAULT");
869 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 0.1, 0.98,
"S9_BKstarmumu_0.1_0.98",
"DEFAULT");
870 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 1.1, 2.5,
"FL_BKstarmumu_1.1_2.5",
"DEFAULT");
871 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 1.1, 2.5,
"AFB_BKstarmumu_1.1_2.5",
"DEFAULT");
872 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 1.1, 2.5,
"S3_BKstarmumu_1.1_2.5",
"DEFAULT");
873 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 1.1, 2.5,
"S4_BKstarmumu_1.1_2.5",
"DEFAULT");
874 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 1.1, 2.5,
"S5_BKstarmumu_1.1_2.5",
"DEFAULT");
875 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 1.1, 2.5,
"S7_BKstarmumu_1.1_2.5",
"DEFAULT");
876 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 1.1, 2.5,
"S8_BKstarmumu_1.1_2.5",
"DEFAULT");
877 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 1.1, 2.5,
"S9_BKstarmumu_1.1_2.5",
"DEFAULT");
878 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 2.5, 4,
"FL_BKstarmumu_2.5_4",
"DEFAULT");
879 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 2.5, 4,
"AFB_BKstarmumu_2.5_4",
"DEFAULT");
880 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 2.5, 4,
"S3_BKstarmumu_2.5_4",
"DEFAULT");
881 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 2.5, 4,
"S4_BKstarmumu_2.5_4",
"DEFAULT");
882 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 2.5, 4,
"S5_BKstarmumu_2.5_4",
"DEFAULT");
883 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 2.5, 4,
"S7_BKstarmumu_2.5_4",
"DEFAULT");
884 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 2.5, 4,
"S8_BKstarmumu_2.5_4",
"DEFAULT");
885 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 2.5, 4,
"S9_BKstarmumu_2.5_4",
"DEFAULT");
886 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 4, 6,
"FL_BKstarmumu_4_6",
"DEFAULT");
887 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 4, 6,
"AFB_BKstarmumu_4_6",
"DEFAULT");
888 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 4, 6,
"S3_BKstarmumu_4_6",
"DEFAULT");
889 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 4, 6,
"S4_BKstarmumu_4_6",
"DEFAULT");
890 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 4, 6,
"S5_BKstarmumu_4_6",
"DEFAULT");
891 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 4, 6,
"S7_BKstarmumu_4_6",
"DEFAULT");
892 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 4, 6,
"S8_BKstarmumu_4_6",
"DEFAULT");
893 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 4, 6,
"S9_BKstarmumu_4_6",
"DEFAULT");
894 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 15, 17,
"FL_BKstarmumu_15_17",
"DEFAULT");
895 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 15, 17,
"AFB_BKstarmumu_15_17",
"DEFAULT");
896 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 15, 17,
"S3_BKstarmumu_15_17",
"DEFAULT");
897 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 15, 17,
"S4_BKstarmumu_15_17",
"DEFAULT");
898 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 15, 17,
"S5_BKstarmumu_15_17",
"DEFAULT");
899 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 15, 17,
"S7_BKstarmumu_15_17",
"DEFAULT");
900 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 15, 17,
"S8_BKstarmumu_15_17",
"DEFAULT");
901 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 15, 17,
"S9_BKstarmumu_15_17",
"DEFAULT");
902 ADD_BIN(O::F_L_B__KSTAR_MU_MU, 17, 19,
"FL_BKstarmumu_17_19",
"DEFAULT");
903 ADD_BIN(O::A_FB_B__KSTAR_MU_MU, 17, 19,
"AFB_BKstarmumu_17_19",
"DEFAULT");
904 ADD_BIN(O::S_3_B__KSTAR_MU_MU, 17, 19,
"S3_BKstarmumu_17_19",
"DEFAULT");
905 ADD_BIN(O::S_4_B__KSTAR_MU_MU, 17, 19,
"S4_BKstarmumu_17_19",
"DEFAULT");
906 ADD_BIN(O::S_5_B__KSTAR_MU_MU, 17, 19,
"S5_BKstarmumu_17_19",
"DEFAULT");
907 ADD_BIN(O::S_7_B__KSTAR_MU_MU, 17, 19,
"S7_BKstarmumu_17_19",
"DEFAULT");
908 ADD_BIN(O::S_8_B__KSTAR_MU_MU, 17, 19,
"S8_BKstarmumu_17_19",
"DEFAULT");
909 ADD_BIN(O::S_9_B__KSTAR_MU_MU, 17, 19,
"S9_BKstarmumu_17_19",
"DEFAULT");
910 ADD_BIN(O::R_1_B__KSTAR_L_L, 0.045, 6,
"R-1_BKstarll_0.045_6",
"DEFAULT");
911 ADD_BIN(O::R_1_B0__K0_L_L, 1.1, 6,
"R-1_B0K0ll_1.1_6",
"DEFAULT");
912 ADD_BIN(O::R_1_B__K_L_L, 1, 6,
"R-1_BKll_1_6_Belle",
"Belle");
913 ADD_BIN(O::F_H_B__K_MU_MU, 1, 6,
"FH_BKmumu_1_6_CMS",
"CMS");
914 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");
915 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");
916 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");
917 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");
918 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 0.1, 0.98,
"dBR/dq2_BKmumu_0.1_0.98_CMS",
"CMS");
919 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 1.1, 2,
"dBR/dq2_BKmumu_1.1_2_CMS",
"CMS");
920 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 2, 3,
"dBR/dq2_BKmumu_2_3_CMS",
"CMS");
921 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 3, 4,
"dBR/dq2_BKmumu_3_4_CMS",
"CMS");
922 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 4, 5,
"dBR/dq2_BKmumu_4_5_CMS",
"CMS");
923 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 5, 6,
"dBR/dq2_BKmumu_5_6_CMS",
"CMS");
924 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 14.82, 16,
"dBR/dq2_BKmumu_14.82_16_CMS",
"CMS");
925 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 16, 17,
"dBR/dq2_BKmumu_16_17_CMS",
"CMS");
926 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 17, 18,
"dBR/dq2_BKmumu_17_18_CMS",
"CMS");
927 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 18, 19.24,
"dBR/dq2_BKmumu_18_19.24_CMS",
"CMS");
928 ADD_BIN(O::DBR_DQ2_B__K_MU_MU, 19.24, 22.9,
"dBR/dq2_BKmumu_19.24_22.9_CMS",
"CMS");
929 ADD_BIN(O::R_1_B__K_L_L, 1.1, 6,
"R-1_BKll_1.1_6_CMS",
"CMS");
930 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 1.1, 2,
"FL_B0Kstar0mumu_1.1_2_CMS",
"CMS");
931 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 1.1, 2,
"P1_B0Kstar0mumu_1.1_2_CMS",
"CMS");
932 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 1.1, 2,
"P2_B0Kstar0mumu_1.1_2_CMS",
"CMS");
933 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 1.1, 2,
"P3_B0Kstar0mumu_1.1_2_CMS",
"CMS");
934 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 1.1, 2,
"P4prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
935 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 1.1, 2,
"P5prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
936 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 1.1, 2,
"P6prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
937 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 1.1, 2,
"P8prime_B0Kstar0mumu_1.1_2_CMS",
"CMS");
938 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 2, 4.3,
"FL_B0Kstar0mumu_2_4.3_CMS",
"CMS");
939 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 2, 4.3,
"P1_B0Kstar0mumu_2_4.3_CMS",
"CMS");
940 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 2, 4.3,
"P2_B0Kstar0mumu_2_4.3_CMS",
"CMS");
941 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 2, 4.3,
"P3_B0Kstar0mumu_2_4.3_CMS",
"CMS");
942 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 2, 4.3,
"P4prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
943 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 2, 4.3,
"P5prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
944 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 2, 4.3,
"P6prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
945 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 2, 4.3,
"P8prime_B0Kstar0mumu_2_4.3_CMS",
"CMS");
946 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 4.3, 6,
"FL_B0Kstar0mumu_4.3_6_CMS",
"CMS");
947 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 4.3, 6,
"P1_B0Kstar0mumu_4.3_6_CMS",
"CMS");
948 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 4.3, 6,
"P2_B0Kstar0mumu_4.3_6_CMS",
"CMS");
949 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 4.3, 6,
"P3_B0Kstar0mumu_4.3_6_CMS",
"CMS");
950 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 4.3, 6,
"P4prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
951 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 4.3, 6,
"P5prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
952 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 4.3, 6,
"P6prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
953 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 4.3, 6,
"P8prime_B0Kstar0mumu_4.3_6_CMS",
"CMS");
954 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 14.18, 16,
"FL_B0Kstar0mumu_14.18_16_CMS",
"CMS");
955 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 14.18, 16,
"P1_B0Kstar0mumu_14.18_16_CMS",
"CMS");
956 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 14.18, 16,
"P2_B0Kstar0mumu_14.18_16_CMS",
"CMS");
957 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 14.18, 16,
"P3_B0Kstar0mumu_14.18_16_CMS",
"CMS");
958 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 14.18, 16,
"P4prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
959 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 14.18, 16,
"P5prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
960 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 14.18, 16,
"P6prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
961 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 14.18, 16,
"P8prime_B0Kstar0mumu_14.18_16_CMS",
"CMS");
962 ADD_BIN(O::DBR_DQ2_BS__PHI_E_E, 0.1, 1.1,
"dBR/dq2_Bsphiee_0.1_1.1",
"DEFAULT");
963 ADD_BIN(O::DBR_DQ2_BS__PHI_E_E, 1.1, 6,
"dBR/dq2_Bsphiee_1.1_6",
"DEFAULT");
964 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");
965 ADD_BIN(O::R_1_BS__PHI_L_L, 0.1, 1.1,
"R-1_Bsphill_0.1_1.1",
"DEFAULT");
966 ADD_BIN(O::R_1_BS__PHI_L_L, 1.1, 6,
"R-1_Bsphill_1.1_6",
"DEFAULT");
967 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");
968 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");
969 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");
970 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");
971 ADD_BIN(O::F_L_B0__KSTAR0_E_E, 1.1, 6,
"FL_B0Kstar0ee_1.1_6",
"DEFAULT");
972 ADD_BIN(O::P_1_B0__KSTAR0_E_E, 1.1, 6,
"P1_B0Kstar0ee_1.1_6",
"DEFAULT");
973 ADD_BIN(O::P_2_B0__KSTAR0_E_E, 1.1, 6,
"P2_B0Kstar0ee_1.1_6",
"DEFAULT");
974 ADD_BIN(O::P_3_B0__KSTAR0_E_E, 1.1, 6,
"P3_B0Kstar0ee_1.1_6",
"DEFAULT");
975 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_E_E, 1.1, 6,
"P4prime_B0Kstar0ee_1.1_6",
"DEFAULT");
976 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_E_E, 1.1, 6,
"P5prime_B0Kstar0ee_1.1_6",
"DEFAULT");
977 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_E_E, 1.1, 6,
"P6prime_B0Kstar0ee_1.1_6",
"DEFAULT");
978 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_E_E, 1.1, 6,
"P8prime_B0Kstar0ee_1.1_6",
"DEFAULT");
979 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 0.06, 0.98,
"FL_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
980 ADD_BIN(O::S_2S_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S2s_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
981 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S1c_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
982 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P1_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
983 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P2_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
984 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P3_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
985 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P4prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
986 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P5prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
987 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P6prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
988 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 0.06, 0.98,
"P8prime_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
989 ADD_BIN(O::S_6C_B0__KSTAR0_MU_MU, 0.06, 0.98,
"S6c_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
990 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 0.06, 0.98,
"dBR/dq2_B0Kstar0mumu_0.06_0.98_LHCb2025c2",
"LHCb2025c2");
991 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 1.1, 2.5,
"FL_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
992 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 1.1, 2.5,
"S1c_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
993 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P1_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
994 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P2_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
995 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P3_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
996 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P4prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
997 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P5prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
998 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P6prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
999 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 1.1, 2.5,
"P8prime_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1000 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 1.1, 2.5,
"dBR/dq2_B0Kstar0mumu_1.1_2.5_LHCb2025c2",
"LHCb2025c2");
1001 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 2.5, 4,
"FL_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1002 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 2.5, 4,
"S1c_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1003 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 2.5, 4,
"P1_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1004 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 2.5, 4,
"P2_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1005 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 2.5, 4,
"P3_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1006 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 2.5, 4,
"P4prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1007 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 2.5, 4,
"P5prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1008 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 2.5, 4,
"P6prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1009 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 2.5, 4,
"P8prime_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1010 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 2.5, 4,
"dBR/dq2_B0Kstar0mumu_2.5_4.0_LHCb2025c2",
"LHCb2025c2");
1011 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 4, 6,
"FL_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1012 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 4, 6,
"S1c_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1013 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 4, 6,
"P1_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1014 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 4, 6,
"P2_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1015 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 4, 6,
"P3_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1016 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 4, 6,
"P4prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1017 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 4, 6,
"P5prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1018 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 4, 6,
"P6prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1019 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 4, 6,
"P8prime_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1020 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 4, 6,
"dBR/dq2_B0Kstar0mumu_4.0_6.0_LHCb2025c2",
"LHCb2025c2");
1021 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 15, 17,
"FL_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1022 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 15, 17,
"S1c_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1023 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 15, 17,
"P1_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1024 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 15, 17,
"P2_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1025 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 15, 17,
"P3_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1026 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 15, 17,
"P4prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1027 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 15, 17,
"P5prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1028 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 15, 17,
"P6prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1029 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 15, 17,
"P8prime_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1030 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 15, 17,
"dBR/dq2_B0Kstar0mumu_15.0_17.0_LHCb2025c2",
"LHCb2025c2");
1031 ADD_BIN(O::F_L_B0__KSTAR0_MU_MU, 17, 19,
"FL_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1032 ADD_BIN(O::S_1C_B0__KSTAR0_MU_MU, 17, 19,
"S1c_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1033 ADD_BIN(O::P_1_B0__KSTAR0_MU_MU, 17, 19,
"P1_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1034 ADD_BIN(O::P_2_B0__KSTAR0_MU_MU, 17, 19,
"P2_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1035 ADD_BIN(O::P_3_B0__KSTAR0_MU_MU, 17, 19,
"P3_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1036 ADD_BIN(O::P_PRIME_4_B0__KSTAR0_MU_MU, 17, 19,
"P4prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1037 ADD_BIN(O::P_PRIME_5_B0__KSTAR0_MU_MU, 17, 19,
"P5prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1038 ADD_BIN(O::P_PRIME_6_B0__KSTAR0_MU_MU, 17, 19,
"P6prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1039 ADD_BIN(O::P_PRIME_8_B0__KSTAR0_MU_MU, 17, 19,
"P8prime_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1040 ADD_BIN(O::DBR_DQ2_B0__KSTAR0_MU_MU, 17, 19,
"dBR/dq2_B0Kstar0mumu_17.0_19.0_LHCb2025c2",
"LHCb2025c2");
1045 std::cout <<
"[INFO] Registered rows: " << rows.size() <<
"\n";
1046 std::cout <<
"[INFO] Unique unbinned: " << seen_unbinned.size()
1047 <<
", unique binned: " << seen_binned.size() <<
"\n";
1049 const auto all_theory = oint->compute_all();
1051 std::ofstream out(out_path);
1053 std::cerr <<
"[ERROR] Cannot open output CSV: " << out_path <<
"\n";
1057 out <<
"index,label,observable,binned_observable,flha_key,flha_obs_code,quantity_from_enum,flha_enum_ok,requested_experiment,experiment,is_binned,q2_min,q2_max,"
1058 "theory,exp,stat_unc,delta,pull,rel_delta,rel_stat_unc,"
1059 "theory_ok,exp_ok,stat_ok,error\n";
1061 for (
const auto& row : rows) {
1062 double theory = nan_value();
1063 double exp = nan_value();
1064 double stat = nan_value();
1066 bool theory_ok =
false;
1067 bool exp_ok =
false;
1068 bool stat_ok =
false;
1070 std::ostringstream error;
1072 long flha_code = std::numeric_limits<long>::min();
1073 std::string quantity = quantity_from_enum_name(row.obs_name);
1074 bool flha_enum_ok =
true;
1075 std::string experiment = row.experiment;
1078 key = flha_key(row.id);
1079 flha_code = flha_observable_code(row.id);
1080 flha_enum_ok = flha_code_matches_enum_quantity(row.obs_name, flha_code);
1081 if (!flha_enum_ok) {
1082 error <<
"flha_enum_quantity_mismatch:obs=" << row.obs_name
1083 <<
",flha_code=" << flha_code <<
";";
1085 const std::string resolved = choose_available_experiment(row, key);
1086 if (!resolved.empty()) {
1087 experiment = resolved;
1089 error <<
"exp_key_not_found_in_known_FOBS_blocks:" << key <<
";";
1091 }
catch (
const std::exception& e) {
1092 error <<
"flha_key_exception:" << e.what() <<
";";
1094 error <<
"flha_key_unknown_exception;";
1098 const auto obs_id = row.id.s;
1099 auto it = all_theory.find(obs_id);
1100 if (it != all_theory.end()) {
1101 theory_ok = find_theory_value(it->second, row, theory);
1104 error <<
"theory_not_found_for_bin;";
1106 }
catch (
const std::exception& e) {
1107 error <<
"theory_exception:" << e.what() <<
";";
1109 error <<
"theory_unknown_exception;";
1112 if (!key.empty() && has_exp_key(experiment, key)) {
1114 exp = get_exp_value_for_row(oint, row, experiment);
1115 exp_ok = std::isfinite(exp);
1116 }
catch (
const std::exception& e) {
1117 error <<
"exp_exception:" << e.what() <<
";";
1119 error <<
"exp_unknown_exception;";
1123 stat = get_exp_stat_for_row(oint, row, experiment);
1124 stat_ok = std::isfinite(stat);
1125 }
catch (
const std::exception& e) {
1126 error <<
"stat_exception:" << e.what() <<
";";
1128 error <<
"stat_unknown_exception;";
1131 error <<
"skip_exp_lookup_missing_key;";
1134 const double delta =
1135 (theory_ok && exp_ok) ? (theory - exp) : nan_value();
1138 (theory_ok && exp_ok && stat_ok && stat > 0.0)
1142 const double rel_delta =
1143 (theory_ok && exp_ok && exp != 0.0)
1147 const double rel_stat_unc =
1148 (exp_ok && stat_ok && exp != 0.0)
1149 ? (stat / std::abs(exp))
1152 out << row.index <<
","
1153 << csv_escape(row.label) <<
","
1154 << csv_escape(row.obs_name) <<
","
1155 << csv_escape(row.id.str()) <<
","
1156 << csv_escape(key) <<
",";
1157 if (flha_code == std::numeric_limits<long>::min()) out <<
"nan";
1158 else out << flha_code;
1160 << csv_escape(quantity) <<
","
1161 << (flha_enum_ok ? 1 : 0) <<
","
1162 << csv_escape(row.experiment) <<
","
1163 << csv_escape(experiment) <<
","
1164 << (row.is_binned ? 1 : 0) <<
",";
1166 if (row.is_binned) {
1167 write_num(out, row.id.p.first);
1169 write_num(out, row.id.p.second);
1175 write_num(out, theory);
1177 write_num(out, exp);
1179 write_num(out, stat);
1181 write_num(out, delta);
1183 write_num(out, pull);
1185 write_num(out, rel_delta);
1187 write_num(out, rel_stat_unc);
1189 << (theory_ok ? 1 : 0) <<
","
1190 << (exp_ok ? 1 : 0) <<
","
1191 << (stat_ok ? 1 : 0) <<
","
1192 << csv_escape(error.str())
1196 std::cout <<
"[INFO] Wrote " << out_path <<
"\n";
1199 }
catch (
const std::exception& e) {
1200 std::cerr <<
"[FATAL] " << e.what() <<
"\n";
1203 std::cerr <<
"[FATAL] Unknown exception\n";