File DP-propagator.hpp๏ƒ

namespace nuTens๏ƒ
class DPpropagator : public nuTens::Propagator
#include <DP-propagator.hpp>

Solver based on Denton, Parke (2024) (https://arxiv.org/pdf/2405.02400) assumes 3 flavour oscillations and dm^2_21 > 0.

Unnamed Group

inline DPpropagator &setBaseline(float newBaseline)

Setters.

inline DPpropagator &setDensity(float newDensity)
inline DPpropagator &setTheta12(Tensor &newTheta12)
inline DPpropagator &setTheta23(Tensor &newTheta23)
inline DPpropagator &setTheta13(Tensor &newTheta13)
inline DPpropagator &setDeltaCP(Tensor &newDeltaCP)
inline DPpropagator &setDmsq21(Tensor &newDmsq21)
inline DPpropagator &setDmsq31(Tensor &newDmsq31)
inline DPpropagator &setAntiNeutrino(bool newValue)
inline DPpropagator &setSinSquaredThetas(bool newValue)

If true, the \theta_{ij}โ€™s you provide will be interpreted as \sin^2(\theta_{ij}). This will shortcut some of the computations performed by this propagator and speed up calculation time.

inline virtual DPpropagator &setEnergies(Tensor &newEnergies) override

Set the neutrino energies.

Parameters:

newEnergies โ€“ The neutrino energies

Unnamed Group

inline const Tensor &getTheta12()

Getters.

inline const Tensor &getTheta23()
inline const Tensor &getTheta13()
inline const Tensor &getDeltaCP()
inline const Tensor &getDmsp21()
inline const Tensor &getDmsq31()
inline const Tensor &getEnergies()
inline const float &getDensity() const

Public Functions

inline DPpropagator(int NRiterations, dtypes::deviceType device = dtypes::kCPU)
virtual Tensor calculateProbs() override

Calculate the oscilaltion probabilities for the current set of parameters and energies.

template<typename T = bool>
inline virtual void setMatterSolver(const std::shared_ptr<BaseMatterSolver> &newSolver)

Set a matter solver to use to deal with matter effects.

Parameters:

newSolver โ€“ A derivative of BaseMatterSolver

template<typename T = bool>
inline virtual void setMixingMatrix(Tensor &newMatrix)

Set a whole new mixing matrix.

Parameters:

newMatrix โ€“ The new matrix to use

template<typename T = bool>
inline virtual void setMasses(Tensor &newMasses)

Set the masses corresponding to the vacuum hamiltonian eigenstates.

Parameters:

newMasses โ€“ The new masses to use. This tensor is expected to have a batch dimension + 1 more dimensions of size nGenerations. The batch dimension can (and probably should) be 1 and it will be broadcast to match the batch dimension of the energies supplied to calculateProbs(). So dimension should be {1, nGenerations}.

Private Members

Tensor theta12 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor theta13 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor theta23 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor sinSqTheta12 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor sinSqTheta13 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor sinSqTheta23 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor deltaCP = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor dmsq21 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor dmsq31 = Tensor::zeros({1}, dtypes::kComplexFloat, _device, false)๏ƒ
Tensor probsRet = Tensor::zeros({1}, dtypes::kFloat, _device, false)๏ƒ
int NRiterations๏ƒ
float _density = {0.0}๏ƒ
bool interpretSinSquaredThetas = false๏ƒ
template<typename T>
struct fail : public std::false_type๏ƒ