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 61 forks source link

How to use 'flavio.np_prediction' after using 'match_run' #116

Closed Joro20 closed 4 years ago

Joro20 commented 4 years ago

Hi,

I'm trying predict an observable at a particular scale. To be specific, I'm using these steps:

  1. Initialize the instance wc1 = Wilson ({'phil1_13': 1e-10}, scale=1e3, eft='SMEFT', basis='Warsaw')
  2. Run it down to our desired scale wc13 = wc1.match_run (scale=2, eft='WET-3', basis='flavio'). Now, my question is, if I want to predict some NP variable such as BR(tau->phimu), after step 2, how would I do that ? Because nothing has been attributed to wc13, so it seems that I can't use flavio.np_prediction for wc13.

Please help. Thanks.

DavidMStraub commented 4 years ago

Flavio does the running automatically itself. Just use flavio.np_prediction(BR(tau->phimu), wc1). (match_run returns an instance of wcxf.WC, not wilson.Wilson.)

Joro20 commented 4 years ago

But flavio.np_prediction(BR(tau->phimu), wc1) calculate the value at what EFT ? Both WET-3 and WET-4 have the basis 'flavio', right ?

Joro20 commented 4 years ago

Actually, three WETs have 'flavio' as one of their basis. WET, WET-3 and WET-4. So, in that regard, my rephrased question would be how to use flavio.np_prediction(BR(tau->phimu), wc1) at a specific WET ?

DavidMStraub commented 4 years ago

Flavio is supposed to do that correctly and consistently for you. Why would you want to change it?

But if you do want to make low-level changes, I suggest you look in the code and in the documentation.

https://flav-io.github.io/apidoc/flavio/physics/eft.m.html

One of several possibilities is WilsonCoefficients.set_initial_wcxf(wc13).

Joro20 commented 4 years ago

Dear David,

Sorry, I didn't get my answer. My question is simple: The command flavio.np_prediction('Observable', Instance) gives a SINGLE value of the Observable. That value corresponds to which effective theory ? WET or WET-3 or WET-4 ?

DavidMStraub commented 4 years ago

The answer was that flavio chooses the EFT that is appropriate for the process. For tau decays, it is WET-4, since the tau is heavier than the charm. When you want to know, it is best to look inside the source code: https://github.com/flav-io/flavio/blob/master/flavio/physics/taudecays/tauvl.py#L28 Here the EFT chosen is indicated by the value nf_out (this interface stems back to a time from before Wilson).

Joro20 commented 4 years ago

Thanks. That makes more sense now. But what if the NP observable is BR(Z->etau) ? Then following your prescription, will the result be given in WET, as that is the nearest scale for Z decay ?

DavidMStraub commented 4 years ago

No, the rule is not "the closest WET-n" but "the appropriate EFT". For Z decay, the appropriate EFT is of course SMEFT, as there is no Z in WET.

https://github.com/flav-io/flavio/blob/master/flavio/physics/zdecays/gammaz.py#L21-L22

(Note the use of the Wilson-based w.get_wcxf(EFT=...) rather than the legacy w.get_wc(nf_out=...)).

Joro20 commented 4 years ago

So, if I do, flavio.np_prediction(BR(Z->etau), wc1) immediately after defining the wc1 as I mentioned above, the result would be given in SMEFT only. The RGEs will not run down and be matched at low energy, right ?

DavidMStraub commented 4 years ago

If you give them in SMEFT, they will not be matched. But they will be run if you give them at a scale different from mZ.

Joro20 commented 4 years ago

Okay, so to clarify, for running and matching at WET this command mywilson = wc1.match_run(scale =100, eft=’WET’, basis=’flavio’) is okay, but I can't predict any Z-decay observable at this EFT (WET) ?

Joro20 commented 4 years ago

Also it seems that, since running and matching is done automatically in flavio, I can't choose my observables to be evaluated at a particular scale, say at M_Z ! Is that right ?

DavidMStraub commented 4 years ago

but I can't predict any Z-decay observable at this EFT (WET) ?

Of course not. This is logically impossible.

Also it seems that, since running and matching is done automatically in flavio, I can't choose my observables to be evaluated at a particular scale, say at M_Z ! Is that right ?

Yes you can, very easily.

flavio.config["renormalization scale"]["zdecays"] = 1234
flavio.np_prediction("BR(Z->etau)", wc1)

Please read the documentation https://github.com/flav-io/flavio/blob/master/flavio/data/config.yml

Joro20 commented 4 years ago

Thanks a lot. That was very helpful.