Esempio n. 1
0
def four_particle_decay_test(params):
    os.environ['SPLIT_COLLISION_INTEGRAL'] = ''

    photon = Particle(**SMP.photon)
    neutrino_e = Particle(**SMP.leptons.neutrino_e)
    sterile = Particle(**NuP.dirac_sterile_neutrino(mass=200 * UNITS.MeV))

    theta = 1e-4
    thetas = defaultdict(float, {
        'electron': theta,
    })

    interaction = NuI.sterile_leptons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e],
        leptons=[],
        kind = CollisionIntegralKind.F_f_vacuum_decay
    )

    for inter in interaction:
        inter.integrals = [integral for integral in inter.integrals
                            if sum(reactant.side for reactant in integral.reaction) in [2]]

    universe = Universe(params=params)
    universe.add_particles([photon, neutrino_e, sterile])
    universe.interactions += interaction

    params.update(universe.total_energy_density(), universe.total_entropy())

    universe.update_particles()
    universe.init_interactions()

    collision_integral = sterile.collision_integrals[0].integrate(sterile.grid.TEMPLATE)

    theo_value = (CONST.G_F * theta)**2 * sterile.mass**5 / (192 * numpy.pi**3) / UNITS.MeV

    decay_rate = -(collision_integral * sterile.params.H \
                * sterile.conformal_energy(sterile.grid.TEMPLATE) / sterile.conformal_mass \
                / sterile._distribution) / UNITS.MeV

    ratio = decay_rate / theo_value

    assert any(numpy.abs(val) - 1 < 1e-2 for val in ratio), "Four-particle decay test failed"
Esempio n. 2
0
    sterile,
])

thetas = defaultdict(float, {
    'electron': theta,
})

universe.interactions += (
    SMI.neutrino_interactions(
        leptons=[electron, muon],
        neutrinos=[neutrino_e, neutrino_mu, neutrino_tau]
    )
    + NuI.sterile_leptons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
        leptons=[electron, muon, tau]
    )
)

if sterile.mass > neutral_pion.mass:
    universe.interactions += (
        NuI.sterile_hadrons_interactions(
            thetas=thetas, sterile=sterile,
            neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
            leptons=[electron, muon, tau],
            hadrons=[neutral_pion, charged_pion]
        )
    )

universe.init_kawano(electron=electron, neutrino=neutrino_e)
Esempio n. 3
0
    sterile,
])

thetas = defaultdict(float, {
    'electron': 1e-3,
})

universe.interactions += (
    SMI.neutrino_interactions(
        leptons=[electron],
        neutrinos=[neutrino_e]
    ) +
    NuI.sterile_leptons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e],
        leptons=[electron]
    )
    + NuI.sterile_hadrons_interactions(
        thetas=thetas, sterile=sterile,
        neutrinos=[neutrino_e],
        leptons=[electron],
        hadrons=[neutral_pion]
    )
)

universe.evolve(T_final)


""" ## Plots for comparison with articles """
Esempio n. 4
0
    neutrino_e,
    neutrino_mu,
    neutrino_tau,
    sterile,
])

thetas = defaultdict(float, {
    'electron': theta,
})

universe.interactions += (
    SMI.neutrino_interactions(
        leptons=[electron], neutrinos=[neutrino_e, neutrino_mu, neutrino_tau])
    + NuI.sterile_leptons_interactions(
        thetas=thetas,
        sterile=sterile,
        neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
        leptons=[electron, muon]))

universe.init_kawano(electron=electron, neutrino=neutrino_e)
universe.init_oscillations(SMP.leptons.oscillations_map(),
                           (neutrino_e, neutrino_mu, neutrino_tau))


def step_monitor(universe):
    # explanation of what is inside the file + first row which is a grid on y
    if universe.step == 1:
        for particle in [neutrino_e, neutrino_mu, neutrino_tau, sterile]:
            with open(
                    op.join(
                        folder,
Esempio n. 5
0
})

