OscCalcGeneral.h
Go to the documentation of this file.
1 #ifndef OSCCALCULATORGENERAL_H
2 #define OSCCALCULATORGENERAL_H
3 
4 #include "OscLib/IOscCalc.h"
5 
6 namespace osc
7 {
8 
9  /// \brief More generic (but probably slower) oscillation calculations
10  ///
11  /// Calculates the oscillation probabilities from first principles
12  /// (constructs the Hamiltonian and exponentiates it). The usual oscillation
13  /// calculator (a power expansion of the exponentiation in alpha and
14  /// sin(th13)) is probably faster, but this implementation has the advantages
15  /// of simplicity and flexibility. A simple non-standard-interactions model
16  /// is included. Addition of a general four-flavour sterile neutrino model,
17  /// or inclusion of varying matter densities would be relatively
18  /// trivial. Also, it's always nice to have cross-checks.
20  {
21  public:
23  virtual ~OscCalcGeneral();
24  using IOscCalc::P;
25 
26  virtual IOscCalcAdjustable* Copy() const override;
27 
28  // Baseline in km
29  virtual void SetL(double L) override {fL = L;}
30  // Density in g/cm^3
31  virtual void SetRho(double rho) override {fRho = rho;}
32  // in eV^2
33  virtual void SetDmsq21(const double& dmsq21) override {fDmsq21 = dmsq21;}
34  // This is a signed quantity, use a negative value for inverted hierarchy
35  virtual void SetDmsq32(const double& dmsq32) override {fDmsq32 = dmsq32;}
36  // In radians
37  virtual void SetTh12(const double& th12) override;
38  virtual void SetTh13(const double& th13) override;
39  virtual void SetTh23(const double& th23) override;
40  virtual void SetdCP(const double& dCP) override;
41 
42  void SetNSIEpsilonMuTau(double emutau);
43  double GetNSIEpsilonMuTau() const;
44 
45  virtual double P(int from, int to, double E) override;
46 
47  virtual TMD5* GetParamsHash() const override;
48 
49  struct Priv;
50  protected:
51  Priv* d;
52 
53  private:
54  OscCalcGeneral(const OscCalcGeneral&) = default;
55  OscCalcGeneral& operator=(const OscCalcGeneral&) = default;
56  };
57 
58 } // end namespace
59 
60 #endif
OscCalcGeneral & operator=(const OscCalcGeneral &)=default
More generic (but probably slower) oscillation calculations.
double th23
Definition: runWimpSim.h:98
virtual double P(int from, int to, double E) override
E in GeV; flavors as PDG codes (so, neg==>antinu)
virtual void SetDmsq32(const double &dmsq32) override
double th12
Definition: runWimpSim.h:98
virtual void SetTh13(const double &th13) override
virtual void SetDmsq21(const double &dmsq21) override
virtual void SetTh12(const double &th12) override
static constexpr double L
Float_t E
Definition: plot.C:20
double dCP
virtual void SetTh23(const double &th23) override
void SetNSIEpsilonMuTau(double emutau)
virtual TMD5 * GetParamsHash() const override
Use to check two calculators are in the same state.
Oscillation probability calculators.
Definition: Calcs.h:5
double GetNSIEpsilonMuTau() const
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
double dmsq32
virtual void SetL(double L) override
virtual void SetdCP(const double &dCP) override
double th13
Definition: runWimpSim.h:98
virtual void SetRho(double rho) override
virtual IOscCalcAdjustable * Copy() const override