Something went wrong on our end
-
Bertram Kopf authoredf67a63e4
SphericalHarmonic.cc 1.27 KiB
#include <algorithm>
#include <cmath>
#include "qft++Extension/SphericalHarmonic.hh"
#include "Utils/MathUtils.hh"
#include "qft++/relativistic-quantum-mechanics/Utils.hh"
namespace SphericalHarmonic{
double LegendrePolynomial(unsigned int l, int m, double cosT){
int LplusM=l+m;
double prefac1= MathUtils::factorial(LplusM);
int LminusM=l-m;
double prefac2= MathUtils::factorial(LminusM);
double result=prefac1/prefac2*Wigner_d((int) l, m, 0, acos(cosT));
return result;
}
std::complex<double> SphericalHarmonicFunc(int l, int m, double theta, double phi){
// double prefac1=(2.*l+1.)/(4*M_PI);
// int LminusM=l-m;
// double prefac2= MathUtils::factorial(LminusM);
// int LplusM=l+m;
// double prefac3= MathUtils::factorial(LplusM);
// double prefacAll=sqrt(prefac1*prefac2/prefac3);
// // if(m>0) prefacAll*=pow(-1.,m);
// std::complex<double> exp_imphi(cos(m*phi), sin(m*phi));
// std::complex<double> result=prefacAll*LegendrePolynomial(l, m, cos(theta))*exp_imphi;
double prefac=sqrt((2.*l+1.)/(4*M_PI));
std::complex<double> result=prefac*conj(Wigner_D(phi, theta, 0, l, m, 0));
if(result.imag()!=0.){
std::cout << "result: " << result << std::endl;
}
return result;
}
}