Public Member Functions | Protected Types | Protected Member Functions | Protected Attributes | List of all members
osc::PMNS_NSI Class Reference

#include "/cvmfs/nova.opensciencegrid.org/externals/osclib/v00.07/src/OscLib/PMNS_NSI.h"

Inheritance diagram for osc::PMNS_NSI:
osc::_PMNSOpt< T >

Public Member Functions

 PMNS_NSI ()
 
virtual ~PMNS_NSI ()
 
void SetNSI (double eps_ee, double eps_emu, double eps_etau, double eps_mumu, double eps_mutau, double eps_tautau, double delta_emu=0, double delta_etau=0, double delta_mutau=0)
 
virtual void SetMix (const T &th12, const T &th23, const T &th13, const T &deltacp)
 
virtual void SetDeltaMsqrs (const T &dm21, const T &dm32)
 
virtual void PropMatter (double L, double E, double Ne, int anti=1)
 
virtual void PropMatter (const std::list< double > &L, double E, const std::list< double > &Ne, int anti)
 
virtual void PropVacuum (double L, double E, int anti=1)
 
virtual T P (int flv) const
 
virtual void ResetToFlavour (int flv=1)
 

Protected Types

typedef std::complex< Tcomplex
 

Protected Member Functions

virtual void SolveHam (double E, double Ne, int anti)
 
virtual void BuildHlv ()
 
virtual void SetVacuumEigensystem (double E, int anti)
 

Protected Attributes

double fEps_ee
 NSI parameter ee. More...
 
double fEps_mumu
 NSI parameter mumu. More...
 
double fEps_tautau
 NSI parameter tautau. More...
 
complex fEps_emu
 NSI parameter emu. More...
 
complex fEps_etau
 NSI parameter etau. More...
 
complex fEps_mutau
 NSI parameter mutau. More...
 
bool fResetNSI
 True when NSI parameters are changed. More...
 
T fDm21
 m^2_2 - m^2_1 in vacuum More...
 
T fDm31
 m^2_3 - m^2_1 in vacuum More...
 
T fTheta12
 theta12 mixing angle More...
 
T fTheta23
 theta23 mixing angle More...
 
T fTheta13
 theta13 mixing angle More...
 
T fDeltaCP
 CP violating phase. More...
 
complex fHlv [3][3]
 dimensionless matrix H*lv More...
 
complex fEvec [3][3]
 Eigenvectors of the Hamiltonian. More...
 
T fEval [3]
 Eigenvalues of the Hamiltonian. More...
 
complex fNuState [3]
 The neutrino current state. More...
 
double fCachedNe
 Cached electron density. More...
 
double fCachedE
 Cached neutrino energy. More...
 
int fCachedAnti
 Cached nu/nubar selector. More...
 
bool fBuiltHlv
 Tag to avoid rebuilding Hlv. More...
 

Detailed Description

Definition at line 21 of file PMNS_NSI.h.

Member Typedef Documentation

template<typename T>
typedef std::complex<T> osc::_PMNSOpt< T >::complex
protectedinherited

Definition at line 96 of file PMNSOpt.h.

Constructor & Destructor Documentation

PMNS_NSI::PMNS_NSI ( )

Definition at line 38 of file PMNS_NSI.cxx.

References osc::_PMNSOpt< T >::fCachedAnti, osc::_PMNSOpt< T >::fCachedE, osc::_PMNSOpt< T >::fCachedNe, osc::_PMNSOpt< T >::ResetToFlavour(), osc::_PMNSOpt< T >::SetDeltaMsqrs(), osc::_PMNSOpt< T >::SetMix(), and SetNSI().

