Namespaces | Classes | Typedefs | Enumerations | Functions | Variables
osc Namespace Reference

Oscillation probability calculators. More...

Namespaces

 analytic
 

Classes

class  _IOscCalc
 General interface to oscillation calculators. More...
 
class  _IOscCalcAdjustable
 General interface to any calculator that lets you set the parameters. More...
 
class  _NoOscillations
 Pass neutrinos through unchanged. More...
 
struct  _OscCache
 
class  _OscCalcDMP
 Helper struct for the cache. Might not need this. More...
 
class  _OscCalcPMNS
 Adapt the PMNS calculator to standard interface. More...
 
class  _OscCalcPMNSOpt
 Optimized version of OscCalcPMNS. More...
 
struct  _OscParameters
 
class  _PMNS
 
class  _PMNS_DMP
 
class  _PMNSOpt
 Optimized version of PMNS. More...
 
class  EarthModel
 
struct  EigenSystem
 Helper struct for the cache. Might not need this. More...
 
class  OscCalc
 
class  OscCalcCPT
 
class  OscCalcDumb
 Simple oscillation probability calculator that has no solar term or mass hierarchy or delta so it's some kind of average of all of those. More...
 
class  OscCalcGeneral
 More generic (but probably slower) oscillation calculations. More...
 
class  OscCalcPMNS_CPT
 Adapt the PMNS calculator to standard interface and include neutrino and anti neutrino oscillations seperately. More...
 
class  OscCalcPMNS_NSI
 Optimized version of OscCalcPMNS. More...
 
class  OscCalcPMNSOptEigen
 A re-optimized version of OscCalcPMNSOpt. More...
 
class  OscCalcSterile
 Adapt the PMNS_Sterile calculator to standard interface. More...
 
class  OscCalcSterileBeam
 Adapt the PMNS_Sterile calculator to standard interface. More...
 
class  OscCalcSterileTrivial
 Version of OscCalcSterile that always returns probability of 1. More...
 
class  PMNS_NSI
 
class  PMNS_Sterile
 

Typedefs

typedef _IOscCalcAdjustable< stan::math::varIOscCalcAdjustableStan
 
typedef _IOscCalc< stan::math::varIOscCalcStan
 
typedef _OscCalcDMP< stan::math::varOscCalcDMPStan
 
typedef _OscCalcPMNS< stan::math::varOscCalcPMNSStan
 
typedef _OscCalcPMNSOpt< stan::math::varOscCalcPMNSOptStan
 
typedef analytic::_OscCalc< stan::math::varOscCalcAnalyticStan
 
typedef _IOscCalc< double > IOscCalc
 
typedef _NoOscillations< double > NoOscillations
 
typedef _IOscCalcAdjustable< double > IOscCalcAdjustable
 
template<class T >
using _OscCalcAnalytic = osc::analytic::_OscCalc< T >
 
using OscCalcAnalytic = _OscCalcAnalytic< double >
 
using SDMap = std::map< const ana::SigmaDelta *, std::pair< double, double > >
 
typedef _OscCalcDMP< double > OscCalcDMP
 
typedef std::complex< long double > val_t
 
typedef ublas::bounded_array< val_t, kNumFlavoursalloc_t
 
typedef ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavoursComplexMat
 
typedef ublas::c_vector< val_t, kNumFlavoursComplexVec
 
typedef ublas::unit_vector< val_t, alloc_tUnitVec
 
typedef _OscCalcPMNS< double > OscCalcPMNS
 
typedef _OscCalcPMNSOpt< double > OscCalcPMNSOpt
 
typedef _OscParameters< double > OscParameters
 
typedef _PMNS< double > PMNS
 
typedef _PMNSOpt< double > PMNSOpt
 

Enumerations

enum  ENuSign { ENuSign::kNu, ENuSign::kNuBar }
 Simple neutrino/anti-neutrino enum. More...
 

Functions

template<typename T , typename U >
void CopyParams (const osc::_IOscCalcAdjustable< T > *inCalc, osc::_IOscCalcAdjustable< U > *outCalc)
 Copy parameters from one calculator to another, irrespective of their type. More...
 
template void CopyParams (const osc::_IOscCalcAdjustable< double > *inCalc, osc::_IOscCalcAdjustable< double > *outCalc)
 
