OscProb::PMNS_NSI Class Reference

#include <PMNS_NSI.h>

Inheritance diagram for OscProb::PMNS_NSI:
OscProb::PMNS_Fast OscProb::PMNS_Base

List of all members.

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)
 Set the NSI parameters.
virtual void SetEps_ee (double a)
virtual void SetEps_mumu (double a)
virtual void SetEps_tautau (double a)
virtual void SetEps_emu (double a, double phi)
virtual void SetEps_etau (double a, double phi)
virtual void SetEps_mutau (double a, double phi)

Protected Member Functions

virtual void SolveHam ()
 Solve the full Hamiltonian for eigenvectors and eigenvalues.

Protected Attributes

double fEps_ee
 NSI parameter ee.
double fEps_mumu
 NSI parameter mumu.
double fEps_tautau
 NSI parameter tautau.
complex fEps_emu
 NSI parameter emu.
complex fEps_etau
 NSI parameter etau.
complex fEps_mutau
 NSI parameter mutau.

Detailed Description

Definition at line 21 of file PMNS_NSI.h.


Constructor & Destructor Documentation

PMNS_NSI::PMNS_NSI (  ) 

Definition at line 33 of file PMNS_NSI.cxx.

References SetNSI().

00033                    : PMNS_Fast()
00034 {
00035   this->SetNSI(0.,0.,0.,0.,0.,0.,0.,0.,0.);
00036 }

PMNS_NSI::~PMNS_NSI (  )  [virtual]

Definition at line 38 of file PMNS_NSI.cxx.

00038                    {
00039 }


Member Function Documentation

virtual void OscProb::PMNS_NSI::SetEps_ee ( double  a  )  [inline, virtual]

Set the diagonal real NSI parameters

Parameters:
a - The value of the epsilon parameter

Definition at line 33 of file PMNS_NSI.h.

References fEps_ee, and OscProb::PMNS_Base::fGotES.

00033 { fEps_ee = a; fGotES = false; }

virtual void OscProb::PMNS_NSI::SetEps_emu ( double  a,
double  phi 
) [inline, virtual]

Set the off-diagonal complex NSI parameters

Parameters:
a - The modulus of the epsilon parameter
phi - The phase of the epsilon parameter

Definition at line 40 of file PMNS_NSI.h.

References fEps_emu, and OscProb::PMNS_Base::fGotES.

00040 { fEps_emu = a * complex(cos(phi), sin(phi)); fGotES = false; }

virtual void OscProb::PMNS_NSI::SetEps_etau ( double  a,
double  phi 
) [inline, virtual]

Definition at line 41 of file PMNS_NSI.h.

References fEps_etau, and OscProb::PMNS_Base::fGotES.

00041 { fEps_etau = a * complex(cos(phi), sin(phi)); fGotES = false; }

virtual void OscProb::PMNS_NSI::SetEps_mumu ( double  a  )  [inline, virtual]

Definition at line 34 of file PMNS_NSI.h.

References fEps_mumu, and OscProb::PMNS_Base::fGotES.

00034 { fEps_mumu = a; fGotES = false; }

virtual void OscProb::PMNS_NSI::SetEps_mutau ( double  a,
double  phi 
) [inline, virtual]

Definition at line 42 of file PMNS_NSI.h.

References fEps_mutau, and OscProb::PMNS_Base::fGotES.

00042 { fEps_mutau = a * complex(cos(phi), sin(phi)); fGotES = false; }

virtual void OscProb::PMNS_NSI::SetEps_tautau ( double  a  )  [inline, virtual]

Definition at line 35 of file PMNS_NSI.h.

References fEps_tautau, and OscProb::PMNS_Base::fGotES.

00035 { fEps_tautau = a; fGotES = false; }

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 
)

Set the NSI parameters.

Definition at line 43 of file PMNS_NSI.cxx.

References fEps_ee, fEps_emu, fEps_etau, fEps_mumu, fEps_mutau, fEps_tautau, and OscProb::PMNS_Base::fGotES.

Referenced by PMNS_NSI(), and OscCalc::UpdateNSI().

00046 {
00047 
00048   fEps_ee     = eps_ee;
00049   fEps_mumu   = eps_mumu;
00050   fEps_tautau = eps_tautau;
00051   fEps_emu    = eps_emu   * complex(cos(delta_emu) ,   sin(delta_emu));
00052   fEps_etau   = eps_etau  * complex(cos(delta_etau) ,  sin(delta_etau));
00053   fEps_mutau  = eps_mutau * complex(cos(delta_mutau) , sin(delta_mutau));
00054 
00055   fGotES = false;
00056 
00057 }

void PMNS_NSI::SolveHam (  )  [protected, virtual]

