OscCalcDumb.h
Go to the documentation of this file.
1 //////////////////////////////////////////////////////////
2 /// \brief Simple oscillation probability calculator that
3 /// has no solar term or mass hierarchy or delta
4 /// so it's some kind of average of all of those
5 //////////////////////////////////////////////////////////
6 
7 #include "OscLib/IOscCalc.h"
8 
9 #include <cmath>
10 
11 namespace osc
12 {
13  /// \brief Simple oscillation probability calculator that has no solar term
14  /// or mass hierarchy or delta so it's some kind of average of all of
15  /// those.
16  class OscCalcDumb: public osc::IOscCalc
17  {
18  public:
19  virtual IOscCalc* Copy() const override {return new OscCalcDumb;}
20  using IOscCalc::P;
21  virtual double P(int flavBefore, int flavAfter, double E) override
22  {
23  const double L = 810.; // km
24  const double ldm = 2.40e-3; // large delta m^2, m23
25  const double ss2t13 = 0.1; // sin^2(2theta_13)
26  const double ss2t23 = 1.; // maximal sin^2(2theta_23)
27  const double ssth23 = 0.5; // sin^2(theta_23) corresponding to above
28 
29  // Signal
30  if(abs(flavAfter) == 12 && abs(flavBefore) == 14){
31  // Nue appearance
32  return ss2t13*ssth23*sqr(sin(1.267*ldm*L/E));
33  }
34  if(abs(flavAfter) == 14 && abs(flavBefore) == 14){
35  // CC mu disappearance
36  return 1-ss2t23*sqr(sin(1.267*ldm*L/E));
37  }
38 
39  // Background
40  if(abs(flavAfter) == 12 && abs(flavBefore) == 12){
41  // Beam nue
42  return 1-ss2t13*sqr(sin(1.267*ldm*L/E));
43  }
44  if(abs(flavAfter) == 14 && abs(flavBefore) == 12){
45  // CC mu appearance
46  return ss2t13*ssth23*sqr(sin(1.267*ldm*L/E));
47  }
48  if(abs(flavAfter) == 16 && abs(flavBefore) == 14){
49  //numu to nutau CC appearance
50  return (1-ss2t13)*ss2t23*sqr(sin(1.267*ldm*L/E));
51  }
52  if(abs(flavAfter) == 16 && abs(flavBefore) == 12){
53  //nue to nutau CC appearance
54  return ss2t13*(1-ssth23)*sqr(sin(1.267*ldm*L/E));
55  }
56  if(abs(flavAfter) == 16 && abs(flavBefore) == 16){
57  //nutau to nutau CC disappearance
58  return 1-(ss2t23-ss2t23*ss2t13+ss2t13-ss2t13*ssth23)*sqr(sin(1.267*ldm*L/E));
59  }
60 
61  // Don't know what this is
62  return 0;
63  }
64 
65  protected:
66  template<class T> T sqr(T x) const{return x*x;}
67  };
68 }
double ssth23
General interface to oscillation calculators.
Definition: StanTypedefs.h:22
void abs(TH1 *hist)
virtual double P(int flavBefore, int flavAfter, double E) override
E in GeV; flavors as PDG codes (so, neg==>antinu)
Definition: OscCalcDumb.h:21
static constexpr double L
Float_t E
Definition: plot.C:20
Simple oscillation probability calculator that has no solar term or mass hierarchy or delta so it&#39;s s...
Definition: OscCalcDumb.h:16
Oscillation probability calculators.
Definition: Calcs.h:5
virtual T P(int flavBefore, int flavAfter, double E)=0
E in GeV; flavors as PDG codes (so, neg==>antinu)
T sin(T number)
Definition: d0nt_math.hpp:132
T sqr(T x) const
Definition: OscCalcDumb.h:66
double T
Definition: Xdiff_gwt.C:5
virtual IOscCalc * Copy() const override
Definition: OscCalcDumb.h:19