Skip to content

SMEFT running with user-defined SM parameters #38

@peterstangl

Description

@peterstangl

I would like to run SMEFT Wilson coefficients together with user-defined SM parameters, i.e. I don't want to use iteratively determined SM parameters but provide them myself at the high new physics scale. However, if one provides user-defined SM parameters to a Wilson instance w using

w.set_option('parameters',{...})

these parameters will only be used for translating to another SMEFT basis (where the CKM elements are used) or for matching to the WET. But the wilson.run.smeft.SMEFT instance that is created for the running seems to never see these user-defined parameters:

wilson/wilson/classes.py

Lines 212 to 214 in b410f11

smeft = SMEFT(self.wc.translate('Warsaw', sectors=translate_sectors, parameters=self.parameters))
# if input and output EFT ist SMEFT, just run.
wc_out = smeft.run(scale, accuracy=smeft_accuracy).translate(basis)

In principle it is possible to use the wilson.run.smeft.SMEFT class directly for the above problem. But while this class has an argument get_smpar, setting this argument to False can easily lead to an error since in this case the SM parameters are not set at all. Only after updating the dictionary in the attribute C_in using the SM parameters, the run method can be used without producing an error. I think that if get_smpar=False is used, the SM parameters should be provided on instantiation.
But all of this seems to be unnecessarily complicated and error-prone and I think that it should be possible to do the same using the wilson.Wilson class.

I would like to rewrite wilson.run.smeft.SMEFT and wilson.Wilson a bit, but before doing so I though it might be good to get some comments on this from @DavidMStraub @jasonaebischerGIT @jackypheno.

(And maybe the wilson.run.smeft.SMEFT class needs some further rewriting. E.g. the following lines seem to be redundant and lines 66-72 seem to be unnecessary since the same is done by the wilson.util.smeftutil.add_missing function called by wilson.util.smeftutil.wcxf2arrays_symmetrized

C = wilson.util.smeftutil.wcxf2arrays_symmetrized(wc.dict)
# fill in zeros for missing WCs
for k, s in smeftutil.C_keys_shape.items():
if k not in C and k not in smeftutil.SM_keys:
if s == 1:
C[k] = 0
else:
C[k] = np.zeros(s)

)

Metadata

Metadata

Assignees

No one assigned

    Labels

    enhancementNew feature or request

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions