#ifndef ALIFEMTOCORRFCTNDIRECTYLM_H
#define ALIFEMTOCORRFCTNDIRECTYLM_H
#include <math.h>
#include <complex>
#include <TH1D.h>
#include <TH3D.h>
#include <TFile.h>
#include "AliFemtoCorrFctn.h"
#include "AliFemtoYlm.h"
#include "AliFemtoPairCut.h"
using namespace std;
class AliFemtoCorrFctnDirectYlm: public AliFemtoCorrFctn {
public:
AliFemtoCorrFctnDirectYlm();
AliFemtoCorrFctnDirectYlm(const char *name, int maxl, int ibin, double vmin, double vmax, int aUseLCMS);
AliFemtoCorrFctnDirectYlm(const AliFemtoCorrFctnDirectYlm& aCorrFctn);
~AliFemtoCorrFctnDirectYlm();
AliFemtoCorrFctnDirectYlm& operator=(const AliFemtoCorrFctnDirectYlm& aCorrFctn);
void AddRealPair(double *qvec, double weight=1.0);
void AddMixedPair(double *qvec, double weight=1.0);
void AddRealPair(double qout, double qside, double qlong, double weight=1.0);
void AddMixedPair(double qout, double qside, double qlong, double weight=1.0);
virtual AliFemtoString Report();
virtual void AddRealPair(AliFemtoPair* aPair);
virtual void AddMixedPair(AliFemtoPair* aPair);
virtual void Finish();
virtual TList* GetOutputList();
void Write();
void ReadFromFile(TFile *infile, const char *name, int maxl);
TH1D *GetNumRealHist(int el, int em);
TH1D *GetNumImagHist(int el, int em);
TH1D *GetDenRealHist(int el, int em);
TH1D *GetDenImagHist(int el, int em);
void SetUseLCMS(int aUseLCMS);
int GetUseLCMS();
private:
double ClebschGordan(double aJot1, double aEm1, double aJot2, double aEm2, double aJot, double aEm);
double DeltaJ(double aJot1, double aJot2, double aJot);
double WignerSymbol(double aJot1, double aEm1, double aJot2, double aEm2, double aJot, double aEm);
void GetMtilde(complex<double>* aMat, double *aMTilde);
int GetMaxJM() const;
void GetElEmForIndex(int aIndex, double *aEl, double *aEm) const;
void GetElEmForIndex(int aIndex, int *aEl, int *aEm) const;
int GetBin(int qbin, int ilmzero, int zeroimag, int ilmprim, int primimag);
int PackYlmVector(const double *invec, double *outvec);
int PackYlmMatrix(const double *inmat, double *outmat);
int GetIndexForLM(int el, int em) const;
void PackCovariances();
void UnpackCovariances();
TH1D **fnumsreal;
TH1D **fnumsimag;
TH1D **fdensreal;
TH1D **fdensimag;
TH1D *fbinctn;
TH1D *fbinctd;
TH3D *fcovnum;
TH3D *fcovden;
double *fcovmnum;
double *fcovmden;
int fMaxL;
int fMaxJM;
double *fels;
double *fems;
int *felsi;
int *femsi;
complex<double> *fYlmBuffer;
double *factorials;
double fSout;
double fSside;
double fSlong;
int fUseLCMS;
};
#endif
AliFemtoCorrFctnDirectYlm.h:1 AliFemtoCorrFctnDirectYlm.h:2 AliFemtoCorrFctnDirectYlm.h:3 AliFemtoCorrFctnDirectYlm.h:4 AliFemtoCorrFctnDirectYlm.h:5 AliFemtoCorrFctnDirectYlm.h:6 AliFemtoCorrFctnDirectYlm.h:7 AliFemtoCorrFctnDirectYlm.h:8 AliFemtoCorrFctnDirectYlm.h:9 AliFemtoCorrFctnDirectYlm.h:10 AliFemtoCorrFctnDirectYlm.h:11 AliFemtoCorrFctnDirectYlm.h:12 AliFemtoCorrFctnDirectYlm.h:13 AliFemtoCorrFctnDirectYlm.h:14 AliFemtoCorrFctnDirectYlm.h:15 AliFemtoCorrFctnDirectYlm.h:16 AliFemtoCorrFctnDirectYlm.h:17 AliFemtoCorrFctnDirectYlm.h:18 AliFemtoCorrFctnDirectYlm.h:19 AliFemtoCorrFctnDirectYlm.h:20 AliFemtoCorrFctnDirectYlm.h:21 AliFemtoCorrFctnDirectYlm.h:22 AliFemtoCorrFctnDirectYlm.h:23 AliFemtoCorrFctnDirectYlm.h:24 AliFemtoCorrFctnDirectYlm.h:25 AliFemtoCorrFctnDirectYlm.h:26 AliFemtoCorrFctnDirectYlm.h:27 AliFemtoCorrFctnDirectYlm.h:28 AliFemtoCorrFctnDirectYlm.h:29 AliFemtoCorrFctnDirectYlm.h:30 AliFemtoCorrFctnDirectYlm.h:31 AliFemtoCorrFctnDirectYlm.h:32 AliFemtoCorrFctnDirectYlm.h:33 AliFemtoCorrFctnDirectYlm.h:34 AliFemtoCorrFctnDirectYlm.h:35 AliFemtoCorrFctnDirectYlm.h:36 AliFemtoCorrFctnDirectYlm.h:37 AliFemtoCorrFctnDirectYlm.h:38 AliFemtoCorrFctnDirectYlm.h:39 AliFemtoCorrFctnDirectYlm.h:40 AliFemtoCorrFctnDirectYlm.h:41 AliFemtoCorrFctnDirectYlm.h:42 AliFemtoCorrFctnDirectYlm.h:43 AliFemtoCorrFctnDirectYlm.h:44 AliFemtoCorrFctnDirectYlm.h:45 AliFemtoCorrFctnDirectYlm.h:46 AliFemtoCorrFctnDirectYlm.h:47 AliFemtoCorrFctnDirectYlm.h:48 AliFemtoCorrFctnDirectYlm.h:49 AliFemtoCorrFctnDirectYlm.h:50 AliFemtoCorrFctnDirectYlm.h:51 AliFemtoCorrFctnDirectYlm.h:52 AliFemtoCorrFctnDirectYlm.h:53 AliFemtoCorrFctnDirectYlm.h:54 AliFemtoCorrFctnDirectYlm.h:55 AliFemtoCorrFctnDirectYlm.h:56 AliFemtoCorrFctnDirectYlm.h:57 AliFemtoCorrFctnDirectYlm.h:58 AliFemtoCorrFctnDirectYlm.h:59 AliFemtoCorrFctnDirectYlm.h:60 AliFemtoCorrFctnDirectYlm.h:61 AliFemtoCorrFctnDirectYlm.h:62 AliFemtoCorrFctnDirectYlm.h:63 AliFemtoCorrFctnDirectYlm.h:64 AliFemtoCorrFctnDirectYlm.h:65 AliFemtoCorrFctnDirectYlm.h:66 AliFemtoCorrFctnDirectYlm.h:67 AliFemtoCorrFctnDirectYlm.h:68 AliFemtoCorrFctnDirectYlm.h:69 AliFemtoCorrFctnDirectYlm.h:70 AliFemtoCorrFctnDirectYlm.h:71 AliFemtoCorrFctnDirectYlm.h:72 AliFemtoCorrFctnDirectYlm.h:73 AliFemtoCorrFctnDirectYlm.h:74 AliFemtoCorrFctnDirectYlm.h:75 AliFemtoCorrFctnDirectYlm.h:76 AliFemtoCorrFctnDirectYlm.h:77 AliFemtoCorrFctnDirectYlm.h:78 AliFemtoCorrFctnDirectYlm.h:79 AliFemtoCorrFctnDirectYlm.h:80 AliFemtoCorrFctnDirectYlm.h:81 AliFemtoCorrFctnDirectYlm.h:82 AliFemtoCorrFctnDirectYlm.h:83 AliFemtoCorrFctnDirectYlm.h:84 AliFemtoCorrFctnDirectYlm.h:85 AliFemtoCorrFctnDirectYlm.h:86 AliFemtoCorrFctnDirectYlm.h:87 AliFemtoCorrFctnDirectYlm.h:88 AliFemtoCorrFctnDirectYlm.h:89 AliFemtoCorrFctnDirectYlm.h:90 AliFemtoCorrFctnDirectYlm.h:91 AliFemtoCorrFctnDirectYlm.h:92 AliFemtoCorrFctnDirectYlm.h:93 AliFemtoCorrFctnDirectYlm.h:94 AliFemtoCorrFctnDirectYlm.h:95 AliFemtoCorrFctnDirectYlm.h:96 AliFemtoCorrFctnDirectYlm.h:97 AliFemtoCorrFctnDirectYlm.h:98 AliFemtoCorrFctnDirectYlm.h:99 AliFemtoCorrFctnDirectYlm.h:100 AliFemtoCorrFctnDirectYlm.h:101 AliFemtoCorrFctnDirectYlm.h:102 AliFemtoCorrFctnDirectYlm.h:103 AliFemtoCorrFctnDirectYlm.h:104 AliFemtoCorrFctnDirectYlm.h:105 AliFemtoCorrFctnDirectYlm.h:106 AliFemtoCorrFctnDirectYlm.h:107 AliFemtoCorrFctnDirectYlm.h:108 AliFemtoCorrFctnDirectYlm.h:109 AliFemtoCorrFctnDirectYlm.h:110 AliFemtoCorrFctnDirectYlm.h:111 AliFemtoCorrFctnDirectYlm.h:112 AliFemtoCorrFctnDirectYlm.h:113 AliFemtoCorrFctnDirectYlm.h:114 AliFemtoCorrFctnDirectYlm.h:115