Skip to content

hadrophilic_scalar_mediator

get_model(mass)

TODO: Add docstring.

Source code in darkmagic/benchmark_models/hadrophilic_scalar_mediator.py
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
def get_model(mass: str) -> Model:
    """
    TODO: Add docstring.
    """
    coeff_prefactor = {
        "1": {"e": 0, "p": 1, "n": 1},
    }

    coeff_func = {
        "1": {"p": one, "n": one},
    }

    if mass == "heavy":

        def F_mediator_propagator(grid: SphericalGrid) -> np.array:
            return np.ones_like(grid.q_norm)

        def reference_cross_section(m_chi: np.array) -> np.array:
            return np.pi * reduced_mass(m_chi, const.m_n) ** (-2)
    elif mass == "light":

        def F_mediator_propagator(grid: SphericalGrid) -> np.array:
            return grid.q_norm ** (-2)

        def reference_cross_section(m_chi: np.array) -> np.array:
            q0 = m_chi * const.V0
            return np.pi * reduced_mass(m_chi, const.m_n) ** (-2) * (q0) ** 4

    else:
        raise ValueError(
            "Unknown mass for the hadrophilic scalar mediator. "
            "Only 'light' and 'heavy' are supported."
        )

    return Model(
        f"{mass.capitalize()} Hadrophilic Scalar Mediator",
        coeff_prefactor,
        coeff_func,
        F_mediator_propagator,
        reference_cross_section,
        shortname=f"{mass[0]}sm",
    )