PWGCFfemtoscopyUser converted to native cmake
[u/mrichter/AliRoot.git] / PWGCF / FEMTOSCOPY / AliFemtoUser / AliFemtoCorrFctnDEtaDPhiCorrections.h
1 ////////////////////////////////////////////////////////////////////////////////
2 //                                                                            //
3 // AliFemtoCorrFctnDEtaDPhiCorrections - A correlation function that analyzes //
4 // two particle correlations with respect to the azimuthal angle (phi)        //
5 // and pseudorapidity (eta) difference                                        //
6 //                                                                            //
7 // Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
8 //                                                                            //
9 ////////////////////////////////////////////////////////////////////////////////
10
11 #ifndef ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H
12 #define ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H
13
14 #include "TH1D.h"
15 #include "TH2D.h"
16 #include "TH1F.h"
17 #include "TH2F.h"
18 #include "TH3F.h"
19 #include "THn.h"
20 #include "THnSparse.h"
21 #include "TFile.h"
22 #include "AliFemtoCorrFctn.h"
23
24 class AliFemtoCorrFctnDEtaDPhiCorrections : public AliFemtoCorrFctn {
25 public:
26   enum CorrectionType {kNone=0, kPt=1, kEta=2};
27   enum ParticleType {kNoCorrection=0, kPion=1, kKaon=2, kProton=3, kAll=4, kPionMinus=5, kKaonMinus=6, kProtonMinus=7};
28   typedef enum CorrectionType ReadCorrectionType;
29
30   AliFemtoCorrFctnDEtaDPhiCorrections(char* title, const int& aPhiBins, const int& aEtaBins);
31   AliFemtoCorrFctnDEtaDPhiCorrections(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);
32   virtual ~AliFemtoCorrFctnDEtaDPhiCorrections();
33
34   AliFemtoCorrFctnDEtaDPhiCorrections& operator=(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);
35
36   virtual AliFemtoString Report();
37   virtual void AddRealPair(AliFemtoPair* aPair);
38   virtual void AddMixedPair(AliFemtoPair* aPair);
39
40   virtual void Finish();
41   void SetDoFullAnalysis(Bool_t do2d);
42   double CalculateCorrectionWeight(double pT1, double pT2);
43   double CalculateCorrectionWeight(double pT1);
44   double CalculateCorrectionWeight(double pT1, double pT2, double eta1, double eta2, double phi1, double phi2, double zvert1, double zvert2);
45   void LoadCorrectionTabFromROOTFile1D(const char *file, ParticleType partType1, ParticleType partType2);
46   void LoadCorrectionTabFromROOTFile(const char *file, ParticleType partType1, ParticleType partType2, bool doPtCorr, bool doEtaCorr, bool doPhiCorr, bool doZVertCorr);
47   //  void LoadCorrectionTabFromFile(const char *pTtab, const char *corrTab); // Not implemented
48   void SetCorrectionTab(ParticleType partType);
49   
50   void WriteHistos();
51   virtual TList* GetOutputList();
52 private:
53   
54   TH2D *fDPhiDEtaNumerator;          // Numerator of dEta dPhi function
55   TH2D *fDPhiDEtaDenominator;        // Denominator of dEta dPhi function
56
57   TH1D *fDPhiNumerator;              // Numerator of dPhi correlation
58   TH1D *fDPhiDenominator;            // Denominator of dPhi correlation
59
60   TH1D *fDCosNumerator;              // Numerator of colinearity correlation
61   TH1D *fDCosDenominator;            // Denominator of colinearity correlation
62
63   Bool_t   fDoFullAnalysis;               // set to 1 to do 2D Pt analysis
64
65   TH1D *fPhi;
66   TH1D *fEta;
67   TH1D *fPtSumDist;
68
69   TH2D *fYtYtNumerator;
70   TH2D *fYtYtDenominator; 
71
72   bool fIfCorrection;
73   THnSparseF *fPtCorrectionsNum;
74   THnSparseF *fPtCorrectionsDen;
75
76   THnSparseF *fEtaCorrectionsNum;
77   THnSparseF *fEtaCorrectionsDen;
78
79   double* fCorrFactorTab;
80   double* fpTab;
81   ParticleType fPartType; // particle type for calculations of correction factor
82
83   double fphiL;
84   double fphiT;
85
86   TFile *ifileCorrTab;
87   bool fdoPtCorr;
88   bool fdoEtaCorr;
89   bool fdoPhiCorr;
90   bool fdoZVertCorr;
91   int fpartType1;
92   int fpartType2;
93
94   THnT<float>* fhntReco1;
95   THnT<float>* fhntReco2;
96   TH1F *fh1Reco1;
97   TH1F *fh1Reco2;
98   TH2F *fh2Reco1;
99   TH2F *fh2Reco2;
100   TH3F *fh3Reco1;
101   TH3F *fh3Reco2;
102   TH1D *fhCont1;
103   TH1D *fhCont2;
104
105   bool fCorr1D;
106
107 #ifdef __ROOT__
108   ClassDef(AliFemtoCorrFctnDEtaDPhiCorrections, 1)
109 #endif
110 };
111
112
113 #endif
114