pisa.stages.osc package

Subpackages

Submodules

pisa.stages.osc.decay_params module

DecayParams: Characterize neutrino decay parameters

(alpha3)

class pisa.stages.osc.decay_params.DecayParams[source]

Bases: object

Holds neutrino decay parameters, i.e., alpha

Parameters:

decay_alpha3 (float) – expected to be given in [eV^2]

decay_alpha3

Cf. parameters

Type:

float

decay_matrix
Type:

3d complex array

property decay_alpha3

alpha3

property decay_matrix

Neutrino decay matrix

pisa.stages.osc.decoherence module

Implementing an environmentally-induced decoherence model for neutrino oscillations Based on reference [1], which uses an energy-indepedence decoherence matrix in vacuum

References

[1] arxiv:1702.04738

class pisa.stages.osc.decoherence.DecoherenceParams(deltam21, deltam31, theta12, theta13, theta23, deltacp, gamma21, gamma31, gamma32)[source]

Bases: OscParams

Container for decoherence oscillation params This includes standard oscillation params plus additional ‘Gamma’ terms parameterising decoherence gamma21,31,32 params have units of energy

pisa.stages.osc.decoherence.calc_decoherence_probs(decoh_params, flav, energy, baseline, prob_e, prob_mu, prob_tau, two_flavor=False)[source]

Oscillation probability calculator function, with decoherence included

Parameters:
  • decoh_params – DecoherenceParams instance

  • flav – str : Neutrino flavor

  • energy – Neutrino true energy values as float(s), either a single value or an array If no units attached, must be [GeV]

  • baseline – Neutrino true propagation distance values as float(s), either a single value or an array If no units attached, must be [km]

  • prob_e – Array of floats of same dimensions as energy and baseline. Will be filled with probabilities to oscillate to a nue

  • prob_mu – Array of floats of same dimensions as energy and baseline. Will be filled with probabilities to oscillate to a numu

  • prob_tau – Array of floats of same dimensions as energy and baseline. Will be filled with probabilities to oscillate to a nutau

  • two_flavor – bool : Flag indicating whether a two- or 3-flavor model should be used

class pisa.stages.osc.decoherence.decoherence(**std_kwargs)[source]

Bases: Stage

PISA Pi stage representing oscillations in the presence of decoherence

Parameters:

params

Expected contents of params ParamSet: ..

detector_depth : float
earth_model : PREM file path
prop_height : quantity (dimensionless)
YeI : quantity (dimensionless)
YeO : quantity (dimensionless)
YeM : quantity (dimensionless)
theta12 : quantity (angle)
theta13 : quantity (angle)
theta23 : quantity (angle)
deltam21 : quantity (mass^2)
deltam31 : quantity (mass^2)
deltacp : quantity (angle)
gamma12 : quantity (energy)
gamma13 : quantity (energy)
gamma23 : quantity (energy)

Expected container keys are ..

"true_energy"
"true_coszen"
"weights"
"nubar"
"flav"
"sys_flux"

apply_function()[source]

Implement in services (subclasses of Stage)

calc_probs(nubar, e_array, len_array, out)[source]
compute_function()[source]

Implement in services (subclasses of Stage)

setup_function()[source]

Implement in services (subclasses of Stage)

pisa.stages.osc.decoherence.init_test(**param_kwargs)[source]

Initialisation example

pisa.stages.osc.external module

PISA pi stage for the calculation of earth layers and osc. probabilities

class pisa.stages.osc.external.external(**std_kwargs)[source]

Bases: Stage

Use an external function to calculate oscillation probabilities

Parameters:
  • params

    osc_probcallable

    the external function

    Expected params ..

    detector_depth : float
    earth_model : PREM file path
    prop_height : quantity (dimensionless)
    YeI : quantity (dimensionless)
    YeO : quantity (dimensionless)
    YeM : quantity (dimensionless)
    

    Expected container keys are ..

    "true_energy"
    "true_coszen"
    "nubar"
    "flav"
    "nu_flux"
    "weights"
    

  • **kwargs – Other kwargs are handled by Stage

  • -----

apply_function()[source]

Implement in services (subclasses of Stage)

compute_function()[source]

Implement in services (subclasses of Stage)

setup_function()[source]

Implement in services (subclasses of Stage)

pisa.stages.osc.external.init_test(**param_kwargs)[source]

Initialisation example

pisa.stages.osc.globes module

PISA pi stage wrapping GLoBES for the calculation of neutrino oscillation probabilities.

Allows for the calculation of sterile neutrino oscillation probabilities. This needs Andrii’s GLoBES wrapper, which has been forked to be made compatible with Python3:

