]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/FEMTOSCOPY/AliFemtoUser/AliFemtoYlm.h
Merge branch 'feature-movesplit'
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemtoUser / AliFemtoYlm.h
1 ////////////////////////////////////////////////////////////////////////////////
2 //                                                                            //
3 // AliFemtoYlm - the class to calculate varous components of spherical        //
4 //  harmonics                                                                 //
5 //                                                                            //
6 // Authors: Adam Kisiel kisiel@mps.ohio-state.edu                             //
7 //                                                                            //
8 ////////////////////////////////////////////////////////////////////////////////
9
10 #ifndef ALIFEMTOYLM_H
11 #define ALIFEMTOYLM_H
12 #include <cstdlib>
13 #include <cmath>
14 #include <complex>
15 #include <TMath.h>
16
17 class AliFemtoYlm {
18  public:
19   AliFemtoYlm();
20   ~AliFemtoYlm();
21
22   AliFemtoYlm(const AliFemtoYlm& aYlm);
23   AliFemtoYlm& operator=(const AliFemtoYlm& aYlm);
24
25   static double Legendre(int ell, int emm, double ctheta);
26   static void   LegendreUpToYlm(int lmax, double ctheta, double *lbuf);
27
28   static std::complex<double> Ylm(int ell,int m,double theta,double phi);
29   static std::complex<double> Ylm(int ell, int m, double x, double y, double z);
30
31   static void YlmUpToL(int lmax, double x, double y, double z, std::complex<double> *ylms);
32   static void YlmUpToL(int lmax, double ctheta, double phi, std::complex<double> *ylms);
33
34   static double ReYlm(int ell, int m, double theta, double phi);
35   static double ReYlm(int ell, int m, double x, double y, double z);
36   static double ImYlm(int ell, int m, double theta, double phi);
37   static double ImYlm(int ell, int m, double x, double y, double z);
38
39   static void InitializeYlms();
40   
41  private:
42   static std::complex<double> Ceiphi(double phi);
43
44   static double *fgPrefactors;
45   static int    *fgPrefshift;
46   static int    *fgPlmshift;
47 };
48
49 #endif