NuOscProbCalc::SterileProb Class Reference

#include <NuOscProbCalc.h>

List of all members.

Public Member Functions

 SterileProb ()
virtual ~SterileProb ()
void SetFourFlavourParams (double dm232, const double theta23, double dm221, double dm243, const double theta12, const double theta13, const double theta14, const double theta24, const double theta34, double delta1, double delta2, double delta3)
double FourFlavourProbability (int inunoosc, int inu, double energy, double baseline)
double ProbabilityXtoNuS (int inunoosc, double energy, double baseline)
void SetTheta12 (double th)
void SetTheta13 (double th)
void SetTheta23 (double th)
void SetTheta14 (double th)
void SetTheta24 (double th)
void SetTheta34 (double th)
void SetDeltaCP (double delta)
void SetDelta14 (double delta)
void SetDelta24 (double delta)
void SetDm21 (double dm)
void SetDm32 (double dm)
void SetDm43 (double dm)
void SetDefaultFFP ()

Private Member Functions

void BuildMatrix ()

Private Attributes

bool fMixDirty
bool fDmDirty
double fDm21
double fDm32
double fDm43
double fTheta12
double fTheta13
double fTheta23
double fTheta14
double fTheta24
double fTheta34
double fDeltaCP
double fDelta14
double fDelta24
complex< double > fU [4][3]
complex< double > fUc [4][3]
complex< double > fU2 [4][3]
double fFreq21
double fFreq31
double fFreq41

Detailed Description

Definition at line 242 of file NuOscProbCalc.h.


Constructor & Destructor Documentation

NuOscProbCalc::SterileProb::SterileProb (  ) 

Definition at line 30 of file NuOscProbCalc.cxx.

References MuELoss::e, and SetFourFlavourParams().

00031 {
00032 
00033   this->SetFourFlavourParams(2.4e-3, 0.691, 7.59e-5,
00034                              0, 0.6, 0.159, 0, 0, 0,
00035                              0, 0, 0);
00036 
00037 }

NuOscProbCalc::SterileProb::~SterileProb (  )  [virtual]

Definition at line 39 of file NuOscProbCalc.cxx.

00039 {}


Member Function Documentation

void NuOscProbCalc::SterileProb::BuildMatrix (  )  [private]

Definition at line 1056 of file NuOscProbCalc.cxx.

References fDelta14, fDelta24, fDeltaCP, fDm21, fDm32, fDm43, fDmDirty, fFreq21, fFreq31, fFreq41, fMixDirty, fTheta12, fTheta13, fTheta14, fTheta23, fTheta24, fTheta34, fU, fU2, fUc, k1267, and kKmUnits.

