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
74 virtual void FillCache() {}
75
82 static bool ValidateAndOrder(int& flvi, int& flvj, const char* name);
83
90 static bool ValidateCoord(int coord, const char* coordName,
91 const char* paramName);
92
93 // ------------------------------------------------------------------------
94 // Sidereal-frequency constants
95 // ------------------------------------------------------------------------
97 static constexpr double kSiderealDayHours = 23.9344696;
98
100 static constexpr double kOmegaSidereal = 2.0 * M_PI / kSiderealDayHours;
101
102 // ------------------------------------------------------------------------
103 // SME coefficients (real; only the upper triangle in flavour indices is
104 // used)
105 // ------------------------------------------------------------------------
106 double fa[3][3][3];
107 double fc[3][3][3][3];
108
109 // ------------------------------------------------------------------------
110 // Geometry / time state
111 // ------------------------------------------------------------------------
112 double fN[3];
113 double fTime;
114
115 private:
116 double fChi;
118 };
119
120} // namespace OscProb
121
122#endif
123
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 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