Skip to content

API

The user interface is defined in the classes BenchmarkPoint and its subclass BenchmarkPointFromFile. The latter defines additional functions to define a parameter point based on the parameter values given in an input file. An example of such input file can be found here.

BenchmarkPointFromFile class

The base class for a munuSSM parameter point.

From the input parameters the required theoretical predictions can be computed. Various functions exist in order to confront a parameter point with theoretical or experimental constraints.

__init__(self, file) special

Initialize an instance of a parameter point given an input file that defines the values of the free parameters. An example input file can be found here.

Parameters:

Name Type Description Default
file str

Path of inputfile (relative from the current directory or absolute).

required
Source code in munuSSM/benchmarkPointFromFile.py
def __init__(self, file):
    """
    Initialize an instance of a parameter
    point given an input file that defines
    the values of the free parameters.
    An example input file can be found
    [here](https://www.desy.de/~biek/munussmdocu/site/example/).

    Args:
        file (str): Path of inputfile (relative
            from the current directory or absolute).
    """
    super().__init__()
    try:
        self._get_paras(file)
    except FileNotFoundError as err:
        raise err
    # Calc first with MT = MT_POLE and
    # MB = MB_MB to get MUE, ml2 and mv2
    self.MT = self.MT_POLE
    self.MB = self.MB_MB
    self._calc_depend_paras()
    self._solve_tp_eqs()
    self.calc_tree_level_spectrum()
    self._check_for_tachyons()
    # From this set of paras get MT and MB from FH
    self._call_feynhiggs_MTMB()
    # Calculate again with correct MT and MB
    self._calc_depend_paras()
    self._solve_tp_eqs()
    self.calc_tree_level_spectrum()

calc_branching_ratios(self)

Calculates the branching rations of the neutral and charged scalars.

The results are stored in the attributes BranchingRatiosh for the CP-even neutral scalars, BranchingRatiosA for the CP-odd neutral scalars, and BranchingRatiosX for the charged scalars/sleptons.

Source code in munuSSM/benchmarkPoint.py
def calc_branching_ratios(self):
    """
    Calculates the branching rations of
    the neutral and charged scalars.

    The results are stored in the attributes
    `BranchingRatiosh` for the CP-even
    neutral scalars, `BranchingRatiosA` for
    the CP-odd neutral scalars, and
    `BranchingRatiosX` for the charged scalars/sleptons.
    """
    scalarDecays.get_branching_ratios(self, True)
    pseudoscalarDecays.get_branching_ratios(self, True)
    sleptonDecays.get_branching_ratios(self)

calc_loop_masses(self, even=2, odd=1, accu=0.0001, momentum_mode=1)

Calculates the loop-corrected masses at the given order of accuracy. Sets the results as attributes depending on the chosen flags.

The results are stored in the attributes Masshh, Masshh_L or Masshh_2L for the CP-even scalars, and MassAh or MassAh_L for the CP-odd scalars.

Parameters:

Name Type Description Default
even int

Loop level for the prediction of masses of neutral CP-even scalars. Options: 0, 1, 2

2
odd int

Loop level for the prediction of masses of neutral CP-odd scalars. Options: 0, 1

1
accu float

Precision of iterative procedure when momentum-dependence is included. Should be set to much smaller value than the theorical uncertainties of the predictions for the masses.

0.0001
momentum_mode int

If set to 1 then momentum-dependence of radiative corrections is included at the one-loop level. If set to 0 then the momentum is set to zero everywhere.

1
Source code in munuSSM/benchmarkPoint.py
def calc_loop_masses(
        self, even=2, odd=1, accu=1.e-4,
        momentum_mode=1):
    """
    Calculates the loop-corrected
    masses at the given order of accuracy.
    Sets the results as attributes
    depending on the chosen flags.

    The results are stored in the
    attributes `Masshh`, `Masshh_L`
    or `Masshh_2L` for the CP-even
    scalars, and `MassAh` or `MassAh_L`
    for the CP-odd scalars.

    Args:
        even (int): Loop level for the
            prediction of masses of
            neutral CP-even scalars.
            Options: 0, 1, 2
        odd (int): Loop level for the
            prediction of masses of
            neutral CP-odd scalars.
            Options: 0, 1
        accu (float): Precision of iterative
            procedure when momentum-dependence
            is included. Should be set to much
            smaller value than the theorical
            uncertainties of the predictions
            for the masses.
        momentum_mode (int): If set to 1 then
            momentum-dependence of radiative
            corrections is included at the
            one-loop level. If set to 0 then
            the momentum is set to zero everywhere.
    """
    try:
        self.Masshh
    except AttributeError:
        self.calc_tree_level_spectrum()
    if (even != 0) and (even != 1) and (even != 2):
        raise ValueError(
            "Value of even must be 0, 1 or 2. You entered: " +
            str(even))
    if (odd != 0) and (odd != 1):
        raise ValueError(
            "Value of odd must be 0 or 1. You entered: " +
            str(odd))
    if (momentum_mode != 1) and (momentum_mode != 0):
        raise ValueError(
            "Value of momentum_mode must be 1. You entered: " +
            str(momentum_mode))
    if not even == 0:
        self._calc_even_loop_masses(
            even, accu, momentum_mode)
    if not odd == 0:
        self._calc_odd_loop_masses(
            odd, accu, momentum_mode)