01056                                           {
01057 
01058   if(fDmDirty){
01059     // Calculate other mass splittings
01060     fFreq21 = k1267 * fDm21 / kKmUnits;
01061     fFreq31 = k1267 * (fDm21 + fDm32) / kKmUnits;
01062     fFreq41 = k1267 * (fDm21 + fDm32 + fDm43) / kKmUnits;
01063     fDmDirty = false;
01064   }
01065 
01066   if(!fMixDirty) return;
01067   
01068   const double c12 = cos(fTheta12); const double s12 = sin(fTheta12);
01069   const double c13 = cos(fTheta13); const double s13 = sin(fTheta13);
01070   const double c14 = cos(fTheta14); const double s14 = sin(fTheta14);
01071   const double c23 = cos(fTheta23); const double s23 = sin(fTheta23);
01072   const double c24 = cos(fTheta24); const double s24 = sin(fTheta24);
01073   const double c34 = cos(fTheta34); const double s34 = sin(fTheta34);
01074 
01075   complex<double> expNegCP13 = complex<double>(cos(fDeltaCP), -sin(fDeltaCP));
01076   complex<double> expNegCP14 = complex<double>(cos(fDelta14), -sin(fDelta14));
01077   complex<double> expNegCP24 = complex<double>(cos(fDelta24), -sin(fDelta24));
01078 
01079   fU[0][0]  =  c13 * c14 * s12;
01080   fU[0][1]  =  c14 * s13 * expNegCP13;
01081   fU[0][2]  =  s14 * expNegCP14;
01082 
01083   fU[1][0]  =  c12 * c23 * c24
01084             -  c24 * s12 * s13 * s23 * conj(expNegCP13)
01085             -  c13 * s12 * s14 * s24 * expNegCP24 * conj(expNegCP14);
01086 
01087   fU[1][1]  =  c13 * c24 * s23
01088             -  s13 * s14 * s24 * expNegCP13 * expNegCP24 * conj(expNegCP14);
01089 
01090   fU[1][2]  =  c14 * s24 * expNegCP24;
01091 
01092 
01093   fU[2][0]  =  -c12 * c34 * s23
01094                -c23 * c34 * s12 * s13 * conj(expNegCP13)
01095                -c13 * c24 * s12 * s14 * s34 * conj(expNegCP14)
01096                -c12 * c23 * s24 * s34 * conj(expNegCP24)
01097                +s12 * s13 * s23 * s24 * s34 * conj(expNegCP13 * expNegCP24);
01098 
01099   fU[2][1]  =  c13 * c23 * c34
01100             -  c24 * s13 * s14 * s34 * expNegCP13 * conj(expNegCP14)
01101             -  c13 * s23 * s24 * s34 * conj(expNegCP24);
01102 
01103   fU[2][2]  =  c14 * c24 * s34;
01104 
01105   fU[3][0]  =  -c13 * c24 * c34 * s12 * s14 * conj(expNegCP14)
01106                -c12 * c23 * c34 * s24 * conj(expNegCP24)
01107                +c34 * s12 * s13 * s23 * s24 * conj(expNegCP13 * expNegCP24)
01108                +c23 * s12 * s13 * s34 * conj(expNegCP13)
01109                +c12 * s23 * s34;
01110 
01111   fU[3][1]  =  -c24 * c34 * s13 * s14 * expNegCP13 * conj(expNegCP14)
01112                -c13 * c34 * s23 * s24 * conj(expNegCP24)
01113                -c13 * c23 * s34;
01114 
01115   fU[3][2]  =  c14 * c24 * c34;
01116 
01117   for(int i = 0; i<4; i++){
01118   for(int j = 0; j<3; j++){
01119     fUc[i][j] = conj(fU[i][j]);
01120     fU2[i][j] = norm(fU[i][j]);
01121   }}
01122 
01123   fMixDirty = false;
01124 
01125   return;
01126 
01127 }

double NuOscProbCalc::SterileProb::FourFlavourProbability ( int  inunoosc,
int  inu,
double  energy,
double  baseline 
)

Definition at line 1131 of file NuOscProbCalc.cxx.

Referenced by NuMMRunSterile::MCOscillated().

01132 {
01133 
01134   this->BuildMatrix();
01135 
01136   complex<double> i(0.0, 1.0);
01137 
01138   double LoE = 2 * baseline / energy;
01139 
01140 //  double DeltaM21 = fFreq21 * LoE;
01141 //  double DeltaM31 = fFreq31 * LoE;
01142 //  double DeltaM41 = fFreq41 * LoE;
01143 
01144   complex<double> oscDeltaM21 = 1.0 - exp(-i * fFreq21 * LoE);
01145   complex<double> oscDeltaM31 = 1.0 - exp(-i * fFreq31 * LoE);
01146   complex<double> oscDeltaM41 = 1.0 - exp(-i * fFreq41 * LoE);
01147 
01148   int idxi = (TMath::Abs(inunoosc) - 12) / 2;
01149   int idxf = (TMath::Abs(inu) - 12) / 2;
01150 
01151   double oscProb;
01152 
01153   if(inu==inunoosc){
01154     oscProb  =  norm(1.0
01155                      - fU2[idxi][0] * oscDeltaM21     
01156                      - fU2[idxi][1] * oscDeltaM31
01157                      - fU2[idxi][2] * oscDeltaM41 );
01158   }
01159   else if(inu>0&&inunoosc>0){
01160     oscProb  =  norm(  fUc[idxi][0] * fU[idxf][0] * oscDeltaM21     
01161                      + fUc[idxi][1] * fU[idxf][1] * oscDeltaM31
01162                      + fUc[idxi][2] * fU[idxf][2] * oscDeltaM41);
01163   }
01164   else if(inu<0&&inunoosc<0){
01165     oscProb  =  norm(  fUc[idxf][0] * fU[idxi][0] * oscDeltaM21     
01166                      + fUc[idxf][1] * fU[idxi][1] * oscDeltaM31
01167                      + fUc[idxf][2] * fU[idxi][2] * oscDeltaM41);
01168   }
01169   else{
01170     oscProb = 0.0;
01171     cout << "Error: oscillating neutrino into antineutrino or vice versa. Setting probability to zero." << endl;
01172   }
01173 
01174   return oscProb;
01175 
01176 }

