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

q^2 dependence in Wilson coefficients #169

Closed CAManzari closed 2 years ago

CAManzari commented 3 years ago

Hi all, is it currently possible to define a q^2-dependent Wilson coefficient (e.g C9 or C10) and make b->sll predictions? It would be useful to study the effect of light resonances.

DavidMStraub commented 3 years ago

It's possible, I did that for https://arxiv.org/abs/1704.06188, but it requires diving into the source code and messing with functions that are originally meant for SM contributions are not exposed in a user-friendly way as the short-distance NP contributions are.

peterstangl commented 3 years ago

I think the probably easiest and most straight forward way to use q^2-dependent Wilson coefficients for observable predictions in flavio is to use them only for oberservables that are differential in q^2. To do this, one can use flavio as it is and there is no need to dive into the source code or to use internal functions. Then, in order to get a prediction for an observable that is binned in q^2, one can numerically integrate a very simple user-defined function of q^2. This function just has to define the q^2-dependent Wilson coefficients, use them to predict the q^2-differential observable, and return the prediction. I have used this method for https://arxiv.org/abs/2107.07518 and reproduced some results from https://arxiv.org/abs/1704.06188 as a cross check.

A limitation of the above described method is that certain binned observables are given in terms of a ratio (or even more complicated function) of q^2 integrals. While for some cases (e.g. LFU ratios like RK), the q^2-differential numerator and denominator are both available as observables in flavio, in other cases (e.g. angular observables) one might need to use some internal flavio functions to obtain the q^2-dependent integrands.

CAManzari commented 3 years ago

Thanks for this nice solution. For the prediction of a few observables it is perfect, but it does not seem very efficient with several observables. In addition, is it possible to use these user-defined functions with the Likelihood class?

DavidMStraub commented 3 years ago

I still have the scripts I used back then, but I am almost 100% sure what @peterstangl suggests is better...

peterstangl commented 3 years ago

For the prediction of a few observables it is perfect, but it does not seem very efficient with several observables.

In principle it should be just as efficient as the predictions of the binned observables done directly in flavio (in terms of q^2-independent Wilson coefficients). If your q^2 integration is considerably slower, you could try using the same integration routines as used in the flavio implementation. In particular, for low q^2 you could use https://github.com/flav-io/flavio/blob/3b8032913b79d01a48190ca7ab3366ff67b70173/flavio/physics/bdecays/bvll/observables.py#L380-L393

In addition, is it possible to use these user-defined functions with the Likelihood class?

You can replace the binned observables by your own implementation (see https://flav-io.github.io/docs/add-observable.html). To use it in the Likelihood class, you would need to define new parameters (like the mass and the coupling of your light resonance) and use these parameters as fit parameters (see https://flav-io.github.io/docs/add-parameter.html).

CAManzari commented 3 years ago

Thank you for the explanation! This solved my last doubts.