flav-io / flavio

A Python package for flavour physics phenomenology in the Standard model and beyond
http://flav-io.github.io/
MIT License
71 stars 62 forks source link

Subleading contributions to the B->Vll amplitudes at high q2 #161

Closed langenbruch closed 3 years ago

langenbruch commented 3 years ago

Dear all,

when performing a fit to B->Vll data I noticed that the parameters describing the subleading contributions to the B->Vll amplitudes at high q2 (eg. "Bs->phi deltaC9 c_0 Re" etc.) always converge to the exact minimum of the constraint for me (ie to zero with the uncertainty equal to the external constraint), independent of the data. Looking closer at https://github.com/flav-io/flavio/blob/master/flavio/physics/bdecays/bvll/subleading.py I think I may have found the reason for this behaviour.

Am I correct in thinking that, in the class HelicityAmpsDeltaC_9_shift(HelicityAmpsDeltaC) it should be

        ha['0', 'V'] = self.ha_deltaC(deltaC9_0, 'v')['0', 'V']
        ha['pl', 'V'] = self.ha_deltaC(deltaC9_pl, 'v')['pl', 'V']
        ha['mi', 'V'] = self.ha_deltaC(deltaC9_mi, 'v')['mi', 'V']

instead of

        ha['0', 'V'] = self.ha_deltaC(deltaC9_0, '9')['0', 'V']
        ha['pl', 'V'] = self.ha_deltaC(deltaC9_pl, '9')['pl', 'V']
        ha['mi', 'V'] = self.ha_deltaC(deltaC9_mi, '9')['mi', 'V']

Please let me know if I am missing something and many thanks for having a look!

Cheers, Christoph

peterstangl commented 3 years ago

Dear Christoph,

this indeed looks like a bug. Having the '9' there would add an entry to wc['9'] but keeps wc['v'] at zero in https://github.com/flav-io/flavio/blob/4026e33409155e280f53b2fdba942447523f27ec/flavio/physics/bdecays/bvll/subleading.py#L31-L38 Then in flavio.physics.bdecays.angular.helicity_amps_v, wc['9'] will just be ignored and the result will be zero.

Your solution looks good to me. Can you confirm that this solved the problem?

langenbruch commented 3 years ago

Dear Peter,

many thanks for the quick answer. Indeed, I think it is a simple typo, as the '9' obviously refers to C9, but helicity_amps_v seems to expect wc['v'] for the vector coupling instead (as is done for B->Pll in https://github.com/flav-io/flavio/blob/master/flavio/physics/bdecays/bpll_subleading.py). Setting wc['9'] will be ignored and thus contributions to the uncertainty from the parameterisation of subleading corrections will be set to zero.

From a very quick check I find that this (as expected) has an effect on the uncertainty for observables at large q2. The code

print('SM           <FL>(B0->K*mumu)', "%1.2e" % flavio.sm_prediction('<FL>(B0->K*mumu)', 15.0, 19.0), "+-","%1.2e" % flavio.sm_uncertainty('<FL>(B0->K*mumu)', 15.0, 19.0, N=1000))
print('SM           <dBR/dq2>(B0->K*mumu)', "%1.2e" % flavio.sm_prediction('<dBR/dq2>(B0->K*mumu)', 15.0, 19.0), "+-","%1.2e" % flavio.sm_uncertainty('<dBR/dq2>(B0->K*mumu)', 15.0, 19.0, N=1000))
print('SM           <FL>(Bs->phimumu)', "%1.2e" % flavio.sm_prediction('<FL>(Bs->phimumu)', 15.0, 18.9), "+-","%1.2e" % flavio.sm_uncertainty('<FL>(Bs->phimumu)', 15.0, 18.9, N=1000))
print('SM           <dBR/dq2>(Bs->phimumu)', "%1.2e" % flavio.sm_prediction('<dBR/dq2>(Bs->phimumu)', 15.0, 18.9), "+-","%1.2e" % flavio.sm_uncertainty('<dBR/dq2>(Bs->phimumu)', 15.0, 18.9, N=1000))

before the fix returns

SM           <FL>(B0->K*mumu) 3.40e-01 +- 2.22e-02
SM           <dBR/dq2>(B0->K*mumu) 5.94e-08 +- 6.40e-09
SM           <FL>(Bs->phimumu) 3.41e-01 +- 1.43e-02
SM           <dBR/dq2>(Bs->phimumu) 5.70e-08 +- 4.80e-09

and after fix results in

SM           <FL>(B0->K*mumu) 3.40e-01 +- 3.04e-02
SM           <dBR/dq2>(B0->K*mumu) 5.94e-08 +- 6.90e-09
SM           <FL>(Bs->phimumu) 3.41e-01 +- 2.61e-02
SM           <dBR/dq2>(Bs->phimumu) 5.70e-08 +- 5.27e-09

Should I prepare a pull request?

Cheers, Christoph

peterstangl commented 3 years ago

Dear Christoph,

I fully agree with what you wrote. Thanks for checking the results! Indeed, it should affect the uncertainty at large q2. It would be great if you could provide a pull request! Many thanks!

Cheers, Peter

langenbruch commented 3 years ago

Dear Peter,

Done, thanks for confirming!

Cheers, Christoph