# kind = CollisionIntegralKind.{}
# {} =
# Full: I_coll = A + f_1 * B
# F_1: I_coll = A
# F_f: I_coll = f_1 * B
# Full_vacuum_decay: I_coll = I_coll = A_vacuum_decay + f_1 * B_vacuum_decay
# F_1_vacuum_decay: I_coll = A_vacuum_decay
# F_f_vacuum_decay: I_coll = f_1 * B_vacuum_decay
kind = CollisionIntegralKind.F_f_vacuum_decay

interaction = NuI.sterile_leptons_interactions(
    thetas=thetas, sterile=sterile,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
#    leptons=[]
    leptons=[electron],
    kind=kind
)

def reaction_type(reaction):
    return sum(reactant.side for reactant in reaction)

#interaction.integrals = [integral for integral in interaction.integrals if reaction_type(integral.reaction) == 2]

for inter in interaction:
    inter.integrals = [integral for integral in inter.integrals
                       if reaction_type(integral.reaction) == 2]

universe.interactions += (interaction)
Esempio n. 6
0
    tau,
    neutrino_e,
    neutrino_mu,
    neutrino_tau,
    neutral_pion,
    charged_pion,
    sterile,
])

thetas = defaultdict(float, {
    'electron': 1e-2,
})

universe.interactions += (NuI.sterile_leptons_interactions(
    thetas=thetas,
    sterile=sterile,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
    leptons=[electron, muon, tau]) + NuI.sterile_hadrons_interactions(
        thetas=thetas,
        sterile=sterile,
        neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
        leptons=[electron, muon, tau],
        hadrons=[neutral_pion, charged_pion]))

universe.evolve(T_final)
""" ## Plots for comparison with articles """
"""
### JCAP10(2012)014, Figure 9
<img src="figure_9.svg" width=100% /> """
"""
### JCAP10(2012)014, Figure 10
Esempio n. 7
0
})

# kind = CollisionIntegralKind.{}
# {} =
# Full: I_coll = A + f_1 * B
# F_1: I_coll = A
# F_f: I_coll = f_1 * B
# Full_vacuum_decay: I_coll = I_coll = A_vacuum_decay + f_1 * B_vacuum_decay
# F_1_vacuum_decay: I_coll = A_vacuum_decay
# F_f_vacuum_decay: I_coll = f_1 * B_vacuum_decay
kind = CollisionIntegralKind.F_f_vacuum_decay

interaction = NuI.sterile_leptons_interactions(
    thetas=thetas,
    sterile=sterile,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
    #    leptons=[]
    leptons=[electron],
    kind=kind)


def reaction_type(reaction):
    return sum(reactant.side for reactant in reaction)


#interaction.integrals = [integral for integral in interaction.integrals if reaction_type(integral.reaction) == 2]

for inter in interaction:
    inter.integrals = [
        integral for integral in inter.integrals
        if reaction_type(integral.reaction) == 2
Esempio n. 8
0
    neutral_pion,
    neutrino_e,
    neutrino_mu,
    neutrino_tau,
    sterile,
])

thetas = defaultdict(float, {'electron': theta})

interactions_SM = SMI.neutrino_interactions(
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau], leptons=[electron])

## N --> mu + e + nu_mu and mu --> e + nu_mu + nu_e
interactions_primary_Ff = NuI.sterile_leptons_interactions(
    thetas=thetas,
    sterile=sterile,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
    leptons=[electron, muon],
    kind=CollisionIntegralKind.F_f_vacuum_decay)

interactions_primary_F1 = NuI.sterile_leptons_interactions(
    thetas=thetas,
    sterile=sterile,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
    leptons=[electron, muon],
    kind=CollisionIntegralKind.F_1_vacuum_decay)

interactions_secondary_Ff = NuI.interactions_decay_products(
    interactions_primary=[interactions_primary_Ff],
    interactions_SM=interactions_SM,
    neutrinos=[neutrino_e, neutrino_mu, neutrino_tau],
    leptons=[electron, muon],