39 {
40  this->SetMix(0.,0.,0.,0.);
41  this->SetDeltaMsqrs(0.,0.);
42  this->SetNSI(0.,0.,0.,0.,0.,0.,0.,0.,0.);
43  this->ResetToFlavour(1);
44  fCachedNe = 0.0;
45  fCachedE = 1.0;
46  fCachedAnti = 1;
47 }
double fCachedNe
Cached electron density.
Definition: PMNSOpt.h:123
virtual void ResetToFlavour(int flv=1)
Definition: PMNSOpt.cxx:368
int fCachedAnti
Cached nu/nubar selector.
Definition: PMNSOpt.h:125
virtual void SetMix(const T &th12, const T &th23, const T &th13, const T &deltacp)
Definition: PMNSOpt.cxx:97
virtual void SetDeltaMsqrs(const T &dm21, const T &dm32)
Definition: PMNSOpt.cxx:115
void SetNSI(double eps_ee, double eps_emu, double eps_etau, double eps_mumu, double eps_mutau, double eps_tautau, double delta_emu=0, double delta_etau=0, double delta_mutau=0)
Definition: PMNS_NSI.cxx:54
double fCachedE
Cached neutrino energy.
Definition: PMNSOpt.h:124
PMNS_NSI::~PMNS_NSI ( )
virtual

Definition at line 49 of file PMNS_NSI.cxx.

49  {
50 }

Member Function Documentation

template<typename T >
void _PMNSOpt::BuildHlv ( )
protectedvirtualinherited

Build H*lv, where H is the Hamiltonian in vacuum on flavour basis and lv is the oscillation length

Build H*lv, where H is the Hamiltonian in vacuum on flavour basis and lv is the oscillation length

This is a dimentionless hermitian matrix, so only the upper triangular part needs to be filled

The construction of the Hamiltonian avoids computing terms that are simply zero. This has a big impact in the computation time. This construction is described in DocDB-XXXX (to be posted)

Definition at line 140 of file PMNSOpt.cxx.

References std::cos(), h11, h12, std::sin(), and T.

Referenced by SolveHam().

141 {
142 
143  // Check if anything changed
144  if(fBuiltHlv) return;
145 
146  // Create temp variables
147  T sij, cij, h00, h11, h01;
148  complex expCP(0,0), h02(0,0), h12(0,0);
149 
150  // Hamiltonian in mass base. Only one entry is variable.
151  h11 = fDm21 / fDm31;
152 
153  // Rotate over theta12
154  sij = sin(fTheta12);
155  cij = cos(fTheta12);
156 
157  // There are 3 non-zero entries after rephasing so that h22 = 0
158  h00 = h11 * sij * sij - 1;
159  h01 = h11 * sij * cij;
160  h11 = h11 * cij * cij - 1;
161 
162  // Rotate over theta13 with deltaCP
163  sij = sin(fTheta13);
164  cij = cos(fTheta13);
165  expCP = complex(cos(fDeltaCP), -sin(fDeltaCP));
166 
167  // There are 5 non-zero entries after rephasing so that h22 = 0
168  h02 = (-h00 * sij * cij) * expCP;
169  h12 = (-h01 * sij) * expCP;
170  h11 -= h00 * sij * sij;
171  h00 *= cij * cij - sij * sij;
172  h01 *= cij;
173 
174  // Finally, rotate over theta23
175  sij = sin(fTheta23);
176  cij = cos(fTheta23);
177 
178  // Fill the Hamiltonian rephased so that h22 = -h11
179  // explicit construction of complex vars to avoid problem noted at top of file
180  fHlv[0][0] = complex(h00 - 0.5 * h11, 0);
181  fHlv[1][1] = complex(0.5 * h11 * (cij * cij - sij * sij) + 2 * real(h12) * cij * sij, 0);
182  fHlv[2][2] = -fHlv[1][1];
183 
184  // these are all constructed from complex variables (h02 and h12) so they are ok
185  fHlv[0][1] = h02 * sij + h01 * cij;
186  fHlv[0][2] = h02 * cij - h01 * sij;
187  fHlv[1][2] = h12 - (h11 * cij + 2 * real(h12) * sij) * sij;
188 
189  // Tag as built
190  fBuiltHlv = true;
191 
192 }
T fTheta12
theta12 mixing angle
Definition: PMNSOpt.h:115
T fTheta23
theta23 mixing angle
Definition: PMNSOpt.h:116
T fDm21
m^2_2 - m^2_1 in vacuum
Definition: PMNSOpt.h:113
std::complex< T > complex
Definition: PMNSOpt.h:96
T fDm31
m^2_3 - m^2_1 in vacuum
Definition: PMNSOpt.h:114
T fDeltaCP
CP violating phase.
Definition: PMNSOpt.h:118
TH1F * h11
Definition: plot.C:43
bool fBuiltHlv
Tag to avoid rebuilding Hlv.
Definition: PMNSOpt.h:126
T sin(T number)
Definition: d0nt_math.hpp:132
T fTheta13
theta13 mixing angle
Definition: PMNSOpt.h:117
T cos(T number)
Definition: d0nt_math.hpp:78
TH1D * h12
Definition: plot_hist.C:27
double T
Definition: Xdiff_gwt.C:5
complex fHlv[3][3]
dimensionless matrix H*lv
Definition: PMNSOpt.h:119
template<typename T >
T _PMNSOpt::P ( int  flv) const
virtualinherited

