//////////////////////////////////////////////////////////////////////// // // Implementation of oscillations of neutrinos in matter in a // three-neutrino framework. // // jcoelho\@apc.in2p3.fr //////////////////////////////////////////////////////////////////////// #include "PMNS_Fast.h" #include "MatrixDecomp/zheevh3.h" #include #include #include using namespace OscProb; //...................................................................... /// /// Constructor. \sa PMNS_Base::PMNS_Base /// /// This class is restricted to 3 neutrino flavours. /// PMNS_Fast::PMNS_Fast() : PMNS_Base(), fHam() {} //...................................................................... /// /// Nothing to clean. /// PMNS_Fast::~PMNS_Fast(){} //...................................................................... /// /// Set all mixing parameters at once. /// @param th12 - The value of the mixing angle theta_12 /// @param th23 - The value of the mixing angle theta_23 /// @param th13 - The value of the mixing angle theta_13 /// @param deltacp - The value of the CP phase delta_13 /// void PMNS_Fast::SetMix(double th12, double th23, double th13, double deltacp) { SetAngle(1,2, th12); SetAngle(1,3, th13); SetAngle(2,3, th23); SetDelta(1,3, deltacp); } //...................................................................... /// /// Set both mass-splittings at once. /// /// These are Dm_21 and Dm_32 in eV^2.\n /// The corresponding Dm_31 is set in the class attributes. /// /// @param dm21 - The solar mass-splitting Dm_21 /// @param dm32 - The atmospheric mass-splitting Dm_32 /// void PMNS_Fast::SetDeltaMsqrs(double dm21, double dm32) { SetDm(2, dm21); SetDm(3, dm32 + dm21); } //...................................................................... /// /// Build the full Hamiltonian in matter. /// /// Here we divide the mass squared matrix Hms by the 2E /// to obtain the vacuum Hamiltonian in eV. Then, the matter /// potential is added to the electron component. /// void PMNS_Fast::UpdateHam() { double lv = 2 * kGeV2eV*fEnergy; // 2E in eV double kr2GNe = kK2*M_SQRT2*kGf; kr2GNe *= fPath.density * fPath.zoa; // Matter potential in eV // Finish building Hamiltonian in matter with dimension of eV for(int i=0;i