def test_bs_timedep(self): q2 = 3 wc_obj = flavio.WilsonCoefficients() par = flavio.default_parameters.get_central_all() B = 'Bs' V = 'phi' l = 'mu' # a set of parameters with y_s=0! par_y0 = par.copy() par_y0['DeltaGamma/Gamma_Bs']=0 # compare without lifetime effect: must be equal! self.assertEqual( observables.bvll_obs( observables.dGdq2_ave, q2, wc_obj, par_y0, B, V, l), observables_bs.bsvll_obs( observables_bs.dGdq2_ave_Bs, q2, wc_obj, par_y0, B, V, l)) self.assertEqual( observables.bvll_obs( observables.FL, q2, wc_obj, par_y0, B, V, l), observables_bs.bsvll_obs( observables_bs.FL_Bs, q2, wc_obj, par_y0, B, V, l)) for i in [3, 4, 7]: # S3,4,7 self.assertEqual( observables.bvll_obs( lambda J, J_bar: observables.S_experiment(J, J_bar, i), q2, wc_obj, par_y0, B, V, l), observables_bs.bsvll_obs( lambda y, J, J_bar, J_h: observables_bs.S_experiment_Bs(y, J, J_bar, J_h, i), q2, wc_obj, par_y0, B, V, l)) # check that the phase phi has the right convention q_over_p = flavio.physics.mesonmixing.observables.q_over_p(wc_obj, par, B) phi = cmath.phase(-q_over_p) # the phase of q/p self.assertAlmostEqual(phi, 0.04, delta=0.01) # compare WITH lifetime effect: angular observables must be similar delta = 0.01 self.assertAlmostEqual( observables.bvll_obs( observables.FL, q2, wc_obj, par, B, V, l)/ observables_bs.bsvll_obs( observables_bs.FL_Bs, q2, wc_obj, par, B, V, l), 1, delta=delta) for i in [4, 7]: # S4,7 self.assertAlmostEqual( observables.bvll_obs( lambda J, J_bar: observables.S_experiment(J, J_bar, i), q2, wc_obj, par, B, V, l)/ observables_bs.bsvll_obs( lambda y, J, J_bar, J_h: observables_bs.S_experiment_Bs(y, J, J_bar, J_h, i), q2, wc_obj, par, B, V, l), 1, delta=delta) for i in [3]: # S3: look at differnece only self.assertAlmostEqual( observables.bvll_obs( lambda J, J_bar: observables.S_experiment(J, J_bar, i), q2, wc_obj, par, B, V, l) - observables_bs.bsvll_obs( lambda y, J, J_bar, J_h: observables_bs.S_experiment_Bs(y, J, J_bar, J_h, i), q2, wc_obj, par, B, V, l), 0, delta=0.01) # compare WITH lifetime effect: BR suppressed by ~6%! self.assertAlmostEqual( observables.bvll_obs( observables.dGdq2_ave, q2, wc_obj, par, B, V, l)/ observables_bs.bsvll_obs( observables_bs.dGdq2_ave_Bs, q2, wc_obj, par, B, V, l), 1.06, delta=0.02) # and now just check a few observables to see if any errors are raised flavio.sm_prediction("FL(Bs->phimumu)", q2=1) flavio.sm_prediction("S3(Bs->phimumu)", q2=1) flavio.sm_prediction("S4(Bs->phimumu)", q2=1) flavio.sm_prediction("S7(Bs->phimumu)", q2=1)