higgsBounds interface

In order to apply the collider constraints via the interface to HiggsBounds and HiggsSignals, the subpackage munuSSM.higgsBounds has to be used. Therein, the module util defines two functions to either apply only the HiggsBounds test or to apply both the HiggsBounds and the HiggsSignals test.

check_higgsbounds(pts, dM=3.0)

Performs the HiggsBounds test for the given parameter points.

The results are stored for each item pt contained in pts in the dictionaries pt.HiggsBounds.

Parameters:

Name Type Description Default
pts list

List of instances of BenchmarkPoint class.

required
dM float

Mass uncertainty for the masses of the scalars.

3.0
Source code in munuSSM/higgsBounds/util.py
def check_higgsbounds(pts, dM=3.):
    """
    Performs the HiggsBounds
    test for the given parameter points.

    The results are stored for each item
    `pt` contained in `pts` in the dictionaries
    `pt.HiggsBounds`.

    Args:
        pts (list): List of instances of
            BenchmarkPoint class.
        dM (float): Mass uncertainty for
            the masses of the scalars.
    """
    try:
        len(pts)
    except TypeError:
        pts = [pts]
    for pt in pts:
        pt._setup_higgsbounds(dM)
    hb = _fill_input(pts, dM)
    hb.run_full()
    for n in range(0, hb.nPoints):
        pts[n].HiggsBounds = {
            'result': hb.HBresult_full[n, ...],
            'chan': hb.chan_full[n, ...],
            'obsratio': hb.obsratio_full[n, ...],
            'ncombined': hb.ncombined_full[n, ...],
            'XSsingleH': hb.singleH[n, ...],
            'XSggH': hb.ggH[n, ...],
            'XSbbH': hb.bbH[n, ...],
            'XSVBF': hb.VBF[n, ...],
            'XSWH': hb.WH[n, ...],
            'XSZH': hb.ZH[n, ...],
            'XSttH': hb.ttH[n, ...],
            'XStH_tchan': hb.tH_tchan[n, ...],
            'XStH_schan': hb.tH_schan[n, ...],
            'XSqqZH': hb.qqZH[n, ...],
            'XSggZH': hb.ggZH[n, ...]
        }

check_higgsbounds_higgssignals(pts, dM=3.0)

Performs the HiggsBounds and HiggsSignals test for the given parameter points.

The results are stored for each item pt contained in pts in the dictionaries pt.HiggsBounds and pt.HiggsSignals.

Parameters:

Name Type Description Default
pts list

List of instances of BenchmarkPoint class.

required
dM float

Mass uncertainty for the masses of the scalars.

3.0
Source code in munuSSM/higgsBounds/util.py
def check_higgsbounds_higgssignals(pts, dM=3.):
    """
    Performs the HiggsBounds and HiggsSignals
    test for the given parameter points.

    The results are stored for each item
    `pt` contained in `pts` in the dictionaries
    `pt.HiggsBounds` and `pt.HiggsSignals`.

    Args:
        pts (list): List of instances of
            BenchmarkPoint class.
        dM (float): Mass uncertainty for
            the masses of the scalars.
    """
    try:
        len(pts)
    except TypeError:
        pts = [pts]
    for pt in pts:
        pt._setup_higgsbounds(dM)
    hb = _fill_input(pts, dM)
    hb.run_hbhs_full()
    for n in range(0, hb.nPoints):
        pts[n].HiggsBounds = {
            'result': hb.HBresult_full[n, ...],
            'chan': hb.chan_full[n, ...],
            'obsratio': hb.obsratio_full[n, ...],
            'ncombined': hb.ncombined_full[n, ...],
            'XSsingleH': hb.singleH[n, ...],
            'XSggH': hb.ggH[n, ...],
            'XSbbH': hb.bbH[n, ...],
            'XSVBF': hb.VBF[n, ...],
            'XSWH': hb.WH[n, ...],
            'XSZH': hb.ZH[n, ...],
            'XSttH': hb.ttH[n, ...],
            'XStH_tchan': hb.tH_tchan[n, ...],
            'XStH_schan': hb.tH_schan[n, ...],
            'XSqqZH': hb.qqZH[n, ...],
            'XSggZH': hb.ggZH[n, ...]
        }
        pts[n].HiggsSignals = {
            'Chisq_mu': hb.Chisq_mu[n, ...].item(),
            'Chisq_mh': hb.Chisq_mh[n, ...].item(),
            'Chisq': hb.Chisq[n, ...].item(),
            'nobs': hb.nobs[n, ...].item(),
            'Pvalue': hb.Pvalue[n, ...].item(),
            'Delta_Chisq_mu': hb.Delta_Chisq_mu[n, ...].item(),
            'Delta_Chisq_mh': hb.Delta_Chisq_mh[n, ...].item(),
            'Delta_Chisq': hb.Delta_Chisq[n, ...].item()
        }