Return the probability of final state in flavour flv

Parameters
flv- final flavor (0,1,2) = (nue,numu,nutau)

Compute oscillation probability of flavour flv

0 = nue, 1 = numu, 2 = nutau

Definition at line 384 of file PMNSOpt.cxx.

References ana::assert(), and norm.

Referenced by osc::OscCalcPMNS_NSI::P().

385 {
386  assert(flv>=0 && flv<3);
387  return norm(fNuState[flv]);
388 }
complex fNuState[3]
The neutrino current state.
Definition: PMNSOpt.h:122
Float_t norm
assert(nhit_max >=nhit_nbins)
template<typename T >
void _PMNSOpt::PropMatter ( double  L,
double  E,
double  Ne,
int  anti = 1 
)
virtualinherited

Propagate a neutrino through a slab of matter

Parameters
L- length of slab (km)
E- neutrino energy in GeV
Ne- electron number density of matter in mole/cm^3
anti- +1 = neutrino case, -1 = anti-neutrino case

.....................................................................

Propagate the current neutrino state over a distance L in km with an energy E in GeV through constant matter of density Ne in mole/cm^3.

Parameters
anti- +1 = neutrino case, -1 = anti-neutrino case

Definition at line 242 of file PMNSOpt.cxx.

References plot_validation_datamc::c, std::cos(), MECModelEnuComparisons::i, calib::j, osc::kKm2eV, and std::sin().

Referenced by osc::OscCalcPMNS_NSI::P().

243 {
244 
245  // Solve Hamiltonian
246  this->SolveHam(E, Ne, anti);
247 
248  // Store coefficients of propagation eigenstates
249  complex nuComp[3];
250 
251  for(int i=0;i<3;i++){
252  nuComp[i] = complex(0,0);
253  for(int j=0;j<3;j++){
254  nuComp[i] += fNuState[j] * conj(fEvec[j][i]);
255  }
256  }
257 
258  for(int i=0;i<3;i++)fNuState[i] = complex(0,0);
259 
260  // Propagate neutrino state
261  for(int j=0;j<3;j++){
262  auto s = sin(-fEval[j] * kKm2eV * L);
263  auto c = cos(-fEval[j] * kKm2eV * L);
264 
265  complex jPart = complex(c, s) * nuComp[j];
266  for(int i=0;i<3;i++){
267  fNuState[i] += jPart * fEvec[i][j];
268  }
269  }
270 
271 }
const XML_Char * s
Definition: expat.h:262
virtual void SolveHam(double E, double Ne, int anti)
Definition: PMNSOpt.cxx:202
static constexpr double L
Float_t E
Definition: plot.C:20
std::complex< T > complex
Definition: PMNSOpt.h:96
const double j
Definition: BetheBloch.cxx:29
complex fNuState[3]
The neutrino current state.
Definition: PMNSOpt.h:122
T fEval[3]
Eigenvalues of the Hamiltonian.
Definition: PMNSOpt.h:121
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
complex fEvec[3][3]
Eigenvectors of the Hamiltonian.
Definition: PMNSOpt.h:120
static const double kKm2eV
km to eV^-1
Definition: PMNSOpt.h:41
template<typename T >
void _PMNSOpt::PropMatter ( const std::list< double > &  L,
double  E,
const std::list< double > &  Ne,
int  anti 
)
virtualinherited