https://github.com/atrettin/GLoBES_wrapper

To import, this stage takes as input the path to the GLoBES wrapper. This is necessary because GLoBES has to be imported while in the wrapper directory.

class pisa.stages.osc.globes.globes(earth_model, globes_wrapper, detector_depth=<Quantity(2.0, 'kilometer')>, prop_height=<Quantity(20.0, 'kilometer')>, **std_kwargs)[source]

Bases: Stage

GLoBES PISA Pi class

Parameters:
  • earth_model (PREM file path)

  • globes_wrapper (path to globes wrapper)

  • detector_depth (float)

  • prop_height (quantity (dimensionless))

  • params (ParamSet or sequence with which to instantiate a ParamSet.) –

    Expected params ..

    theta12 : quantity (angle)
    theta13 : quantity (angle)
    theta23 : quantity (angle)
    deltam21 : quantity (mass^2)
    deltam31 : quantity (mass^2)
    deltam41 : quantity (mass^2)
    theta24 : quantity (angle)
    theta34 : quantity (angle)
    deltacp : quantity (angle)
    

    Expected container keys are ..

    "true_energy"
    "true_coszen"
    "nubar"
    "flav"
    "nu_flux"
    "weights"
    

apply_function()[source]

Implement in services (subclasses of Stage)

calc_prob_e_mu(flav, nubar, energy, rho_array, len_array)[source]

Calculates probability for an electron/muon neutrino to oscillate into the flavour of a given event, including effects from sterile neutrinos.

calc_prob_nonsterile(flav, nubar, energy, rho_array, len_array)[source]

Calculates the probability of a given neutrino to oscillate into another non-sterile flavour.

compute_function()[source]

Implement in services (subclasses of Stage)

setup_function()[source]

Implement in services (subclasses of Stage)

pisa.stages.osc.globes.init_test(**param_kwargs)[source]

Initialisation example

pisa.stages.osc.layers module

Calculation of Earth layers and electron densities.

class pisa.stages.osc.layers.Layers(prem_file, detector_depth=1.0, prop_height=2.0)[source]

Bases: object

Calculate the path through earth for a given layer model with densities (PREM [1]), the electron fractions (Ye) and an array of coszen values

Parameters:
  • prem_file (str) – path to PREM file containing layer radii and densities as white space separated txt

  • detector_depth (float) – depth of detector underground in km

  • prop_height (float) – the production height of the neutrinos in the atmosphere in km (?)

max_layers

maximum number of layers (this is important for the shape of the output! if less than maximumm number of layers are crossed, it’s filled up with 0s

Type:

int

n_layers

number of layers crossed for every CZ value

Type:

1d int array of length len(cz)

density

containing electron-weighted density values and filled up with 0s otherwise

Type:

1d float array of length (max_layers * len(cz))

density_neutron_weighted

containing neutron-weighted density values and filled up with 0s otherwise

Type:

1d float array of length (max_layers * len(cz))

distance

containing distance values and filled up with 0s otherwise

Type:

1d float array of length (max_layers * len(cz))

References

[1] A.M. Dziewonski and D.L. Anderson (1981) “Preliminary reference

Earth model,” Physics of the Earth and Planetary Interiors, 25(4), pp. 297 – 356. http://www.sciencedirect.com/science/article/pii/300031920181900467

calcLayers(cz)[source]
Parameters:

cz (1d float array) – Array of coszen values

calcPathLength(cz)[source]

Calculate path length of the neutrino through an Earth-sized sphere, given the production height, detector depth and zenith angle. Useful if not considering matter effects.

Parameters:

cz (cos(zenith angle), either single float value or an array of float values)

computeMinLengthToLayers()[source]

Deterine the coszen values for which a track will be tangeant to a given layer.

Given the detector radius and the layer radii:

  • A layer will be tangeant if radii<r_detector

  • Given r_detector and r_i, the limit angle will be:

    sin(theta) = r_i / r_detector

that angle can then be expressed back into a cosine using trigonometric identities

property density
property density_neutron_weighted
property distance
property n_layers
scaling(scaling_array)[source]

Multplies scaling factor with densities from earth model

Parameters:

scaling_array (numpy array containing scaling factors for different layers.)

setElecFrac(YeI, YeO, YeM)[source]

Set electron fractions of inner core, outer core, and mantle. Locations of boundaries between each layer come from PREM.

Parameters:
  • YeI (scalars) – Three electron fractions (Ye), where I=inner core, O=outer core, and M=mantle

  • YeO (scalars) – Three electron fractions (Ye), where I=inner core, O=outer core, and M=mantle

  • YeM (scalars) – Three electron fractions (Ye), where I=inner core, O=outer core, and M=mantle

weight_density_to_YeFrac()[source]

Adjust the densities of the provided earth model layers for the different electron fractions in the inner core, outer core and mantle.

weight_density_to_YnFrac()[source]

Adjust the densities of the provided earth model layers for the different neutron fractions in the inner core, outer core and mantle.

pisa.stages.osc.layers.extCalcLayers(cz, r_detector, prop_height, detector_depth, rhos, rhos_neutron_weighted, coszen_limit, radii, max_layers)[source]

Layer density/distance calculator for each coszen specified.

Accelerated with Numba if present.

Parameters:
  • cz (coszen values (array of float))

  • r_detector (radial position of the detector (float))

  • prop_height (height at which neutrinos are assumed to be produced (float))

  • detector_depth (depth at which the detector is buried (float))

  • rhos (densities (already weighted by electron fractions) (ndarray))

  • rhos_neutron_weighted (densities (already weighted by neutron fractions) (ndarray))

  • radii (radii defining the Earth's layer (ndarray))

  • coszen (coszen values corresponding to the radii above (ndarray))

  • max_layers (maximum number of layers it is possible to cross (int))

Returns:

  • n_layers (int number of layers)

  • density (array of electron-weighted densities, flattened from (cz, max_layers))

  • density_neutron_weighted (array of neutron-weighted densities, flattened from (cz, max_layers))

  • distance (array of distances per layer, flattened from (cz, max_layers))

pisa.stages.osc.lri_params module

LRI Params: Charecterize Long Range Interaction mediator

Developed by following osc_params.py and nsi_params.py

class pisa.stages.osc.lri_params.LRIParams[source]

Bases: object

Holds the mediator information of long range interaction:z’ Assumed three anamoly free symmetries, Le_mu, Le_tau, Lmu_tau(by mixing z and z’)).

potential matrix
Type:

Three 2d float array of shape (3,3), one for each symmetry

Potential matrix holding the potential term of three different symmetris, which is a
function of mediator mass, and the coupling constant of the interaction.
property potential_matrix_emu

LRI matter interaction potential matrix e mu symmetry

property potential_matrix_etau

LRI matter interaction potential matrix e tau symmetry

property potential_matrix_mutau

LRI matter interaction potential matrix mu tau symmetry

property v_lri

Potential term of symmetry e mu

pisa.stages.osc.nsi_params module

NSIParams: Characterize non-standard neutrino interaction coupling strengths

merged in by Elisa Lohfink (ellohfin; elohfink@icecube.wisc.edu) to include NSI changes made by Thomas Ehrhardt on his branch: original version can be found in thehrh/pisa nsi_reparameterisation branch

class pisa.stages.osc.nsi_params.NSIParams[source]

Bases: object

Holds non-standard neutrino interaction parameters of neutral current type for propagating neutrinos, interacting with 1st generation Standard Model background quarks (u or d) or electrons in the Earth.

eps_matrix

Hermitian NSI matrix holding the effective epsilon parameters describing strengths of NSI transitions between the two specified neutrino flavors, via NC-type interaction with 1st generation quarks or electrons in the Earth. Flavour-preserving (diagonal) ones are real, while the flavour-changing (off-diagonal) ones are complex. Note that these parameters are not the Lagrangian-level couplings but rather the sums over these weighted by the respective relative number densities (approx. constant) of each possible scattering partner in the Earth.

Type:

2d float array of shape (3, 3)

class pisa.stages.osc.nsi_params.StdNSIParams[source]

Bases: NSIParams

NSI parameters in the standard parameterization.

eps_matrix

Effective NSI coupling matrix.

Type:

2d float array of shape (3, 3)

eps_ee, eps_emu, eps_etau, eps_mumu, eps_mutau, eps_tautau

Effective NSI coupling parameters.

Type:

float or complex

property eps_ee

effective nue-nue NSI coupling parameter

property eps_emu

effective nue-numu NSI coupling parameter

property eps_etau

effective nue-nutau NSI coupling parameter

property eps_matrix
property eps_mumu

effective numu-numu NSI coupling parameter

property eps_mutau

effective numu-nutau NSI coupling parameter

property eps_tautau

effective nutau-nutau NSI coupling parameter

class pisa.stages.osc.nsi_params.VacuumLikeNSIParams[source]

Bases: NSIParams

NSI parameters using a vacuum Hamiltonian-like parameterization.

property alpha1

1-phase

property alpha2

2-phase

property deltansi

NSI phase

property eps_ee

effective nue-nue NSI coupling parameter

property eps_emu

effective nue-numu NSI coupling parameter

property eps_etau

effective nue-nutau NSI coupling parameter

property eps_matrix

Effective NSI coupling matrix.

property eps_mumu

effective numu-numu NSI coupling parameter

property eps_mutau

effective numu-nutau NSI coupling parameter

property eps_prime

Second Hmat eigenvalue (beside eps_scale)

property eps_scale

Generalised matter potential strength scale

property eps_tautau

effective nutau-nutau NSI coupling parameter

property phi12

1-2 angle

property phi13

1-3 angle

property phi23

2-3 angle

pisa.stages.osc.nusquids module

pisa.stages.osc.osc_params module

OscParams: Characterize neutrino oscillation parameters

(mixing angles, Dirac-type CP-violating phase, mass splittings)

changed by Elisa Lohfink (ellohfin; elohfink@icecube.wisc.edu) to include NSI changes made by Thomas Ehrhardt on his branch: original version can be found in thehrh/pisa nsi_reparameterisation branch

class pisa.stages.osc.osc_params.OscParams[source]

Bases: object

Holds neutrino oscillation parameters, i.e., mixing angles, squared-mass differences, and a Dirac-type CPV phase. The neutrino mixing (PMNS) matrix constructed from these parameters is given in the standard 3x3 parameterization. Also holds the generalised matter potential matrix (divided by the matter potential a), i.e. diag(1, 0, 0) for the standard case.

Parameters:
  • dm21 (float) – Mass splittings (delta M^2_{21,31,41}) expected to be given in [eV^2]

  • dm31 (float) – Mass splittings (delta M^2_{21,31,41}) expected to be given in [eV^2]

  • dm41 (float) – Mass splittings (delta M^2_{21,31,41}) expected to be given in [eV^2]

  • sin12 (float) – 1-2, 1-3 and 2-3 mixing angles, interpreted as sin(theta_{ij})

  • sin13 (float) – 1-2, 1-3 and 2-3 mixing angles, interpreted as sin(theta_{ij})

  • sin23 (float) – 1-2, 1-3 and 2-3 mixing angles, interpreted as sin(theta_{ij})

  • deltacp (float) – Value of CPV phase in [rad]

dm21, dm31, dm41

Cf. parameters

Type:

float

sin12, sin13, sin23, sin14

Cf. parameters

Type:

float

theta12, theta13, theta23, theta14

Mixing angles (corresponding to sinXY)

Type:

float

deltacp

Cf. parameters

Type:

float

mix_matrix

Neutrino mixing (PMNS) matrix in standard parameterization. The third dimension holds the real and imaginary parts of each matrix element.

Type:

3d float array of shape (3, 3, 2)

mix_matrix_complex
Type:

3d complex array

mix_matrix_reparam

Reparameterized neutrino mixing matrix, such that CPT invariance of vacuum propagation implemented by 3 simultaneous osc. param. transformations.

Type:

3d float array of shape (3, 3, 2)

mix_matrix_reparam_complex
Type:

3d complex array

dm_matrix

Antisymmetric matrix of squared-mass differences in vacuum

Type:

2d float array of shape (3, 3)

property deltacp

CPV phase

property dm_matrix

Neutrino mass splitting matrix in vacuum

property mix_matrix

Neutrino mixing matrix in its ‘standard’ form

property mix_matrix_complex

Mixing matrix as complex 2-d array

property mix_matrix_reparam

Neutrino mixing matrix reparameterised in a way such that the CPT trafo Hvac -> -Hvac* is exactly implemented by the simultaneous transformations

  • deltamsq31 -> -deltamsq32

  • theta12 -> pi/2 - theta12

  • deltacp -> pi - deltacp

which hence leave vacuum propagation invariant.

This representation follows from the standard form U as diag(exp(i*deltacp), 0, 0) * U * diag(exp(-i*deltacp), 0, 0).

property mix_matrix_reparam_complex

Reparameterised mixing matrix as complex 2-d array

property sin12

Sine of 1-2 mixing angle

property sin13

Sine of 1-3 mixing angle

property sin14

Sine of 1-4 mixing angle

property sin23

Sine of 2-3 mixing angle

property theta12
property theta13
property theta14
property theta23

pisa.stages.osc.prob3 module

PISA pi stage for the calculation of earth layers and osc. probabilities

Maybe it would amke sense to split this up into a separate earth layer stage and an osc. stage….todo

pisa.stages.osc.prob3.init_test(**param_kwargs)[source]

Initialisation example

class pisa.stages.osc.prob3.prob3(nsi_type=None, reparam_mix_matrix=False, neutrino_decay=False, tomography_type=None, lri_type=None, **std_kwargs)[source]

Bases: Stage

Prob3-like oscillation PISA Pi class

Parameters:
  • params

    Expected params ..

    detector_depth : float
    earth_model : PREM file path
    prop_height : quantity (dimensionless)
    YeI : quantity (dimensionless)
    YeO : quantity (dimensionless)
    YeM : quantity (dimensionless)
    density_scale : quantity (dimensionless)
    core_density_scale : quantity (dimensionless)
    innermantle_density_scale : quantity (dimensionless)
    middlemantle_density_scale : quantity (dimensionless)
    theta12 : quantity (angle)
    theta13 : quantity (angle)
    theta23 : quantity (angle)
    deltam21 : quantity (mass^2)
    deltam31 : quantity (mass^2)
    deltacp : quantity (angle)
    eps_scale : quantity(dimensionless)
    eps_prime : quantity(dimensionless)
    phi12 : quantity(angle)
    phi13 : quantity(angle)
    phi23 : quantity(angle)
    alpha1 : quantity(angle)
    alpha2 : quantity(angle)
    deltansi : quantity(angle)
    eps_ee : quantity (dimensionless)
    eps_emu_magn : quantity (dimensionless)
    eps_emu_phase : quantity (angle)
    eps_etau_magn : quantity (dimensionless)
    eps_etau_phase : quantity (angle)
    eps_mumu : quantity(dimensionless)
    eps_mutau_magn : quantity (dimensionless)
    eps_mutau_phase : quantity (angle)
    eps_tautau : quantity (dimensionless)
    decay_alpha3 : quantity (energy^2)
    v_lri : quantity (eV)
    

    Expected container keys are ..

    "true_energy"
    "true_coszen"
    "nubar"
    "flav"
    "nu_flux"
    "weights"
    

  • **kwargs – Other kwargs are handled by Stage

  • -----

apply_function()[source]

Implement in services (subclasses of Stage)

calc_probs(nubar, e_array, rho_array, len_array, out)[source]

wrapper to execute osc. calc

compute_function()[source]

Implement in services (subclasses of Stage)

gen_mat_pot_matrix_complex

Interaction Hamiltonian without the factor sqrt(2)*G_F*N_e.

nsi_type

Type of NSI to assume.

reparam_mix_matrix

Use a PMNS mixing matrix parameterisation that differs from the standard one by an overall phase matrix diag(e^(i*delta_CP), 1, 1). This has no impact on oscillation probabilities in the absence of NSI.

setup_function()[source]

Implement in services (subclasses of Stage)

pisa.stages.osc.scaling_params module

Author : Sharmistha Chattopadhyay Date : August 10, 2023

class pisa.stages.osc.scaling_params.Core_scaling_w_constrain[source]

Bases: object

Returns scaling factors for inner mantle and middle mantle by taking scaling factor of inner core and outer core as input. Scaling factor of inner and outer core = core_density_scale (alpha) Scaling factor of inner mantle = beta Scaling factor of middle mantle = gamma Outer mantle not scaled This function solves the equations for two constraints: mass of earth and moment of inertia, by taking core_density_scale as an independent parameter, and returns scaling factor factors for inner and middle mantle.

property core_density_scale
is_descending(lst)[source]
is_positive(lst)[source]
property scaling_array
class pisa.stages.osc.scaling_params.Core_scaling_wo_constrain[source]

Bases: object

Takes scaling factors for core, inner mantle and outer mantle from pipeline and stores them in an array

property core_density_scale
property innermantle_density_scale
property middlemantle_density_scale
property scaling_factor_array
class pisa.stages.osc.scaling_params.Mass_scaling[source]

Bases: object

Uses a single scaling factor for all the layers. Scaling factor can be only positive.

property density_scale

pisa.stages.osc.two_nu_osc module

PISA pi stage for the calculation osc. probabilities assuming two-neutrino model

pisa.stages.osc.two_nu_osc.calc_probs(t23, dm31, true_energy, true_coszen)

calculate osc prob of numu to nutau

pisa.stages.osc.two_nu_osc.init_test(**param_kwargs)[source]

Instantiation example

class pisa.stages.osc.two_nu_osc.two_nu_osc(**std_kwargs)[source]

Bases: Stage

two neutrino osc PISA Pi class

Parameters:
  • :: (Expected container keys are ..) – theta : quantity (angle) deltam31 : quantity (mass^2)

  • :: – “true_energy” “true_coszen” “nu_flux” “weights”

Notes

For two-neutrino model, there is only one mass-splitting term Atmospheric mixing angle is aproximated by theta (sin^2(2*theta))

apply_function()[source]

Implement in services (subclasses of Stage)

Module contents