Classes | Public Member Functions | Protected Attributes | Private Member Functions | List of all members
osc::OscCalculatorGeneral Class Reference

#include <OscCalculatorGeneral.h>

Inheritance diagram for osc::OscCalculatorGeneral:
osc::IOscCalculatorAdjustable osc::IOscCalculator

Classes

struct  Priv
 

Public Member Functions

 OscCalculatorGeneral ()
 
virtual ~OscCalculatorGeneral ()
 
virtual void SetL (double L)
 
virtual void SetRho (double rho)
 
virtual void SetDmsq21 (double dmsq21)
 
virtual void SetDmsq32 (double dmsq32)
 
virtual void SetTh12 (double th12)
 
virtual void SetTh13 (double th13)
 
virtual void SetTh23 (double th23)
 
virtual void SetdCP (double dCP)
 
void SetNSIEpsilonMuTau (double emutau)
 
double GetNSIEpsilonMuTau () const
 
virtual double P (int from, int to, double E)
 
virtual TMD5 * GetParamsHash () const override
 
- Public Member Functions inherited from osc::IOscCalculatorAdjustable
virtual double GetL () const
 
virtual double GetRho () const
 
virtual double GetDmsq21 () const
 
virtual double GetDmsq32 () const
 
virtual double GetTh12 () const
 
virtual double GetTh13 () const
 
virtual double GetTh23 () const
 
virtual double GetdCP () const
 
- Public Member Functions inherited from osc::IOscCalculator
virtual ~IOscCalculator ()
 

Protected Attributes

Priv *const d
 
double fEMuTau
 
- Protected Attributes inherited from osc::IOscCalculatorAdjustable
double fRho
 
double fL
 
double fDmsq21
 
double fDmsq32
 
double fTh12
 
double fTh13
 
double fTh23
 
double fdCP
 

Private Member Functions

 OscCalculatorGeneral (const OscCalculatorGeneral &)
 
OscCalculatorGeneraloperator= (const OscCalculatorGeneral &)
 

Additional Inherited Members

- Protected Member Functions inherited from osc::IOscCalculatorAdjustable
TMD5 * GetParamsHashDefault (const std::string &txt) const
 

Detailed Description

Definition at line 9 of file OscCalculatorGeneral.h.

Constructor & Destructor Documentation

osc::OscCalculatorGeneral::OscCalculatorGeneral ( )

Definition at line 53 of file OscCalculatorGeneral.cxx.

54  : d(new OscCalculatorGeneral::Priv), fEMuTau(0)
55  {
56  }
osc::OscCalculatorGeneral::~OscCalculatorGeneral ( )
virtual

Definition at line 58 of file OscCalculatorGeneral.cxx.

59  {
60  delete d;
61  }
osc::OscCalculatorGeneral::OscCalculatorGeneral ( const OscCalculatorGeneral )
private

Member Function Documentation

double osc::OscCalculatorGeneral::GetNSIEpsilonMuTau ( ) const
inline

Definition at line 30 of file OscCalculatorGeneral.h.

virtual TMD5* osc::OscCalculatorGeneral::GetParamsHash ( ) const
inlineoverridevirtual

Reimplemented from osc::IOscCalculator.

Definition at line 34 of file OscCalculatorGeneral.h.

35  {
36  // Default isn't good enough if we need to consider NSI
37  if(fEMuTau) return 0;
39  }
TMD5 * GetParamsHashDefault(const std::string &txt) const
OscCalculatorGeneral& osc::OscCalculatorGeneral::operator= ( const OscCalculatorGeneral )
private
double osc::OscCalculatorGeneral::P ( int  from,
int  to,
double  E 
)
virtual

Implements osc::IOscCalculator.

Definition at line 200 of file OscCalculatorGeneral.cxx.

