Skip to content

Commit

Permalink
All changes related to nuSMEFT
Browse files Browse the repository at this point in the history
  • Loading branch information
jackypheno committed Oct 26, 2024
1 parent 3edd495 commit bac78fe
Show file tree
Hide file tree
Showing 8 changed files with 883 additions and 3 deletions.
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, nuSMEFT and WET
`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

0 comments on commit bac78fe

Please sign in to comment.