Do several layers in a row. L and Ne must have the same length

Definition at line 278 of file PMNSOpt.cxx.

282 {
283  if (L.size()!=Ne.size()) abort();
284  auto Li = L.begin();
285  auto Lend = L.end();
286  auto Ni = Ne.begin();
287  for (; Li!=Lend; ++Li, ++Ni) {
288  // For very low densities, use vacumm
289  static const double kRhoCutoff = 1.0E-6; // Ne in moles/cm^3
290  if (*Ni<kRhoCutoff) this->PropVacuum(*Li, E, anti);
291  else this->PropMatter(*Li, E, *Ni, anti);
292  }
293 }
virtual void PropVacuum(double L, double E, int anti=1)
Definition: PMNSOpt.cxx:337
static constexpr double L
Float_t E
Definition: plot.C:20
virtual void PropMatter(double L, double E, double Ne, int anti=1)
Definition: PMNSOpt.cxx:242
template<typename T >
void _PMNSOpt::PropVacuum ( double  L,
double  E,
int  anti = 1 
)
virtualinherited

Propagate a neutrino through vacuum

Parameters
L- length of slab (km)
E- neutrino energy in GeV
anti- +1 = neutrino case, -1 = anti-neutrino case

.....................................................................

Propagate the current neutrino state over a distance L in km with an energy E in GeV through vacuum

Parameters
anti- +1 = neutrino case, -1 = anti-neutrino case

Definition at line 337 of file PMNSOpt.cxx.

References stan::math::exp(), MECModelEnuComparisons::i, calib::j, osc::kKm2eV, CLHEP::L, and T.

338 {
339 
340  this->SetVacuumEigensystem(E, anti);
341 
342  complex nuComp[3];
343 
344  for(int i=0;i<3;i++){
345  nuComp[i] = 0;
346  for(int j=0;j<3;j++){
347  nuComp[i] += fNuState[j] * conj(fEvec[j][i]);
348  }
349  }
350 
351  const T km2EvL = kKm2eV*L; // needed for the templated multiplication below to work
352  for(int i=0;i<3;i++){
353  fNuState[i] = 0;
354  for(int j=0;j<3;j++){
355  complex iEval(0.0,fEval[j]);
356  fNuState[i] += exp(-iEval * km2EvL) * nuComp[j] * fEvec[i][j];
357  }
358  }
359 
360 }
virtual void SetVacuumEigensystem(double E, int anti)
Definition: PMNSOpt.cxx:303
static constexpr double L
Float_t E
Definition: plot.C:20
fvar< T > exp(const fvar< T > &x)
Definition: exp.hpp:10
const double j
Definition: BetheBloch.cxx:29
complex fNuState[3]
The neutrino current state.
Definition: PMNSOpt.h:122
T fEval[3]
Eigenvalues of the Hamiltonian.
Definition: PMNSOpt.h:121
complex fEvec[3][3]
Eigenvectors of the Hamiltonian.
Definition: PMNSOpt.h:120
double T
Definition: Xdiff_gwt.C:5
static const double kKm2eV
km to eV^-1
Definition: PMNSOpt.h:41
template<typename T >
void _PMNSOpt::ResetToFlavour ( int  flv = 1)
virtualinherited

Erase memory of neutrino propagate and reset neutrino to pure flavour flv. Preserves values of mixing and mass-splittings

Parameters
flv- final flavor (0,1,2) = (nue,numu,nutau)

Reset the neutrino state back to a pure flavour where it starts

Definition at line 368 of file PMNSOpt.cxx.

References MECModelEnuComparisons::i.

Referenced by osc::OscCalcPMNS_NSI::P(), and PMNS_NSI().

369 {
370  int i;
371  for (i=0; i<3; ++i){
372  if (i==flv) fNuState[i] = complex(1, 0);
373  else fNuState[i] = complex(0, 0);
374  }
375 }
std::complex< T > complex
Definition: PMNSOpt.h:96
complex fNuState[3]
The neutrino current state.
Definition: PMNSOpt.h:122
template<typename T >
void _PMNSOpt::SetDeltaMsqrs ( const T dm21,
const T dm32 
)
virtualinherited