201  {
202  const int af = abs(from);
203  const int at = abs(to);
204  assert(af == 12 || af == 14 || af == 16);
205  assert(at == 12 || at == 14 || at == 16);
206 
207  // No matter<->antimatter transitions
208  if(af*at < 0) return 0;
209 
210  ComplexMat U = GetPMNS(d);
211  // P(a->b|U) = P(abar->bbar|U*)
212  if(from < 0) conjugate_elements(U);
213 
214  ComplexVec initState = UnitVec(kNumFlavours, 1); // Display accelerator bias
215  if(af == 12) initState = UnitVec(kNumFlavours, 0);
216  if(af == 16) initState = UnitVec(kNumFlavours, 2);
217 
218  std::vector<double> mSq;
219  mSq.push_back(0);
220  mSq.push_back(fDmsq21);
221  mSq.push_back(fDmsq21 + fDmsq32);
222 
223  ComplexMat H = VacuumHamiltonian(U, mSq, E);
225  // So far, contribution to the antineutrino Hamiltonian is just the negative
226  // If there were to be any complex stuff here, would have to think about
227  // how it transformed with antineutrinos.
228  if(from < 0) H += -1*Hm; else H += Hm;
229 
230  ComplexVec finalState = EvolveState(initState, H, fL);
231 
232  if(at == 12) return std::norm(finalState(0));
233  if(at == 14) return std::norm(finalState(1));
234  if(at == 16) return std::norm(finalState(2));
235 
236  assert(0 && "Not reached");
237  }
void conjugate_elements(ComplexMat &m)
ublas::unit_vector< val_t, alloc_t > UnitVec
ComplexVec EvolveState(ComplexVec A, const ComplexMat &H, double L)
T abs(T value)
ComplexMat GetPMNS(OscCalculatorGeneral::Priv *d)
ublas::bounded_matrix< val_t, kNumFlavours, kNumFlavours > ComplexMat
ComplexMat VacuumHamiltonian(const ComplexMat &U, std::vector< double > mSq, double E)
auto norm(Vector const &v)
Return norm of the specified vector.
const unsigned int kNumFlavours
ComplexMat MatterHamiltonianComponent(double Ne, double emutau)
ublas::c_vector< val_t, kNumFlavours > ComplexVec
void osc::OscCalculatorGeneral::SetdCP ( double  dCP)
virtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 94 of file OscCalculatorGeneral.cxx.

95  {
96  fdCP = delta;
97 
98  d->phase = std::polar(1.0, -delta);
99 
100  d->react(2, 2) = d->react(0, 0) = d->c13;
101  d->react(0, 2) = d->s13*d->phase;
102  d->react(2, 0) = -std::conj(d->react(0, 2));
103  d->dirty = true;
104  }
virtual void osc::OscCalculatorGeneral::SetDmsq21 ( double  dmsq21)
inlinevirtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 20 of file OscCalculatorGeneral.h.

20 {fDmsq21 = dmsq21;}
virtual void osc::OscCalculatorGeneral::SetDmsq32 ( double  dmsq32)
inlinevirtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 22 of file OscCalculatorGeneral.h.

22 {fDmsq32 = dmsq32;}
virtual void osc::OscCalculatorGeneral::SetL ( double  L)
inlinevirtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 16 of file OscCalculatorGeneral.h.

void osc::OscCalculatorGeneral::SetNSIEpsilonMuTau ( double  emutau)
inline

Definition at line 29 of file OscCalculatorGeneral.h.

29 {fEMuTau = emutau;}
virtual void osc::OscCalculatorGeneral::SetRho ( double  rho)
inlinevirtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 18 of file OscCalculatorGeneral.h.

void osc::OscCalculatorGeneral::SetTh12 ( double  th12)
virtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 85 of file OscCalculatorGeneral.cxx.

86  {
87  fTh12 = th12;
88  d->solar(1, 1) = d->solar(0, 0) = cos(th12);
89  d->solar(0, 1) = sin(th12);
90  d->solar(1, 0) = -d->solar(0, 1);
91  d->dirty = true;
92  }
void osc::OscCalculatorGeneral::SetTh13 ( double  th13)
virtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 73 of file OscCalculatorGeneral.cxx.

74  {
75  fTh13 = th13;
76  d->c13 = cos(th13);
77  d->s13 = sin(th13);
78 
79  d->react(2, 2) = d->react(0, 0) = d->c13;
80  d->react(0, 2) = d->s13*d->phase;
81  d->react(2, 0) = -std::conj(d->react(0, 2));
82  d->dirty = true;
83  }
void osc::OscCalculatorGeneral::SetTh23 ( double  th23)
virtual

Implements osc::IOscCalculatorAdjustable.

Definition at line 64 of file OscCalculatorGeneral.cxx.

65  {
66  fTh23 = th23;
67  d->atmos(2, 2) = d->atmos(1, 1) = cos(th23);
68  d->atmos(1, 2) = sin(th23);
69  d->atmos(2, 1) = -d->atmos(1, 2);
70  d->dirty = true;
71  }

Member Data Documentation

Priv* const osc::OscCalculatorGeneral::d
protected

Definition at line 41 of file OscCalculatorGeneral.h.

double osc::OscCalculatorGeneral::fEMuTau
protected

Definition at line 45 of file OscCalculatorGeneral.h.


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