OscProb
PMNS_SiderealLIV.h
Go to the documentation of this file.
1
18
19#ifndef PMNS_SiderealLIV_H
20#define PMNS_SiderealLIV_H
21
22#include "PMNS_Fast.h"
23
24namespace OscProb {
25
26 class PMNS_SiderealLIV : public PMNS_Fast {
27 public:
29 virtual ~PMNS_SiderealLIV();
30
36 virtual void SetA(int flvi, int flvj, int coord, double val);
37 virtual void SetC(int flvi, int flvj, int coord1, int coord2, double val);
38
41 virtual void SetNeutrinoDirection(double zenith, double azimuth);
42
45 virtual void SetTimeHours(double hours);
46
49 virtual void SetColatitude(double chi);
50
57 virtual void SetColatitude(double deg, double min, double sec = 0.0);
58
60 virtual double GetColatitude() const;
61
67 virtual double GetA(int flvi, int flvj, int coord);
68 virtual double GetC(int flvi, int flvj, int coord1, int coord2);
69
70 protected:
72 virtual void UpdateHam();
73
75 virtual void SolveHam();
76
77 virtual void FillCache() {}
78
85 static bool ValidateAndOrder(int& flvi, int& flvj, const char* name);
86
93 static bool ValidateCoord(int coord, const char* coordName,
94 const char* paramName);
95
96 // ------------------------------------------------------------------------
97 // Sidereal-frequency constants
98 // ------------------------------------------------------------------------
100 static constexpr double kSiderealDayHours = 23.9344696;
101
103 static constexpr double kOmegaSidereal = 2.0 * M_PI / kSiderealDayHours;
104
105 // ------------------------------------------------------------------------
106 // SME coefficients (real; only the upper triangle in flavour indices is
107 // used)
108 // ------------------------------------------------------------------------
109 double fa[3][3][3];
110 double fc[3][3][3][3];
111
112 // ------------------------------------------------------------------------
113 // Geometry / time state
114 // ------------------------------------------------------------------------
115 double fN[3];
116 double fTime;
117
118 private:
119 double fChi;
121 };
122
123} // namespace OscProb
124
125#endif
126
Implementation of oscillations of neutrinos in matter in a three-neutrino framework.
Definition: PMNS_Fast.h:40
Implements oscillations with Sidereal LIV as modelled by SME.
virtual void FillCache()
Deactivate cache.
virtual void SetA(int flvi, int flvj, int coord, double val)
virtual double GetC(int flvi, int flvj, int coord1, int coord2)
virtual ~PMNS_SiderealLIV()
Destructor.
virtual void SolveHam()
Solve the full Hamiltonian.
virtual void SetColatitude(double chi)
virtual double GetA(int flvi, int flvj, int coord)
static bool ValidateAndOrder(int &flvi, int &flvj, const char *name)
double fc[3][3][3][3]
cT LIVS parameters (mass dimension 4)
double fa[3][3][3]
aT LIVS parameters (mass dimension 3)
static bool ValidateCoord(int coord, const char *coordName, const char *paramName)
virtual double GetColatitude() const
Get the detector colatitude (chi), in degrees.
static constexpr double kSiderealDayHours
Length of one sidereal day, in hours (IERS/IAU conventional value).
double fTime
Local sidereal time, in hours.
virtual void SetC(int flvi, int flvj, int coord1, int coord2, double val)
virtual void UpdateHam()
Build the full Hamiltonian.
static constexpr double kOmegaSidereal
Angular sidereal frequency, in rad/h.
double fN[3]
Neutrino directional factors (NX, NY, NZ)
virtual void SetNeutrinoDirection(double zenith, double azimuth)
virtual void SetTimeHours(double hours)
Some useful general definitions.
Definition: Absorption.h:6