Set the mass-splittings

Parameters
dm21- m2^2-m1^2 in eV^2
dm32- m3^2-m2^2 in eV^2

Set the mass-splittings. These are m_2^2-m_1^2, m_3^2-m_2^2 and m_3^2-m_1^2 in eV^2

Definition at line 115 of file PMNSOpt.cxx.

Referenced by osc::OscCalcPMNS_NSI::P(), and PMNS_NSI().

116 {
117 
118  fDm21 = dm21;
119  fDm31 = dm32 + dm21;
120 
121  if(fDm31==0) fDm31 = 1.0e-12;
122 
123  fBuiltHlv = false;
124 
125 }
T fDm21
m^2_2 - m^2_1 in vacuum
Definition: PMNSOpt.h:113
T fDm31
m^2_3 - m^2_1 in vacuum
Definition: PMNSOpt.h:114
bool fBuiltHlv
Tag to avoid rebuilding Hlv.
Definition: PMNSOpt.h:126
template<typename T >
void _PMNSOpt::SetMix ( const T th12,
const T th23,
const T th13,
const T deltacp 
)
virtualinherited

Set the parameters of the PMNS matrix

Parameters
th12- The angle theta_12 in radians
th23- The angle theta_23 in radians
th13- The angle theta_13 in radians
deltacp- The CPV phase delta_CP in radians

Definition at line 97 of file PMNSOpt.cxx.

References th12, th13, and th23.

Referenced by osc::OscCalcPMNS_NSI::P(), and PMNS_NSI().

98 {
99 
100  fTheta12 = th12;
101  fTheta23 = th23;
102  fTheta13 = th13;
103  fDeltaCP = deltacp;
104 
105  fBuiltHlv = false;
106 
107 }
T fTheta12
theta12 mixing angle
Definition: PMNSOpt.h:115
T fTheta23
theta23 mixing angle
Definition: PMNSOpt.h:116
double th23
Definition: runWimpSim.h:98
double th12
Definition: runWimpSim.h:98
T fDeltaCP
CP violating phase.
Definition: PMNSOpt.h:118
bool fBuiltHlv
Tag to avoid rebuilding Hlv.
Definition: PMNSOpt.h:126
T fTheta13
theta13 mixing angle
Definition: PMNSOpt.h:117
double th13
Definition: runWimpSim.h:98
void PMNS_NSI::SetNSI ( double  eps_ee,
double  eps_emu,
double  eps_etau,
double  eps_mumu,
double  eps_mutau,
double  eps_tautau,
double  delta_emu = 0,
double  delta_etau = 0,
double  delta_mutau = 0 
)

Definition at line 54 of file PMNS_NSI.cxx.

References std::cos(), fEps_ee, fEps_emu, fEps_etau, fEps_mumu, fEps_mutau, fEps_tautau, fResetNSI, and std::sin().

Referenced by osc::OscCalcPMNS_NSI::P(), and PMNS_NSI().

57 {
58 
59  fEps_ee = eps_ee;
60  fEps_mumu = eps_mumu;
61  fEps_tautau = eps_tautau;
62  fEps_emu = eps_emu * complex(cos(delta_emu) , sin(delta_emu));
63  fEps_etau = eps_etau * complex(cos(delta_etau) , sin(delta_etau));
64  fEps_mutau = eps_mutau * complex(cos(delta_mutau) , sin(delta_mutau));
65 
66  fResetNSI = true;
67 
68 }
complex fEps_emu
NSI parameter emu.
Definition: PMNS_NSI.h:40
bool fResetNSI
True when NSI parameters are changed.
Definition: PMNS_NSI.h:43
complex fEps_mutau
NSI parameter mutau.
Definition: PMNS_NSI.h:42
std::complex< T > complex
Definition: PMNSOpt.h:96
double fEps_mumu
NSI parameter mumu.
Definition: PMNS_NSI.h:38
double fEps_tautau
NSI parameter tautau.
Definition: PMNS_NSI.h:39
double fEps_ee
NSI parameter ee.
Definition: PMNS_NSI.h:37
T sin(T number)
Definition: d0nt_math.hpp:132
T cos(T number)
Definition: d0nt_math.hpp:78
complex fEps_etau
NSI parameter etau.
Definition: PMNS_NSI.h:41
template<typename T >
void _PMNSOpt::SetVacuumEigensystem ( double  E,
int  anti 
)
protectedvirtualinherited

