OscProb
PMNS_NUNM.h
Go to the documentation of this file.
1
20
21#ifndef PMNS_NUNM_H
22#define PMNS_NUNM_H
23
24#include "Definitions.h"
25#include "PMNS_Fast.h"
26#include <Eigen/Dense>
27
28namespace OscProb {
29
30 class PMNS_NUNM : public PMNS_Fast {
31 public:
32 PMNS_NUNM(int scale = 0);
33 virtual ~PMNS_NUNM();
34
36 virtual void SetAlpha(int i, int j, double val,
37 double phase); // i, j between 0 and 2
38
40 virtual complexD GetAlpha(int i, int j);
41
43 void SetNUNM(double alpha_11, double alpha_21, double alpha_31,
44 double alpha_22, double alpha_32, double alpha_33);
45
46 // Set the diagonal real NUNM parameters
47 virtual void SetAlpha_11(double a);
48 virtual void SetAlpha_22(double a);
49 virtual void SetAlpha_33(double a);
50
51 // Set the off-diagonal complex NUNM parameters
52 virtual void SetAlpha_21(double a,
53 double phi);
54 virtual void SetAlpha_31(double a,
55 double phi);
56 virtual void SetAlpha_32(double a,
57 double phi);
58 virtual void SetFracVnc(double f);
59 virtual matrixD ProbMatrix(int nflvi, int nflvf);
60
61 protected:
62 virtual void UpdateHam();
63 virtual void Propagate();
64 virtual void PropagatePath(NuPath p);
67 void InitMatrix();
68
69 int fscale;
70 double fracVnc; // set fraction of matter potential affecting NC
72
73 Eigen::Matrix<std::complex<double>, 3, 3> X;
74 Eigen::Matrix<std::complex<double>, 3, 3> Alpha;
75 Eigen::Matrix<std::complex<double>, 3, 3> V;
76 Eigen::Matrix<std::complex<double>, 3, 3> Ham;
77 };
78
79} // namespace OscProb
80
81#endif
82
Implementation of oscillations of neutrinos in matter in a three-neutrino framework.
Definition: PMNS_Fast.h:40
Implementation of oscillations of neutrinos in matter in a three-neutrino framework with Non unitary ...
Definition: PMNS_NUNM.h:30
virtual void SetAlpha_21(double a, double phi)
Set alpha_21 parameter.
Definition: PMNS_NUNM.cxx:202
virtual void SetFracVnc(double f)
Definition: PMNS_NUNM.cxx:239
void SetNUNM(double alpha_11, double alpha_21, double alpha_31, double alpha_22, double alpha_32, double alpha_33)
Set the NUNM parameters all at once.
Definition: PMNS_NUNM.cxx:58
virtual void SetAlpha_31(double a, double phi)
Set alpha_31 parameter.
Definition: PMNS_NUNM.cxx:214
PMNS_NUNM(int scale=0)
Constructor.
Definition: PMNS_NUNM.cxx:29
virtual void SetAlpha(int i, int j, double val, double phase)
Set any given NUNM parameter.
Definition: PMNS_NUNM.cxx:93
Eigen::Matrix< std::complex< double >, 3, 3 > Alpha
Definition: PMNS_NUNM.h:74
virtual void Propagate()
Definition: PMNS_NUNM.cxx:338
virtual matrixD ProbMatrix(int nflvi, int nflvf)
Definition: PMNS_NUNM.cxx:264
Eigen::Matrix< std::complex< double >, 3, 3 > Ham
Definition: PMNS_NUNM.h:76
virtual void SetAlpha_11(double a)
Set alpha_11 parameter.
Definition: PMNS_NUNM.cxx:168
virtual ~PMNS_NUNM()
Destructor.
Definition: PMNS_NUNM.cxx:42
virtual void PropagatePath(NuPath p)
Definition: PMNS_NUNM.cxx:352
Eigen::Matrix< std::complex< double >, 3, 3 > X
Definition: PMNS_NUNM.h:73
virtual void SetAlpha_32(double a, double phi)
Set alpha_32 parameter.
Definition: PMNS_NUNM.cxx:226
vectorC ApplyAlphaDagger(vectorC fState)
Definition: PMNS_NUNM.cxx:307
virtual void SetAlpha_22(double a)
Set alpha_22 parameter.
Definition: PMNS_NUNM.cxx:179
virtual complexD GetAlpha(int i, int j)
Get any given NUNM parameter.
Definition: PMNS_NUNM.cxx:139
vectorC fNuStateBuffer
Definition: PMNS_NUNM.h:71
virtual void UpdateHam()
Definition: PMNS_NUNM.cxx:388
virtual void SetAlpha_33(double a)
Set alpha_33 parameter.
Definition: PMNS_NUNM.cxx:190
Eigen::Matrix< std::complex< double >, 3, 3 > V
Definition: PMNS_NUNM.h:75
vectorC ApplyAlpha(vectorC fState)
Definition: PMNS_NUNM.cxx:323
Some useful general definitions.
Definition: Absorption.h:6
std::complex< double > complexD
Definition: Definitions.h:21
std::vector< complexD > vectorC
Definition: Definitions.h:22
std::vector< vectorD > matrixD
Definition: Definitions.h:19
A struct representing a neutrino path segment.
Definition: NuPath.h:34