Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion .github/workflows/check+deploy.yaml
Original file line number Diff line number Diff line change
Expand Up @@ -63,7 +63,7 @@ jobs:
python3 -m pip install dist/wilson-*.whl

- name: Upload build as artifact
uses: actions/upload-artifact@v1
uses: actions/upload-artifact@v4
with:
name: wilson-dist-${{ github.sha }}
path: dist
Expand Down
38 changes: 35 additions & 3 deletions wilson/classes.py
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
"""Main classes used at the top level of the wilson package:

`Wilson`: main interface to the wilson package, providing automatic running
and matching in SMEFT and WET
and matching in SMEFT and WET and running within nuSMEFT.

`RGsolution`: Class representing a continuous solution to the
SMEFT and WET RGEs to be used for plotting.
Expand All @@ -17,6 +17,9 @@
import voluptuous as vol
import warnings

from wilson.run.nusmeft import EFTevolve
from wilson.run.nusmeft import beta_nusmeft

class ConfigurableClass:
"""Class that provides the functionality to set and get configuration
options.
Expand Down Expand Up @@ -107,6 +110,8 @@ class Wilson(ConfigurableClass):

# default config options:
# dictionary with option name as 'key' and default option value as 'value'

# dictionary with option name as 'key' and default option value as 'value'
_default_options = {'smeft_accuracy': 'integrate',
'qed_order': 1,
'qcd_order': 1,
Expand All @@ -115,6 +120,8 @@ class Wilson(ConfigurableClass):
'mb_matchingscale': 4.2,
'mc_matchingscale': 1.3,
'parameters': {},
'yukawa_scale_in': {},
'gauge_higgs_scale_in': {}
}

# option schema:
Expand All @@ -128,7 +135,8 @@ class Wilson(ConfigurableClass):
'mb_matchingscale': vol.Coerce(float),
'mc_matchingscale': vol.Coerce(float),
'parameters': vol.Schema({vol.Extra: vol.Coerce(float)}),
})
'yukawa_scale_in' : vol.Schema( { vol.In(['Gu', 'Gd', 'Ge', 'Gn']): vol.All(vol.All(vol.Length (min=3, max=3)), vol.Length(min=3, max=3)) } ),
'gauge_higgs_scale_in': vol.Schema({vol.In(['g', 'gp', 'gs', 'Lambda', 'm2']): vol.Coerce(float)}) })

def __init__(self, wcdict, scale, eft, basis):
"""Initialize the `Wilson` class.
Expand All @@ -149,6 +157,12 @@ def __init__(self, wcdict, scale, eft, basis):
self.wc.validate()
self._cache = {}

def update_dim4_running(self):
par = {}
par.update(self.get_option('yukawa_scale_in'))
par.update(self.get_option('gauge_higgs_scale_in'))
return par

def __hash__(self):
"""Return a hash of the `Wilson` instance.
The hash changes when Wilson coefficient values or options are modified.
Expand Down Expand Up @@ -239,7 +253,7 @@ def match_run(self, scale, eft, basis, sectors='all'):
wc_out = smeft.run(scale, accuracy=smeft_accuracy).translate(basis)
self._set_cache('all', scale, 'SMEFT', wc_out.basis, wc_out)
return wc_out
else:
elif eft in ['WET', 'WET-4', 'WET-3']:
# if SMEFT -> WET-x: match to WET at the EW scale
wc_ew = self._get_from_cache(sector='all', scale=scale_ew, eft='WET', basis='JMS')
if wc_ew is None:
Expand All @@ -250,6 +264,24 @@ def match_run(self, scale, eft, basis, sectors='all'):
wc_ew = smeft.run(scale_ew, accuracy=smeft_accuracy).match('WET', 'JMS', parameters=self.matching_parameters)
self._set_cache('all', scale_ew, wc_ew.eft, wc_ew.basis, wc_ew)
wet = WETrunner(wc_ew, **self._wetrun_opt())
else:
raise ValueError(f"Output EFT {eft} unknown or not supported")

# nuSMEFT
elif self.wc.eft == 'nuSMEFT':
smeft_accuracy = self.get_option('smeft_accuracy')
if eft == 'nuSMEFT':
# if input and output EFT just nuSMEFT, just run.
nusmeft = EFTevolve(self.wc.translate('Warsaw', sectors=translate_sectors, parameters=self.parameters),beta_nusmeft.nubeta)
nusmeft.ext_par_scale_in(self.update_dim4_running())
wc_out = nusmeft.run(scale, accuracy=smeft_accuracy).translate(basis)
self._set_cache('all', scale, 'nuSMEFT', wc_out.basis, wc_out)
return wc_out
else:
raise ValueError(f"Output EFT {eft} unknown or not supported")



elif self.wc.eft in ['WET', 'WET-4', 'WET-3']:
wet = WETrunner(self.wc.translate('JMS', parameters=self.parameters, sectors=translate_sectors), **self._wetrun_opt())
else:
Expand Down
1 change: 1 addition & 0 deletions wilson/run/__init__.py
Original file line number Diff line number Diff line change
Expand Up @@ -2,4 +2,5 @@


from . import smeft
from . import nusmeft
from . import wet
11 changes: 11 additions & 0 deletions wilson/run/nusmeft/__init__.py
Original file line number Diff line number Diff line change
@@ -0,0 +1,11 @@
"""SMEFT and nuSMEFT renormalization group evolution.

Based on SMEFT: arXiv:1308.2627, arXiv:1310.4838, and arXiv:1312.2014.
nuSMEFT: arxiv:2103.04441, arxiv:2010.12109

SMEFT part Ported from the [DsixTools](https://dsixtools.github.io) Mathematica package.
"""
from . import beta_nusmeft
from . import classes
from . import definitions
from .classes import EFTevolve
Loading