const OscCalcCPTDowncastToCPT (const IOscCalcAdjustable *osc)
 
OscCalcCPTDowncastToCPT (IOscCalcAdjustable *osc)
 
void _sincos (double theta, double &s, double &c)
 
const ublas::zero_matrix< val_t, alloc_tkZeroMat (kNumFlavours, kNumFlavours)
 
const ublas::identity_matrix< val_t, alloc_tkIdentity (kNumFlavours)
 
ComplexMat GetPMNS (OscCalcGeneral::Priv *d)
 
ComplexMat VacuumHamiltonian (const ComplexMat &U, const std::vector< long double > &mSq, long double E)
 
ComplexMat MatterHamiltonianComponent (long double Ne, long double emutau)
 
ComplexMat MatrixExp (const ComplexMat &m2)
 
ComplexVec EvolveState (ComplexVec A, const ComplexMat &H, long double L)
 
void conjugate_elements (ComplexMat &m)
 
const OscCalcPMNS_NSIDowncastToNSI (const IOscCalc *calc)
 
OscCalcPMNS_NSIDowncastToNSI (IOscCalc *calc)
 
Eigen::Array33d Probabilities (const Eigen::Matrix3cd &to, const Eigen::Matrix3cd &from)
 
const OscCalcSterileDowncastToSterile (const IOscCalc *calc)
 
OscCalcSterileDowncastToSterile (IOscCalc *calc)
 
const OscCalcSterileBeamDowncastToSterileBeam (const IOscCalc *calc)
 
OscCalcSterileBeamDowncastToSterileBeam (IOscCalc *calc)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, _OscParameters< T > const &p)
 
template<typename T >
std::ostream & operator<< (std::ostream &os, _PMNS_DMP< T > &p)
 

Variables

const unsigned int kNumFlavours = 3
 
static double eVsqkm_to_GeV = 1e-9 / 1.973269681602260e-7 * 1e3
 
static double YerhoE2a = 1.52e-4
 
static const double kKm2eV = 5.06773103202e+09
 km to eV^-1 More...
 
static const double kK2 = 4.62711492217e-09
 mole/GeV^2/cm^3 to eV More...
 
static const double kGeV2eV = 1.0e+09
 GeV to eV. More...
 
static const double kGf = 1.166371e-5
 

Detailed Description

Oscillation probability calculators.

Simple oscillation probability calculator that has no solar term or mass hierarchy or delta so it's some kind of average of all of those.

Typedef Documentation

template<class T >
using osc::_OscCalcAnalytic = typedef osc::analytic::_OscCalc<T>

Definition at line 171 of file OscCalcAnalytic.h.

typedef ublas::bounded_array<val_t, kNumFlavours> osc::alloc_t

Definition at line 27 of file OscCalcGeneral.cxx.

typedef ublas::bounded_matrix<val_t, kNumFlavours, kNumFlavours> osc::ComplexMat

Definition at line 29 of file OscCalcGeneral.cxx.

typedef ublas::c_vector<val_t, kNumFlavours> osc::ComplexVec

Definition at line 30 of file OscCalcGeneral.cxx.

typedef _IOscCalc< double > osc::IOscCalc

Definition at line 41 of file IOscCalc.h.

Definition at line 121 of file IOscCalc.h.

Definition at line 19 of file StanTypedefs.h.

Definition at line 22 of file StanTypedefs.h.

Definition at line 67 of file IOscCalc.h.

using osc::OscCalcAnalytic = typedef _OscCalcAnalytic<double>

Definition at line 172 of file OscCalcAnalytic.h.

Definition at line 35 of file StanTypedefs.h.

typedef _OscCalcDMP<double> osc::OscCalcDMP

Definition at line 85 of file OscCalcDMP.h.

Definition at line 25 of file StanTypedefs.h.

typedef _OscCalcPMNS<double> osc::OscCalcPMNS

Definition at line 57 of file OscCalcPMNS.h.

Definition at line 72 of file OscCalcPMNSOpt.h.

Definition at line 31 of file StanTypedefs.h.

Definition at line 28 of file StanTypedefs.h.

Definition at line 33 of file OscParameters.h.

typedef _PMNS<double> osc::PMNS

Definition at line 226 of file PMNS.h.

typedef _PMNSOpt<double> osc::PMNSOpt

Definition at line 130 of file PMNSOpt.h.