double NuOscProbCalc::SterileProb::ProbabilityXtoNuS ( int  inunoosc,
double  energy,
double  baseline 
)

Definition at line 1179 of file NuOscProbCalc.cxx.

01180 {
01181 
01182   this->BuildMatrix();
01183 
01184   complex<double> i(0.0, 1.0);
01185 
01186   double LoE = 2 * baseline / energy;
01187 
01188   complex<double> oscDeltaM21 = 1.0 - exp(-i * fFreq21 * LoE);
01189   complex<double> oscDeltaM31 = 1.0 - exp(-i * fFreq31 * LoE);
01190   complex<double> oscDeltaM41 = 1.0 - exp(-i * fFreq41 * LoE);
01191 
01192   int idxi = (TMath::Abs(inunoosc) - 12) / 2;
01193 
01194   double oscProb;
01195 
01196   if(inunoosc>0){
01197     oscProb  =  norm(  fUc[idxi][0] * fU[3][0] * oscDeltaM21     
01198                      + fUc[idxi][1] * fU[3][1] * oscDeltaM31
01199                      + fUc[idxi][2] * fU[3][2] * oscDeltaM41);
01200   }
01201   else if(inunoosc<0){
01202     oscProb  =  norm(  fUc[3][0] * fU[idxi][0] * oscDeltaM21     
01203                      + fUc[3][1] * fU[idxi][1] * oscDeltaM31
01204                      + fUc[3][2] * fU[idxi][2] * oscDeltaM41);
01205   }
01206   else{
01207     oscProb = 0.0;
01208     cout << "Error: oscillating neutrino into antineutrino or vice versa. Setting probability to zero." << endl;
01209   }
01210 
01211   return oscProb;
01212 
01213 }

void NuOscProbCalc::SterileProb::SetDefaultFFP (  ) 

Definition at line 1034 of file NuOscProbCalc.cxx.

References MuELoss::e, SetDelta14(), SetDelta24(), SetDeltaCP(), SetDm21(), SetDm32(), SetDm43(), SetTheta12(), SetTheta13(), SetTheta14(), SetTheta23(), SetTheta24(), and SetTheta34().

01034                                             {
01035   //Values set by PDG Neutrino Mixing Table as of 2014-02 
01036   this->SetDm21(7.5e-5);
01037   this->SetDm32(2.32e-3);
01038   this->SetDm43(0.0);
01039   this->SetTheta12(0.592);
01040   this->SetTheta13(0.157);
01041   this->SetTheta14(0.0);
01042   this->SetTheta23(3.1415926/4.0);
01043   this->SetTheta24(0.0);
01044   this->SetTheta34(0.0);
01045   this->SetDeltaCP(0.0);
01046   this->SetDelta14(0.0);
01047   this->SetDelta24(0.0);
01048 
01049   return;
01050 
01051 
01052 }

void NuOscProbCalc::SterileProb::SetDelta14 ( double  delta  )  [inline]

Definition at line 269 of file NuOscProbCalc.h.

References fDelta14, and fMixDirty.

Referenced by SetDefaultFFP().