Set the eigensystem to the analytic solution of the vacuum Hamiltonian

Parameters
E- neutrino energy in GeV
anti- +1 = neutrino case, -1 = anti-neutrino case

.....................................................................

We know the vacuum eigensystem, so just write it explicitly The eigenvalues depend on energy, so E needs to be provided in GeV

Parameters
anti- +1 = neutrino case, -1 = anti-neutrino case

Definition at line 303 of file PMNSOpt.cxx.

References std::cos(), E, osc::kGeV2eV, std::sin(), and T.

304 {
305 
306  T s12, s23, s13, c12, c23, c13;
307  complex expidelta(cos(fDeltaCP), anti * sin(fDeltaCP));
308 
309  s12 = sin(fTheta12); s23 = sin(fTheta23); s13 = sin(fTheta13);
310  c12 = cos(fTheta12); c23 = cos(fTheta23); c13 = cos(fTheta13);
311 
312  fEvec[0][0] = complex(c12*c13, 0);
313  fEvec[0][1] = complex(s12*c13, 0);
314  fEvec[0][2] = s13*conj(expidelta);
315 
316  fEvec[1][0] = -s12*c23-c12*s23*s13*expidelta;
317  fEvec[1][1] = c12*c23-s12*s23*s13*expidelta;
318  fEvec[1][2] = complex(s23*c13, 0);
319 
320  fEvec[2][0] = s12*s23-c12*c23*s13*expidelta;
321  fEvec[2][1] = -c12*s23-s12*c23*s13*expidelta;
322  fEvec[2][2] = complex(c23*c13, 0);
323 
324  fEval[0] = 0;
325  fEval[1] = fDm21 / (2 * kGeV2eV*E);
326  fEval[2] = fDm31 / (2 * kGeV2eV*E);
327 
328 }
T fTheta12
theta12 mixing angle
Definition: PMNSOpt.h:115
T fTheta23
theta23 mixing angle
Definition: PMNSOpt.h:116
T fDm21
m^2_2 - m^2_1 in vacuum
Definition: PMNSOpt.h:113
static const double kGeV2eV
GeV to eV.
Definition: PMNSOpt.h:43
Float_t E
Definition: plot.C:20
std::complex< T > complex
Definition: PMNSOpt.h:96
T fDm31
m^2_3 - m^2_1 in vacuum
Definition: PMNSOpt.h:114
T fDeltaCP
CP violating phase.
Definition: PMNSOpt.h:118
T fEval[3]
Eigenvalues of the Hamiltonian.
Definition: PMNSOpt.h:121
T sin(T number)
Definition: d0nt_math.hpp:132
T fTheta13
theta13 mixing angle
Definition: PMNSOpt.h:117
T cos(T number)
Definition: d0nt_math.hpp:78
complex fEvec[3][3]
Eigenvectors of the Hamiltonian.
Definition: PMNSOpt.h:120
double T
Definition: Xdiff_gwt.C:5
void PMNS_NSI::SolveHam ( double  E,
double  Ne,
int  anti 
)
protectedvirtual

Solve the full Hamiltonian for eigenvectors and eigenvalues

Parameters
E- neutrino energy in GeV
Ne- electron number density of matter in mole/cm^3
anti- +1 = neutrino case, -1 = anti-neutrino case

Solve the full Hamiltonian with Non-Standard Interactions for eigenvectors and eigenvalues.

Reimplemented from osc::_PMNSOpt< T >.

Definition at line 75 of file PMNS_NSI.cxx.