using osc::SDMap = typedef std::map< const ana::SigmaDelta*, std::pair<double, double> >

Definition at line 33 of file OscCalcCPT.h.

typedef ublas::unit_vector<val_t, alloc_t> osc::UnitVec

Definition at line 31 of file OscCalcGeneral.cxx.

typedef std::complex<long double> osc::val_t

Definition at line 26 of file OscCalcGeneral.cxx.

Enumeration Type Documentation

enum osc::ENuSign
strong

Simple neutrino/anti-neutrino enum.

Enumerator
kNu 
kNuBar 

Definition at line 28 of file OscCalcCPT.h.

28 { kNu, kNuBar };
Neutrinos-only.
Definition: IPrediction.h:49

Function Documentation

void osc::_sincos ( double  theta,
double &  s,
double &  c 
)
inline

Definition at line 37 of file OscCalcDMP.cxx.

References sincos().

Referenced by osc::OscCalcPMNSOptEigen::BuildHam(), and osc::OscCalcPMNSOptEigen::SaveLastParams().

38  {
39 #ifdef __APPLE_CC__
40  __sincos(theta, &s, &c);
41 #else
42  sincos(theta, &s, &c);
43 #endif
44  }
void sincos(T &x, Eigen::ArrayX< U > *sx, Eigen::ArrayX< U > *cx)
const XML_Char * s
Definition: expat.h:262
void osc::conjugate_elements ( ComplexMat m)

Definition at line 227 of file OscCalcGeneral.cxx.

References MECModelEnuComparisons::i, calib::j, kNumFlavours, and m.

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

228  {
229  for(unsigned int i = 0; i < kNumFlavours; ++i)
230  for(unsigned int j = 0; j < kNumFlavours; ++j)
231  m(i, j) = std::conj(m(i, j));
232  }
const double j
Definition: BetheBloch.cxx:29
const unsigned int kNumFlavours
template<typename T , typename U >
void osc::CopyParams ( const osc::_IOscCalcAdjustable< T > *  inCalc,
osc::_IOscCalcAdjustable< U > *  outCalc 
)

Copy parameters from one calculator to another, irrespective of their type.

Definition at line 62 of file IOscCalc.cxx.

References ana::assert(), osc::_IOscCalcAdjustable< T >::GetdCP(), osc::_IOscCalcAdjustable< T >::GetDmsq21(), osc::_IOscCalcAdjustable< T >::GetDmsq32(), osc::_IOscCalcAdjustable< T >::GetL(), osc::_IOscCalcAdjustable< T >::GetRho(), osc::_IOscCalcAdjustable< T >::GetTh12(), osc::_IOscCalcAdjustable< T >::GetTh13(), osc::_IOscCalcAdjustable< T >::GetTh23(), osc::_IOscCalcAdjustable< T >::SetdCP(), osc::_IOscCalcAdjustable< T >::SetDmsq21(), osc::_IOscCalcAdjustable< T >::SetDmsq32(), osc::_IOscCalcAdjustable< T >::SetL(), osc::_IOscCalcAdjustable< T >::SetRho(), osc::_IOscCalcAdjustable< T >::SetTh12(), osc::_IOscCalcAdjustable< T >::SetTh13(), and osc::_IOscCalcAdjustable< T >::SetTh23().

Referenced by ana::StanFitter::CreateCalculator(), ana::StanFitter::log_prob(), and test_stanfit_systpulls().