CheckPotential class

In order to determine whether the electroweak vacuum of a parameter point is stable or metastable, i.e. sufficiently long-lived in comparison to the age of the universe, the subpackage vacuumStability can be used. The check is performed by creating an instance of the CheckPotential class and subsequently calling the function check_stability.

__init__(self, pt) special

Initializes an instance of the CheckPotential class for the parameter point that was given as input.

During initialization, only the scalar potential and other objects are constructed. In order to perform the analyses one has to subsequently call the function check_stability.

Parameters:

Name Type Description Default
pt BenchmarkPoint

The parameter point for which the stability of the vacuum shall be verified.

required
Source code in munuSSM/vacuumStability/checkPotential.py
def __init__(self, pt):
    """
    Initializes an instance of the
    `CheckPotential` class for the
    parameter point that was given
    as input.

    During initialization, only the
    scalar potential and other objects
    are constructed. In order to perform
    the analyses one has to subsequently
    call the function `check_stability`.

    Args:
        pt (BenchmarkPoint): The parameter
            point for which the stability
            of the vacuum shall be verified.
    """
    self.ew_eps = 1.e-6
    self.hom_grad_eps = 1.e-5
    # Important to only use small
    # letters for module variables
    # of solvetadpoles
    solvetadpoles.g1 = pt.g1.float
    solvetadpoles.g2 = pt.g2.float
    solvetadpoles.lam = pt.lam.float
    solvetadpoles.mlhd2 = pt.mlHd2.float
    solvetadpoles.tlam = pt.Tlam.float
    solvetadpoles.kap = pt.kap.float
    solvetadpoles.yv = pt.Yv.float
    solvetadpoles.tv = pt.Tv.float
    solvetadpoles.tk = pt.Tk.float
    solvetadpoles.mv2 = pt.mv2.float
    solvetadpoles.ml2 = pt.ml2.float
    solvetadpoles.mhd2 = pt.mHd2.float
    solvetadpoles.mhu2 = pt.mHu2.float
    self.Potential = Potential(pt)
    self.ew_min = {
        'vd': pt.vd.float,
        'vu': pt.vu.float,
        'vR': pt.vR.float,
        'vL': pt.vL.float}
    self.check_ew_vacuum()
    self.pt = pt

check_stability(self)

Determines all local minima of the neutral CP-even scalar potential. In case that there are deeper false minima below the electroweak minimum, the function then determines the euclidean bounce action for each possible transition. Based on the values of the bounce actions, one can decide whether a parameter point features a sufficiently long-lived electroweak vacuum.

The results are stored as the attribute Transitions for the parameter point for which the instance of CheckPotential was initialized. When the electroweak minimum is the global minimum, this object is an empty list.

Source code in munuSSM/vacuumStability/checkPotential.py
def check_stability(self):
    """
    Determines all local minima of the
    neutral CP-even scalar potential.
    In case that there are deeper false minima
    below the electroweak minimum, the
    function then determines the euclidean
    bounce action for each possible transition.
    Based on the values of the bounce actions,
    one can decide whether a parameter point
    features a sufficiently long-lived
    electroweak vacuum.

    The results are stored as the attribute
    `Transitions` for the parameter point
    for which the instance of `CheckPotential`
    was initialized. When the electroweak minimum
    is the global minimum, this object is
    an empty list.
    """
    self.all_minima = self._run_HOM4PS2()
    dcs = []
    depth = np.inf
    for i, x in enumerate(self.all_minima):
        V = self.Potential.V0_X(x)
        dc = {
            'vd': x[0],
            'vu': x[1],
            'vR1': x[2],
            'vR2': x[3],
            'vR3': x[4],
            'vL1': x[5],
            'vL2': x[6],
            'vL3': x[7],
            'V0': V}
        dcs.append(dc)
        if V < depth:
            depth = V
            ind_global = i
    for i, dc in enumerate(dcs):
        if i == ind_global:
            dc['global'] = 1
        else:
            dc['global'] = 0
    self.minima = dcs
    self.pt.local_minima = dcs
    self.findTrans()