References genie::units::A, osc::_PMNSOpt< T >::BuildHlv(), E, osc::_PMNSOpt< T >::fBuiltHlv, osc::_PMNSOpt< T >::fCachedAnti, osc::_PMNSOpt< T >::fCachedE, osc::_PMNSOpt< T >::fCachedNe, osc::_PMNSOpt< T >::fDm31, fEps_ee, fEps_emu, fEps_etau, fEps_mumu, fEps_mutau, fEps_tautau, osc::_PMNSOpt< T >::fEval, osc::_PMNSOpt< T >::fEvec, osc::_PMNSOpt< T >::fHlv, fResetNSI, MECModelEnuComparisons::i, calib::j, osc::kGeV2eV, osc::kGf, osc::kK2, and zheevh3().

76 {
77 
78  // Check if anything has changed before recalculating
79  if(Ne!=fCachedNe || E!=fCachedE || anti!=fCachedAnti || !fBuiltHlv || fResetNSI){
80  fCachedNe = Ne;
81  fCachedE = E;
82  fCachedAnti = anti;
83  fResetNSI = false;
84  this->BuildHlv();
85  }
86  else return;
87 
88  double lv = 2 * kGeV2eV*E / fDm31; // Osc. length in eV^-1
89  double kr2GNe = kK2*M_SQRT2*kGf*Ne; // Matter potential in eV
90 
91  // Finish build Hamiltonian in matter with dimension of eV
92  complex A[3][3];
93  for(int i=0;i<3;i++){
94  A[i][i] = fHlv[i][i]/lv;
95  for(int j=i+1;j<3;j++){
96  if(anti>0) A[i][j] = fHlv[i][j]/lv;
97  else A[i][j] = conj(fHlv[i][j])/lv;
98  }
99  }
100  if(anti>0){
101  A[0][0] += kr2GNe * (1 + fEps_ee);
102  A[0][1] += kr2GNe * fEps_emu;
103  A[0][2] += kr2GNe * fEps_etau;
104  A[1][1] += kr2GNe * fEps_mumu;
105  A[1][2] += kr2GNe * fEps_mutau;
106  A[2][2] += kr2GNe * fEps_tautau;
107  }
108  else{
109  A[0][0] -= kr2GNe * (1 + fEps_ee);
110  A[0][1] -= kr2GNe * conj(fEps_emu);
111  A[0][2] -= kr2GNe * conj(fEps_etau);
112  A[1][1] -= kr2GNe * fEps_mumu;
113  A[1][2] -= kr2GNe * conj(fEps_mutau);
114  A[2][2] -= kr2GNe * fEps_tautau;
115  }
116 
117  // Solve Hamiltonian for eigensystem using the GLoBES method
118  zheevh3(A,fEvec,fEval);
119 
120 }
complex fEps_emu
NSI parameter emu.
Definition: PMNS_NSI.h:40
virtual void BuildHlv()
Definition: PMNSOpt.cxx:140
static const double kK2
mole/GeV^2/cm^3 to eV
Definition: PMNSOpt.h:42
double fCachedNe
Cached electron density.
Definition: PMNSOpt.h:123
int zheevh3(std::complex< T > A[3][3], std::complex< T > Q[3][3], T w[3])
Definition: zheevh3.h:44
bool fResetNSI
True when NSI parameters are changed.
Definition: PMNS_NSI.h:43
int fCachedAnti
Cached nu/nubar selector.
Definition: PMNSOpt.h:125
complex fEps_mutau
NSI parameter mutau.
Definition: PMNS_NSI.h:42
static const double kGeV2eV
GeV to eV.
Definition: PMNSOpt.h:43
Float_t E
Definition: plot.C:20
double fEps_mumu
NSI parameter mumu.
Definition: PMNS_NSI.h:38
T fDm31
m^2_3 - m^2_1 in vacuum
Definition: PMNSOpt.h:114
double fCachedE
Cached neutrino energy.
Definition: PMNSOpt.h:124
const double j
Definition: BetheBloch.cxx:29
T fEval[3]
Eigenvalues of the Hamiltonian.
Definition: PMNSOpt.h:121
double fEps_tautau
NSI parameter tautau.
Definition: PMNS_NSI.h:39
static const double A
Definition: Units.h:82
double fEps_ee
NSI parameter ee.
Definition: PMNS_NSI.h:37
bool fBuiltHlv
Tag to avoid rebuilding Hlv.
Definition: PMNSOpt.h:126
complex fEvec[3][3]
Eigenvectors of the Hamiltonian.
Definition: PMNSOpt.h:120
complex fHlv[3][3]
dimensionless matrix H*lv
Definition: PMNSOpt.h:119
complex fEps_etau
NSI parameter etau.
Definition: PMNS_NSI.h:41
static const double kGf
Definition: PMNSOpt.h:46