64  {
65  assert (inCalc);
66  assert (outCalc);
67 
68  outCalc->SetL(inCalc->GetL());
69  outCalc->SetRho(inCalc->GetRho());
70 
71  outCalc->SetdCP(GetValAs<U>(inCalc->GetdCP()));
72  outCalc->SetDmsq21(GetValAs<U>(inCalc->GetDmsq21()));
73  outCalc->SetDmsq32(GetValAs<U>(inCalc->GetDmsq32()));
74  outCalc->SetTh12(GetValAs<U>(inCalc->GetTh12()));
75  outCalc->SetTh13(GetValAs<U>(inCalc->GetTh13()));
76  outCalc->SetTh23(GetValAs<U>(inCalc->GetTh23()));
77  }
virtual void SetL(double L)=0
virtual void SetDmsq21(const T &dmsq21)=0
virtual double GetL() const
Definition: IOscCalc.h:88
virtual void SetTh13(const T &th13)=0
virtual T GetTh23() const
Definition: IOscCalc.h:94
virtual void SetDmsq32(const T &dmsq32)=0
virtual T GetDmsq32() const
Definition: IOscCalc.h:91
virtual T GetTh12() const
Definition: IOscCalc.h:92
virtual T GetdCP() const
Definition: IOscCalc.h:95
virtual T GetTh13() const
Definition: IOscCalc.h:93
virtual T GetDmsq21() const
Definition: IOscCalc.h:90
virtual void SetRho(double rho)=0
virtual void SetTh23(const T &th23)=0
assert(nhit_max >=nhit_nbins)
virtual double GetRho() const
Definition: IOscCalc.h:89
virtual void SetTh12(const T &th12)=0
virtual void SetdCP(const T &dCP)=0
template void osc::CopyParams ( const osc::_IOscCalcAdjustable< double > *  inCalc,
osc::_IOscCalcAdjustable< double > *  outCalc 
)
const OscCalcCPT * osc::DowncastToCPT ( const IOscCalcAdjustable osc)
OscCalcCPT * osc::DowncastToCPT ( IOscCalcAdjustable osc)

Definition at line 239 of file OscCalcCPT.cxx.

References ana::assert().

240  {
241  OscCalcCPT* cpt = dynamic_cast<OscCalcCPT*>(osc);
242  assert( cpt && "Must use OscCalcCPT with CPT FitVars." );
243  return cpt;
244  }
Oscillation probability calculators.
Definition: Calcs.h:5
assert(nhit_max >=nhit_nbins)
const OscCalcPMNS_NSI * osc::DowncastToNSI ( const IOscCalc calc)

Definition at line 117 of file OscCalcPMNS_NSI.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

Referenced by ana::FitEpsMuTau::GetValue(), and ana::FitEpsMuTau::SetValue().

118  {
119  const OscCalcPMNS_NSI* calc_nsi = dynamic_cast<const OscCalcPMNS_NSI*>(calc);
120  if(calc_nsi) return calc_nsi;
121  else std::cout << "Input calculator was not of type OscCalcPMNS_NSI." << std::endl;
122  return nullptr; // If the cast failed, calc_nsi should be nullptr anyway (?)
123  }
osc::OscCalcDumb calc
OStream cout
Definition: OStream.cxx:6
OscCalcPMNS_NSI * osc::DowncastToNSI ( IOscCalc calc)

Definition at line 126 of file OscCalcPMNS_NSI.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

127  {
128  OscCalcPMNS_NSI* calc_nsi = dynamic_cast<OscCalcPMNS_NSI*>(calc);
129  if(calc_nsi) return calc_nsi;
130  else std::cout << "Input calculator was not of type OscCalcPMNS_NSI." << std::endl;
131  return nullptr; // If the cast failed, calc_nsi should be nullptr anyway (?)
132  }
osc::OscCalcDumb calc
OStream cout
Definition: OStream.cxx:6
const OscCalcSterile * osc::DowncastToSterile ( const IOscCalc calc)

Definition at line 227 of file OscCalcSterile.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

Referenced by ana::FitDmSq32Sterile::GetValue(), ana::FitDmSq41Sterile::GetValue(), ana::FitDmSq43Sterile::GetValue(), ana::FitDelta13InPiUnitsSterile::GetValue(), ana::FitDelta14InPiUnitsSterile::GetValue(), ana::FitDelta24InPiUnitsSterile::GetValue(), ana::FitTheta13Sterile::GetValue(), ana::FitSinSqTheta13Sterile::GetValue(), ana::FitSinSq2Theta13Sterile::GetValue(), ana::FitTheta23Sterile::GetValue(), ana::FitSinSqTheta23Sterile::GetValue(), ana::FitTheta14Sterile::GetValue(), ana::FitSinSqTheta14Sterile::GetValue(), ana::FitTheta24Sterile::GetValue(), ana::FitSinSqTheta24Sterile::GetValue(), ana::FitTheta34Sterile::GetValue(), ana::FitSinSqTheta34Sterile::GetValue(), ana::FitTheta13InDegreesSterile::GetValue(), ana::FitTheta23InDegreesSterile::GetValue(), ana::FitTheta14InDegreesSterile::GetValue(), ana::FitTheta24InDegreesSterile::GetValue(), ana::FitTheta34InDegreesSterile::GetValue(), ana::FDPredictionSterile::Predict(), ana::NDPredictionSterile::Predict(), ana::PredictionSterile::PredictComponent(), ana::FDPredictionSterile::PredictComponent(), ana::NDPredictionSterile::PredictComponent(), ana::FitDmSq32Sterile::SetValue(), ana::FitDmSq41Sterile::SetValue(), ana::FitDmSq43Sterile::SetValue(), ana::FitDelta13InPiUnitsSterile::SetValue(), ana::FitDelta14InPiUnitsSterile::SetValue(), ana::FitDelta24InPiUnitsSterile::SetValue(), ana::FitTheta13Sterile::SetValue(), ana::FitSinSqTheta13Sterile::SetValue(), ana::FitSinSq2Theta13Sterile::SetValue(), ana::FitTheta23Sterile::SetValue(), ana::FitSinSqTheta23Sterile::SetValue(), ana::FitTheta14Sterile::SetValue(), ana::FitSinSqTheta14Sterile::SetValue(), ana::FitTheta24Sterile::SetValue(), ana::FitSinSqTheta24Sterile::SetValue(), ana::FitTheta34Sterile::SetValue(), ana::FitSinSqTheta34Sterile::SetValue(), ana::FitTheta13InDegreesSterile::SetValue(), ana::FitTheta23InDegreesSterile::SetValue(), ana::FitTheta14InDegreesSterile::SetValue(), ana::FitTheta24InDegreesSterile::SetValue(), ana::FitTheta34InDegreesSterile::SetValue(), ana::ToEigenSterile(), and osc::OscCalcSterileTrivial::~OscCalcSterileTrivial().

228  {
229  const OscCalcSterileTrivial* calc_trivial
230  = dynamic_cast<const OscCalcSterileTrivial*>(calc);
231  if (calc_trivial) return calc_trivial;
232  const OscCalcSterile* calc_sterile = dynamic_cast<const OscCalcSterile*>(calc);
233  if(calc_sterile) return calc_sterile;
234  else std::cout << "Input calculator was not of type OscCalcSterile." << std::endl;
235  return nullptr; // If the cast failed, calc_sterile should be nullptr anyway
236  }
osc::OscCalcDumb calc
OStream cout
Definition: OStream.cxx:6
OscCalcSterile * osc::DowncastToSterile ( IOscCalc calc)

Definition at line 239 of file OscCalcSterile.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

240  {
241  OscCalcSterileTrivial* calc_trivial
242  = dynamic_cast<OscCalcSterileTrivial*>(calc);
243  if (calc_trivial) return calc_trivial;
244  OscCalcSterile* calc_sterile = dynamic_cast<OscCalcSterile*>(calc);
245  if(calc_sterile) return calc_sterile;
246  else std::cout << "Input calculator was not of type OscCalcSterile." << std::endl;
247  return nullptr; // If the cast failed, calc_sterile should be nullptr anyway
248  }
osc::OscCalcDumb calc
OStream cout
Definition: OStream.cxx:6
const OscCalcSterileBeam * osc::DowncastToSterileBeam ( const IOscCalc calc)

Definition at line 141 of file OscCalcSterileBeam.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

142  {
143  //const IOscCalc* base = new osc::OscCalcSterileBeam();
144  const OscCalcSterileBeam* calc_sterile = dynamic_cast<const OscCalcSterileBeam*>(calc);
145  if(calc_sterile) return calc_sterile;
146  else std::cout << "Input calculator was not of type OscCalcSterileBeam." << std::endl;
147  return nullptr; // If the cast failed, calc_sterile should be nullptr anyway
148  }
osc::OscCalcDumb calc
OStream cout
Definition: OStream.cxx:6
OscCalcSterileBeam * osc::DowncastToSterileBeam ( IOscCalc calc)

std::cout << "calc is a osc::NoOscillations calculator!" << std::endl;

Definition at line 151 of file OscCalcSterileBeam.cxx.

References calc, om::cout, and allTimeWatchdog::endl.

