Heavy ion Analysis Libriares
Loading...
Searching...
No Matches
FemtoYlmMath.h
1/*
2 * FemtoYlmMath.h
3 *
4 * Created on: 25 sie 2022
5 * Author: Daniel Wielanek
6 * E-mail: daniel.wielanek@gmail.com
7 * Warsaw University of Technology, Faculty of Physics
8 */
9#ifndef HAL_ANALYSIS_FEMTO_BASE_SHMATH_FEMTOYLMMATH_H_
10#define HAL_ANALYSIS_FEMTO_BASE_SHMATH_FEMTOYLMMATH_H_
11
12#include <complex>
13
14#include <TObject.h>
15
16namespace Hal {
17
18 class FemtoYlmMath : public TObject {
19 private:
20 std::complex<double> Ceiphi(double phi) const;
21 double fPrefactors[36];
22 int fPrefshift[6];
23 int fPlmshift[6];
24 double fFactorials[24];
25 mutable std::complex<double>* fYlms;
26 public:
28 virtual ~FemtoYlmMath();
29 FemtoYlmMath(const FemtoYlmMath& aYlm);
30 FemtoYlmMath& operator=(const FemtoYlmMath& aYlm);
31 double Legendre(int ell, int emm, double ctheta) const;
32 void LegendreUpToYlm(int lmax, double ctheta, double* lbuf) const;
33 std::complex<double> Ylm(int ell, int m, double theta, double phi) const;
34 std::complex<double> Ylm(int ell, int m, double x, double y, double z) const;
35 std::complex<double>* YlmUpToL(int lmax, double x, double y, double z);
36 std::complex<double>* YlmUpToL(int lmax, double ctheta, double phi);
37 double ReYlm(int ell, int m, double theta, double phi) const;
38 double ReYlm(int ell, int m, double x, double y, double z) const;
39 double ImYlm(int ell, int m, double theta, double phi) const;
40 double ImYlm(int ell, int m, double x, double y, double z) const;
41 double DeltaJ(double aJot1, double aJot2, double aJot) const;
42 double ClebschGordan(double aJot1, double aEm1, double aJot2, double aEm2, double aJot, double aEm) const;
43 double WignerSymbol(double aJot1, double aEm1, double aJot2, double aEm2, double aJot, double aEm) const;
44 void InitializeYlms();
45 ClassDef(FemtoYlmMath, 1)
46 };
47} // namespace Hal
48
49
50#endif /* HAL_ANALYSIS_FEMTO_BASE_SHMATH_FEMTOYLMMATH_H_ */