Solve the full Hamiltonian for eigenvectors and eigenvalues.

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

Reimplemented from OscProb::PMNS_Fast.

Definition at line 64 of file PMNS_NSI.cxx.

References OscProb::PMNS_Base::BuildHms(), MuELoss::e, OscProb::PMNS_Base::fBuiltHms, OscProb::PMNS_Base::fEnergy, fEps_ee, fEps_emu, fEps_etau, fEps_mumu, fEps_mutau, fEps_tautau, OscProb::PMNS_Base::fEval, OscProb::PMNS_Base::fEvec, OscProb::PMNS_Base::fGotES, OscProb::PMNS_Base::fHms, OscProb::PMNS_Base::fIsNuBar, OscProb::PMNS_Base::fNe, OscProb::PMNS_Base::fNumNus, OscProb::PMNS_Base::kGeV2eV, OscProb::PMNS_Base::kGf, OscProb::PMNS_Base::kK2, OscProb::PMNS_Fast::SetVacuumEigensystem(), and zheevh3().

00065 {
00066 
00067   if(fNe < 1.0e-6){
00068     SetVacuumEigensystem();
00069     return;
00070   }
00071 
00072   // Check if anything has changed before recalculating
00073   if(!fBuiltHms){
00074     BuildHms();
00075   }
00076 
00077   double lv = 2 * kGeV2eV*fEnergy;     // 2*E in eV 
00078   double kr2GNe = kK2*M_SQRT2*kGf*fNe; // Matter potential in eV
00079 
00080   // Finish build Hamiltonian in matter with dimension of eV
00081   complex A[3][3];
00082   for(int i=0;i<fNumNus;i++){
00083     A[i][i] = fHms[i][i]/lv;
00084     for(int j=i+1;j<fNumNus;j++){
00085       if(!fIsNuBar) A[i][j] = fHms[i][j]/lv;
00086       else          A[i][j] = conj(fHms[i][j])/lv;
00087     }
00088   }
00089   if(!fIsNuBar){
00090     A[0][0] += kr2GNe * (1 + fEps_ee);
00091     A[0][1] += kr2GNe * fEps_emu;
00092     A[0][2] += kr2GNe * fEps_etau;
00093     A[1][1] += kr2GNe * fEps_mumu;
00094     A[1][2] += kr2GNe * fEps_mutau;
00095     A[2][2] += kr2GNe * fEps_tautau;
00096   }
00097   else{
00098     A[0][0] -= kr2GNe * (1 + fEps_ee);
00099     A[0][1] -= kr2GNe * conj(fEps_emu);
00100     A[0][2] -= kr2GNe * conj(fEps_etau);
00101     A[1][1] -= kr2GNe * fEps_mumu;
00102     A[1][2] -= kr2GNe * conj(fEps_mutau);
00103     A[2][2] -= kr2GNe * fEps_tautau;
00104   }
00105 
00106   double fEvalGLoBES[3];
00107   complex fEvecGLoBES[3][3];
00108 
00109   // Solve Hamiltonian for eigensystem using the GLoBES method
00110   zheevh3(A,fEvecGLoBES,fEvalGLoBES);
00111   
00112   // Fill fEval and fEvec vectors from GLoBES arrays
00113   for(int i=0;i<fNumNus;i++){
00114     fEval[i] = fEvalGLoBES[i];
00115     for(int j=0;j<fNumNus;j++){
00116       fEvec[i][j] = fEvecGLoBES[i][j];
00117     }
00118   }
00119 
00120   fGotES = true;
00121   
00122 }


Member Data Documentation

double OscProb::PMNS_NSI::fEps_ee [protected]

NSI parameter ee.

Definition at line 48 of file PMNS_NSI.h.

Referenced by SetEps_ee(), SetNSI(), and SolveHam().

NSI parameter emu.

Definition at line 51 of file PMNS_NSI.h.

Referenced by SetEps_emu(), SetNSI(), and SolveHam().

NSI parameter etau.

Definition at line 52 of file PMNS_NSI.h.

Referenced by SetEps_etau(), SetNSI(), and SolveHam().

double OscProb::PMNS_NSI::fEps_mumu [protected]

NSI parameter mumu.

Definition at line 49 of file PMNS_NSI.h.

Referenced by SetEps_mumu(), SetNSI(), and SolveHam().

NSI parameter mutau.

Definition at line 53 of file PMNS_NSI.h.

Referenced by SetEps_mutau(), SetNSI(), and SolveHam().

double OscProb::PMNS_NSI::fEps_tautau [protected]

NSI parameter tautau.

Definition at line 50 of file PMNS_NSI.h.

Referenced by SetEps_tautau(), SetNSI(), and SolveHam().


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

Generated on 3 Dec 2018 for loon by  doxygen 1.6.1