152  {
153  //IOscCalc* base = new osc::OscCalcSterileBeam();
154  //std::cout << "calc's type is: " << typeid(calc).name() << std::endl;
155  //if (typeid(calc) == typeid(osc::NoOscillations))
156  // {
157  /// std::cout << "calc is a osc::NoOscillations calculator!" << std::endl;
158  //}
159  NoOscillations* calc_noosc = dynamic_cast<NoOscillations*>(calc);
160  if (calc_noosc)
161  {
162  std::cout << "I was successfully cast to NoOscillations" << std::endl;
163  }
164 
165  OscCalcSterileBeam* calc_sterile = dynamic_cast<OscCalcSterileBeam*>(calc);
166  if(calc_sterile) return calc_sterile;
167  else std::cout << "Input calculator was not of type OscCalcSterileBeam." << std::endl;
168  return nullptr; // If the cast failed, calc_sterile should be nullptr anyway
169  }
osc::OscCalcDumb calc
_NoOscillations< double > NoOscillations
Definition: IOscCalc.h:67
OStream cout
Definition: OStream.cxx:6
ComplexVec osc::EvolveState ( ComplexVec  A,
const ComplexMat H,
long double  L 
)

Definition at line 220 of file OscCalcGeneral.cxx.

References MECModelEnuComparisons::i, MatrixExp(), and stan::math::prod().

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

221  {
222  const std::complex<long double> i = std::complex<long double>(0, 1);
223 
224  return ublas::prod(MatrixExp(-H*L*i), A);
225  }
ComplexMat MatrixExp(const ComplexMat &m2)
static constexpr double L
T prod(const std::vector< T > &v)
Definition: prod.hpp:17
static const double A
Definition: Units.h:82
ComplexMat osc::GetPMNS ( OscCalcGeneral::Priv d)

Definition at line 138 of file OscCalcGeneral.cxx.

References osc::OscCalcGeneral::Priv::atmos, osc::OscCalcGeneral::Priv::dirty, osc::OscCalcGeneral::Priv::pmns, stan::math::prod(), osc::OscCalcGeneral::Priv::react, and osc::OscCalcGeneral::Priv::solar.

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

139  {
140  if(d->dirty){
141  ublas::noalias(d->pmns) = ublas::prod(d->atmos, ublas::prod<ComplexMat>(d->react, d->solar));
142  d->dirty = false;
143  }
144  return d->pmns;
145  }
Float_t d
Definition: plot.C:236
T prod(const std::vector< T > &v)
Definition: prod.hpp:17
const ublas::identity_matrix<val_t, alloc_t> osc::kIdentity ( kNumFlavours  )

Referenced by MatrixExp().

const ublas::zero_matrix<val_t, alloc_t> osc::kZeroMat ( kNumFlavours  ,
kNumFlavours   
)
ComplexMat osc::MatrixExp ( const ComplexMat m2)

Definition at line 204 of file OscCalcGeneral.cxx.

References kIdentity(), m, getGoodRuns4SAM::n, stan::math::prod(), and runNovaSAM::ret.

Referenced by EvolveState().

205  {
206  // We use the identity e^(a*b) = (e^a)^b
207  // First: ensure the exponent is really small, 65536 = 2^16
208  ComplexMat m = m2/65536;
209 
210  // To first order e^x = 1+x
212 
213  // Raise the result to the power 65536, by squaring it 16 times
214  for(int n = 0; n < 16; ++n) ret = ublas::prod(ret, ret);
215 
216  return ret;
217  }
ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavours > ComplexMat
T prod(const std::vector< T > &v)
Definition: prod.hpp:17
static constexpr Double_t m2
Definition: Munits.h:145
const ublas::identity_matrix< val_t, alloc_t > kIdentity(kNumFlavours)
ComplexMat osc::MatterHamiltonianComponent ( long double  Ne,
long double  emutau 
)

Definition at line 178 of file OscCalcGeneral.cxx.

References kZeroMat(), and std::sqrt().

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