Member Data Documentation

template<typename T>
bool osc::_PMNSOpt< T >::fBuiltHlv
protectedinherited

Tag to avoid rebuilding Hlv.

Definition at line 126 of file PMNSOpt.h.

Referenced by SolveHam().

template<typename T>
int osc::_PMNSOpt< T >::fCachedAnti
protectedinherited

Cached nu/nubar selector.

Definition at line 125 of file PMNSOpt.h.

Referenced by PMNS_NSI(), and SolveHam().

template<typename T>
double osc::_PMNSOpt< T >::fCachedE
protectedinherited

Cached neutrino energy.

Definition at line 124 of file PMNSOpt.h.

Referenced by PMNS_NSI(), and SolveHam().

template<typename T>
double osc::_PMNSOpt< T >::fCachedNe
protectedinherited

Cached electron density.

Definition at line 123 of file PMNSOpt.h.

Referenced by PMNS_NSI(), and SolveHam().

template<typename T>
T osc::_PMNSOpt< T >::fDeltaCP
protectedinherited

CP violating phase.

Definition at line 118 of file PMNSOpt.h.

template<typename T>
T osc::_PMNSOpt< T >::fDm21
protectedinherited

m^2_2 - m^2_1 in vacuum

Definition at line 113 of file PMNSOpt.h.

template<typename T>
T osc::_PMNSOpt< T >::fDm31
protectedinherited

m^2_3 - m^2_1 in vacuum

Definition at line 114 of file PMNSOpt.h.

Referenced by SolveHam().

double osc::PMNS_NSI::fEps_ee
protected

NSI parameter ee.

Definition at line 37 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

complex osc::PMNS_NSI::fEps_emu
protected

NSI parameter emu.

Definition at line 40 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

complex osc::PMNS_NSI::fEps_etau
protected

NSI parameter etau.

Definition at line 41 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

double osc::PMNS_NSI::fEps_mumu
protected

NSI parameter mumu.

Definition at line 38 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

complex osc::PMNS_NSI::fEps_mutau
protected

NSI parameter mutau.

Definition at line 42 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

double osc::PMNS_NSI::fEps_tautau
protected

NSI parameter tautau.

Definition at line 39 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

template<typename T>
T osc::_PMNSOpt< T >::fEval[3]
protectedinherited

Eigenvalues of the Hamiltonian.

Definition at line 121 of file PMNSOpt.h.

Referenced by SolveHam().

template<typename T>
complex osc::_PMNSOpt< T >::fEvec[3][3]
protectedinherited

Eigenvectors of the Hamiltonian.

Definition at line 120 of file PMNSOpt.h.

Referenced by SolveHam().

template<typename T>
complex osc::_PMNSOpt< T >::fHlv[3][3]
protectedinherited

dimensionless matrix H*lv

Definition at line 119 of file PMNSOpt.h.

Referenced by SolveHam().

template<typename T>
complex osc::_PMNSOpt< T >::fNuState[3]
protectedinherited

The neutrino current state.

Definition at line 122 of file PMNSOpt.h.

bool osc::PMNS_NSI::fResetNSI
protected

True when NSI parameters are changed.

Definition at line 43 of file PMNS_NSI.h.

Referenced by SetNSI(), and SolveHam().

template<typename T>
T osc::_PMNSOpt< T >::fTheta12
protectedinherited

theta12 mixing angle

Definition at line 115 of file PMNSOpt.h.

template<typename T>
T osc::_PMNSOpt< T >::fTheta13
protectedinherited

theta13 mixing angle

Definition at line 117 of file PMNSOpt.h.

template<typename T>
T osc::_PMNSOpt< T >::fTheta23
protectedinherited

theta23 mixing angle

Definition at line 116 of file PMNSOpt.h.


The documentation for this class was generated from the following files: