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"
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
-----
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"
- 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.
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
- 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
- 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
- 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
-----
- 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.
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
- 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
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
- 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))