forked from joaoabcoelho/OscProb
-
Notifications
You must be signed in to change notification settings - Fork 0
/
PMNS_Deco.h
78 lines (55 loc) · 2.18 KB
/
PMNS_Deco.h
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
////////////////////////////////////////////////////////////////////////
/// \class OscProb::PMNS_Deco
///
/// \brief Implementation of oscillations of neutrinos in matter in a
/// three-neutrino framework with decoherence.
///
/// This class expands the PMNS_Fast class including a effects from
/// decoherence in an increasing entropy and energy conserving model.
///
/// The model assumes a power law energy dependence of the decoherence
/// parameters and that decoherence occurs in the effective mass basis.
///
/// \sa PMNS_Fast
///
/// \author coelho\@lal.in2p3.fr
////////////////////////////////////////////////////////////////////////
#ifndef PMNS_Deco_H
#define PMNS_Deco_H
#include "PMNS_Fast.h"
namespace OscProb {
class PMNS_Deco : public PMNS_Fast {
public:
PMNS_Deco(); ///< Constructor
virtual ~PMNS_Deco(); ///< Destructor
/// Set any given decoherence parameter
virtual void SetGamma(int j, double val);
/// Set the \f$\Gamma_{32}\f$ parameter
virtual void SetGamma32(double val);
/// Set the decoherence angle
virtual void SetDecoAngle(double th);
/// Set the power index
virtual void SetPower(double n);
/// Get any given decoherence parameter
virtual double GetGamma(int i, int j);
/// Get the decoherence angle
virtual double GetDecoAngle();
/// Get the power index
virtual double GetPower();
typedef std::vector<complexD> row;
typedef std::vector<row> matrix;
protected:
// Resetting and propagating
virtual void ResetToFlavour(int flv); ///< Reset neutrino state to pure flavour flv
virtual void PropagatePath(OscProb::NuPath p); ///< Propagate neutrino through a single path
virtual double P(int flv); ///< Return the probability of final state in flavour flv
virtual matrix Dot(matrix A, matrix B);
virtual matrix Mult(matrix A, matrix B);
virtual matrix CTransp(matrix A);
double fGamma[3]; ///< Stores each decoherence parameter
double fPower; ///< Stores the power index parameter
matrix fRho; ///< The neutrino density matrix state
};
}
#endif
////////////////////////////////////////////////////////////////////////