00269 { fDelta14 = delta; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetDelta24 ( double  delta  )  [inline]

Definition at line 270 of file NuOscProbCalc.h.

References fDelta24, and fMixDirty.

Referenced by SetDefaultFFP().

00270 { fDelta24 = delta; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetDeltaCP ( double  delta  )  [inline]

Definition at line 268 of file NuOscProbCalc.h.

References fDeltaCP, and fMixDirty.

Referenced by SetDefaultFFP().

00268 { fDeltaCP = delta; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetDm21 ( double  dm  )  [inline]

Definition at line 271 of file NuOscProbCalc.h.

References fDm21, and fDmDirty.

Referenced by SetDefaultFFP().

00271 { fDm21 = dm; fDmDirty = true; }

void NuOscProbCalc::SterileProb::SetDm32 ( double  dm  )  [inline]

Definition at line 272 of file NuOscProbCalc.h.

References fDm32, and fDmDirty.

Referenced by SetDefaultFFP().

00272 { fDm32 = dm; fDmDirty = true; }

void NuOscProbCalc::SterileProb::SetDm43 ( double  dm  )  [inline]

Definition at line 273 of file NuOscProbCalc.h.

References fDm43, and fDmDirty.

Referenced by SetDefaultFFP().

00273 { fDm43 = dm; fDmDirty = true; }

void NuOscProbCalc::SterileProb::SetFourFlavourParams ( double  dm232,
const double  theta23,
double  dm221,
double  dm243,
const double  theta12,
const double  theta13,
const double  theta14,
const double  theta24,
const double  theta34,
double  delta1,
double  delta2,
double  delta3 
)

Definition at line 1010 of file NuOscProbCalc.cxx.

Referenced by NuMMRunSterile::MCOscillated(), and SterileProb().

01015 {
01016 
01017   this->SetDm21(dm221);
01018   this->SetDm32(dm232);
01019   this->SetDm43(dm243);
01020   this->SetTheta12(theta12);
01021   this->SetTheta13(theta13);
01022   this->SetTheta14(theta14);
01023   this->SetTheta23(theta23);
01024   this->SetTheta24(theta24);
01025   this->SetTheta34(theta34);
01026   this->SetDeltaCP(delta1);
01027   this->SetDelta14(delta2);
01028   this->SetDelta24(delta3);
01029 
01030   return;
01031 
01032 }

void NuOscProbCalc::SterileProb::SetTheta12 ( double  th  )  [inline]

Definition at line 262 of file NuOscProbCalc.h.

References fMixDirty, and fTheta12.

Referenced by SetDefaultFFP().

00262 { fTheta12 = th; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetTheta13 ( double  th  )  [inline]

Definition at line 263 of file NuOscProbCalc.h.

References fMixDirty, and fTheta13.

Referenced by SetDefaultFFP().

00263 { fTheta13 = th; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetTheta14 ( double  th  )  [inline]

Definition at line 265 of file NuOscProbCalc.h.

References fMixDirty, and fTheta14.

Referenced by SetDefaultFFP().

00265 { fTheta14 = th; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetTheta23 ( double  th  )  [inline]

Definition at line 264 of file NuOscProbCalc.h.

References fMixDirty, and fTheta23.

Referenced by SetDefaultFFP().

00264 { fTheta23 = th; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetTheta24 ( double  th  )  [inline]

Definition at line 266 of file NuOscProbCalc.h.

References fMixDirty, and fTheta24.

Referenced by SetDefaultFFP().

00266 { fTheta24 = th; fMixDirty = true; }

void NuOscProbCalc::SterileProb::SetTheta34 ( double  th  )  [inline]

Definition at line 267 of file NuOscProbCalc.h.

References fMixDirty, and fTheta34.

Referenced by SetDefaultFFP().

00267 { fTheta34 = th; fMixDirty = true; }


Member Data Documentation

Definition at line 286 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDelta14().

Definition at line 286 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDelta24().

Definition at line 286 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDeltaCP().

Definition at line 283 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDm21().

Definition at line 283 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDm32().

Definition at line 283 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetDm43().

Definition at line 281 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), SetDm21(), SetDm32(), and SetDm43().

Definition at line 290 of file NuOscProbCalc.h.

Referenced by BuildMatrix().

Definition at line 290 of file NuOscProbCalc.h.

Referenced by BuildMatrix().

Definition at line 290 of file NuOscProbCalc.h.

Referenced by BuildMatrix().

Definition at line 284 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta12().

Definition at line 284 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta13().

Definition at line 285 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta14().

Definition at line 284 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta23().

Definition at line 285 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta24().

Definition at line 285 of file NuOscProbCalc.h.

Referenced by BuildMatrix(), and SetTheta34().

complex<double> NuOscProbCalc::SterileProb::fU[4][3] [private]

Definition at line 287 of file NuOscProbCalc.h.

Referenced by BuildMatrix().

complex<double> NuOscProbCalc::SterileProb::fU2[4][3] [private]

Definition at line 289 of file NuOscProbCalc.h.

Referenced by BuildMatrix().

complex<double> NuOscProbCalc::SterileProb::fUc[4][3] [private]

Definition at line 288 of file NuOscProbCalc.h.

Referenced by BuildMatrix().


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

Generated on 18 Jan 2018 for loon by  doxygen 1.6.1