179  {
180  // Need to convert avogadro's constant so that the total term comes out in
181  // units of inverse distance. Note that Ne will be specified in g/cm^-3
182  // I put the following into Wolfram Alpha:
183  // (fermi coupling constant)*((avogadro number)/cm^3)*(reduced planck constant)^2*(speed of light)^2
184  // And then multiplied by 1000 because we specify L in km not m.
185  const long double GF = 1.368e-4;
186 
187  ComplexMat H = kZeroMat;
188 
189  H(0, 0) = sqrt(2)*GF*Ne;
190 
191  // Ignoring conjugates here because we assume e_mutau is real
192  H(1, 2) = H(2, 1) = emutau*sqrt(2)*GF*Ne;
193 
194  return H;
195  }
T sqrt(T number)
Definition: d0nt_math.hpp:156
ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavours > ComplexMat
const ublas::zero_matrix< val_t, alloc_t > kZeroMat(kNumFlavours, kNumFlavours)
template<typename T >
std::ostream& osc::operator<< ( std::ostream &  os,
_OscParameters< T > const &  p 
)
inline

Definition at line 36 of file OscParameters.h.

37  {
38  os << "\tdelta m^2_{21}: " << p.dmsq21
39  << "\tdelta m^2_{32}: " << p.dmsq32
40  << "\tdelta m^2_{31}: " << p.Dmsq31()
41  << "\ttheta_{12}: " << p.th12
42  << "\ttheta_{13}: " << p.th13
43  << "\ttheta_{23}: " << p.th23
44  << "\tdelta CP: " << p.deltacp
45  << "\n";
46  return os;
47  }
const char * p
Definition: xmltok.h:285
template<typename T >
std::ostream& osc::operator<< ( std::ostream &  os,
_PMNS_DMP< T > &  p 
)
inline

Definition at line 102 of file PMNS_DMP.h.

103  {
104  os << "\tDmsqee: " << p.Dmsqee()
105  //<< "\tdelta m^2_{32}: " << p.dmsq32
106  //<< "\tdelta m^2_{31}: " << p.Dmsq31()
107  //<< "\ttheta_{12}: " << p.th12
108  //<< "\ttheta_{13}: " << p.th13
109  //<< "\ttheta_{23}: " << p.th23
110  //<< "\tdelta CP: " << p.deltacp
111  << "\n";
112  return os;
113  }
const char * p
Definition: xmltok.h:285
Eigen::Array33d osc::Probabilities ( const Eigen::Matrix3cd &  to,
const Eigen::Matrix3cd &  from 
)
inline

Definition at line 29 of file OscCalcPMNSOptEigen.cxx.

Referenced by osc::OscCalcPMNSOptEigen::FillCache(), and osc::OscCalcPMNSOptEigen::P().

31  {
32  return (to * from.adjoint()).array().abs2();
33  }
ComplexMat osc::VacuumHamiltonian ( const ComplexMat U,
const std::vector< long double > &  mSq,
long double  E 
)

Definition at line 151 of file OscCalcGeneral.cxx.

References a, ana::assert(), b, E, MECModelEnuComparisons::i, kNumFlavours, and kZeroMat().

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

154  {
155  // Conversion factor for units
156  E /= 4*1.267;
157 
158  assert(mSq.size() == kNumFlavours);
159 
160  ComplexMat H = kZeroMat;
161 
162  // Loop over rows and columns of the output
163  for(unsigned int a = 0; a < kNumFlavours; ++a){
164  for(unsigned int b = 0; b < kNumFlavours; ++b){
165  // Form sum over mass states
166  for(unsigned int i = 0; i < kNumFlavours; ++i){
167  H(a, b) += U(a, i)*mSq[i]/(2*E)*std::conj(U(b, i));
168  }
169  }
170  }
171 
172  return H;
173  }
Float_t E
Definition: plot.C:20
ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavours > ComplexMat
const double a
const ublas::zero_matrix< val_t, alloc_t > kZeroMat(kNumFlavours, kNumFlavours)
const unsigned int kNumFlavours
const hit & b
Definition: hits.cxx:21
assert(nhit_max >=nhit_nbins)

Variable Documentation

double osc::eVsqkm_to_GeV = 1e-9 / 1.973269681602260e-7 * 1e3
static

Definition at line 13 of file PMNS_DMP.h.

const double osc::kGeV2eV = 1.0e+09
static
const double osc::kGf = 1.166371e-5
static
const double osc::kK2 = 4.62711492217e-09
static
const double osc::kKm2eV = 5.06773103202e+09
static
const unsigned int osc::kNumFlavours = 3

Definition at line 23 of file OscCalcGeneral.cxx.

Referenced by conjugate_elements(), and VacuumHamiltonian().

double osc::YerhoE2a = 1.52e-4
static

Definition at line 14 of file PMNS_DMP.h.