ROOT logo
////////////////////////////////////////////////////////////////////////////////
//                                                                            //
// AliFemtoCorrFctnDEtaDPhiCorrections - A correlation function that analyzes //
// two particle correlations with respect to the azimuthal angle (phi)        //
// and pseudorapidity (eta) difference                                        //
//                                                                            //
// Authors: Adam Kisiel Adam.Kisiel@cern.ch                                   //
//                                                                            //
////////////////////////////////////////////////////////////////////////////////

#ifndef ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H
#define ALIFEMTOCORRFCTNDETADPHICORRECTIONS_H

#include "TH1D.h"
#include "TH2D.h"
#include "TH1F.h"
#include "TH2F.h"
#include "TH3F.h"
#include "THn.h"
#include "THnSparse.h"
#include "TFile.h"
#include "AliFemtoCorrFctn.h"

class AliFemtoCorrFctnDEtaDPhiCorrections : public AliFemtoCorrFctn {
public:
  enum CorrectionType {kNone=0, kPt=1, kEta=2};
  enum ParticleType {kNoCorrection=0, kPion=1, kKaon=2, kProton=3, kAll=4, kPionMinus=5, kKaonMinus=6, kProtonMinus=7};
  typedef enum CorrectionType ReadCorrectionType;

  AliFemtoCorrFctnDEtaDPhiCorrections(char* title, const int& aPhiBins, const int& aEtaBins);
  AliFemtoCorrFctnDEtaDPhiCorrections(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);
  virtual ~AliFemtoCorrFctnDEtaDPhiCorrections();

  AliFemtoCorrFctnDEtaDPhiCorrections& operator=(const AliFemtoCorrFctnDEtaDPhiCorrections& aCorrFctn);

  virtual AliFemtoString Report();
  virtual void AddRealPair(AliFemtoPair* aPair);
  virtual void AddMixedPair(AliFemtoPair* aPair);

  virtual void Finish();
  void SetDoFullAnalysis(Bool_t do2d);
  double CalculateCorrectionWeight(double pT1, double pT2);
  double CalculateCorrectionWeight(double pT1);
  double CalculateCorrectionWeight(double pT1, double pT2, double eta1, double eta2, double phi1, double phi2, double zvert1, double zvert2);
  void LoadCorrectionTabFromROOTFile1D(const char *file, ParticleType partType1, ParticleType partType2);
  void LoadCorrectionTabFromROOTFile(const char *file, ParticleType partType1, ParticleType partType2, bool doPtCorr, bool doEtaCorr, bool doPhiCorr, bool doZVertCorr);
  void LoadCorrectionTabFromFile(const char *pTtab, const char *corrTab);
  void SetCorrectionTab(ParticleType partType);
  
  void WriteHistos();
  virtual TList* GetOutputList();
private:
  
  TH2D *fDPhiDEtaNumerator;          // Numerator of dEta dPhi function
  TH2D *fDPhiDEtaDenominator;        // Denominator of dEta dPhi function

  TH1D *fDPhiNumerator;              // Numerator of dPhi correlation
  TH1D *fDPhiDenominator;            // Denominator of dPhi correlation

  TH1D *fDCosNumerator;              // Numerator of colinearity correlation
  TH1D *fDCosDenominator;            // Denominator of colinearity correlation

  Bool_t   fDoFullAnalysis;               // set to 1 to do 2D Pt analysis

  TH1D *fPhi;
  TH1D *fEta;
  TH1D *fPtSumDist;

  TH2D *fYtYtNumerator;
  TH2D *fYtYtDenominator; 

  bool fIfCorrection;
  THnSparseF *fPtCorrectionsNum;
  THnSparseF *fPtCorrectionsDen;

  THnSparseF *fEtaCorrectionsNum;
  THnSparseF *fEtaCorrectionsDen;

  double* fCorrFactorTab;
  double* fpTab;
  ParticleType fPartType; // particle type for calculations of correction factor

  double fphiL;
  double fphiT;

  TFile *ifileCorrTab;
  bool fdoPtCorr;
  bool fdoEtaCorr;
  bool fdoPhiCorr;
  bool fdoZVertCorr;
  int fpartType1;
  int fpartType2;

  THnT<float>* fhntReco1;
  THnT<float>* fhntReco2;
  TH1F *fh1Reco1;
  TH1F *fh1Reco2;
  TH2F *fh2Reco1;
  TH2F *fh2Reco2;
  TH3F *fh3Reco1;
  TH3F *fh3Reco2;
  TH1D *fhCont1;
  TH1D *fhCont2;

  bool fCorr1D;

#ifdef __ROOT__
  ClassDef(AliFemtoCorrFctnDEtaDPhiCorrections, 1)
#endif
};


#endif

 AliFemtoCorrFctnDEtaDPhiCorrections.h:1
 AliFemtoCorrFctnDEtaDPhiCorrections.h:2
 AliFemtoCorrFctnDEtaDPhiCorrections.h:3
 AliFemtoCorrFctnDEtaDPhiCorrections.h:4
 AliFemtoCorrFctnDEtaDPhiCorrections.h:5
 AliFemtoCorrFctnDEtaDPhiCorrections.h:6
 AliFemtoCorrFctnDEtaDPhiCorrections.h:7
 AliFemtoCorrFctnDEtaDPhiCorrections.h:8
 AliFemtoCorrFctnDEtaDPhiCorrections.h:9
 AliFemtoCorrFctnDEtaDPhiCorrections.h:10
 AliFemtoCorrFctnDEtaDPhiCorrections.h:11
 AliFemtoCorrFctnDEtaDPhiCorrections.h:12
 AliFemtoCorrFctnDEtaDPhiCorrections.h:13
 AliFemtoCorrFctnDEtaDPhiCorrections.h:14
 AliFemtoCorrFctnDEtaDPhiCorrections.h:15
 AliFemtoCorrFctnDEtaDPhiCorrections.h:16
 AliFemtoCorrFctnDEtaDPhiCorrections.h:17
 AliFemtoCorrFctnDEtaDPhiCorrections.h:18
 AliFemtoCorrFctnDEtaDPhiCorrections.h:19
 AliFemtoCorrFctnDEtaDPhiCorrections.h:20
 AliFemtoCorrFctnDEtaDPhiCorrections.h:21
 AliFemtoCorrFctnDEtaDPhiCorrections.h:22
 AliFemtoCorrFctnDEtaDPhiCorrections.h:23
 AliFemtoCorrFctnDEtaDPhiCorrections.h:24
 AliFemtoCorrFctnDEtaDPhiCorrections.h:25
 AliFemtoCorrFctnDEtaDPhiCorrections.h:26
 AliFemtoCorrFctnDEtaDPhiCorrections.h:27
 AliFemtoCorrFctnDEtaDPhiCorrections.h:28
 AliFemtoCorrFctnDEtaDPhiCorrections.h:29
 AliFemtoCorrFctnDEtaDPhiCorrections.h:30
 AliFemtoCorrFctnDEtaDPhiCorrections.h:31
 AliFemtoCorrFctnDEtaDPhiCorrections.h:32
 AliFemtoCorrFctnDEtaDPhiCorrections.h:33
 AliFemtoCorrFctnDEtaDPhiCorrections.h:34
 AliFemtoCorrFctnDEtaDPhiCorrections.h:35
 AliFemtoCorrFctnDEtaDPhiCorrections.h:36
 AliFemtoCorrFctnDEtaDPhiCorrections.h:37
 AliFemtoCorrFctnDEtaDPhiCorrections.h:38
 AliFemtoCorrFctnDEtaDPhiCorrections.h:39
 AliFemtoCorrFctnDEtaDPhiCorrections.h:40
 AliFemtoCorrFctnDEtaDPhiCorrections.h:41
 AliFemtoCorrFctnDEtaDPhiCorrections.h:42
 AliFemtoCorrFctnDEtaDPhiCorrections.h:43
 AliFemtoCorrFctnDEtaDPhiCorrections.h:44
 AliFemtoCorrFctnDEtaDPhiCorrections.h:45
 AliFemtoCorrFctnDEtaDPhiCorrections.h:46
 AliFemtoCorrFctnDEtaDPhiCorrections.h:47
 AliFemtoCorrFctnDEtaDPhiCorrections.h:48
 AliFemtoCorrFctnDEtaDPhiCorrections.h:49
 AliFemtoCorrFctnDEtaDPhiCorrections.h:50
 AliFemtoCorrFctnDEtaDPhiCorrections.h:51
 AliFemtoCorrFctnDEtaDPhiCorrections.h:52
 AliFemtoCorrFctnDEtaDPhiCorrections.h:53
 AliFemtoCorrFctnDEtaDPhiCorrections.h:54
 AliFemtoCorrFctnDEtaDPhiCorrections.h:55
 AliFemtoCorrFctnDEtaDPhiCorrections.h:56
 AliFemtoCorrFctnDEtaDPhiCorrections.h:57
 AliFemtoCorrFctnDEtaDPhiCorrections.h:58
 AliFemtoCorrFctnDEtaDPhiCorrections.h:59
 AliFemtoCorrFctnDEtaDPhiCorrections.h:60
 AliFemtoCorrFctnDEtaDPhiCorrections.h:61
 AliFemtoCorrFctnDEtaDPhiCorrections.h:62
 AliFemtoCorrFctnDEtaDPhiCorrections.h:63
 AliFemtoCorrFctnDEtaDPhiCorrections.h:64
 AliFemtoCorrFctnDEtaDPhiCorrections.h:65
 AliFemtoCorrFctnDEtaDPhiCorrections.h:66
 AliFemtoCorrFctnDEtaDPhiCorrections.h:67
 AliFemtoCorrFctnDEtaDPhiCorrections.h:68
 AliFemtoCorrFctnDEtaDPhiCorrections.h:69
 AliFemtoCorrFctnDEtaDPhiCorrections.h:70
 AliFemtoCorrFctnDEtaDPhiCorrections.h:71
 AliFemtoCorrFctnDEtaDPhiCorrections.h:72
 AliFemtoCorrFctnDEtaDPhiCorrections.h:73
 AliFemtoCorrFctnDEtaDPhiCorrections.h:74
 AliFemtoCorrFctnDEtaDPhiCorrections.h:75
 AliFemtoCorrFctnDEtaDPhiCorrections.h:76
 AliFemtoCorrFctnDEtaDPhiCorrections.h:77
 AliFemtoCorrFctnDEtaDPhiCorrections.h:78
 AliFemtoCorrFctnDEtaDPhiCorrections.h:79
 AliFemtoCorrFctnDEtaDPhiCorrections.h:80
 AliFemtoCorrFctnDEtaDPhiCorrections.h:81
 AliFemtoCorrFctnDEtaDPhiCorrections.h:82
 AliFemtoCorrFctnDEtaDPhiCorrections.h:83
 AliFemtoCorrFctnDEtaDPhiCorrections.h:84
 AliFemtoCorrFctnDEtaDPhiCorrections.h:85
 AliFemtoCorrFctnDEtaDPhiCorrections.h:86
 AliFemtoCorrFctnDEtaDPhiCorrections.h:87
 AliFemtoCorrFctnDEtaDPhiCorrections.h:88
 AliFemtoCorrFctnDEtaDPhiCorrections.h:89
 AliFemtoCorrFctnDEtaDPhiCorrections.h:90
 AliFemtoCorrFctnDEtaDPhiCorrections.h:91
 AliFemtoCorrFctnDEtaDPhiCorrections.h:92
 AliFemtoCorrFctnDEtaDPhiCorrections.h:93
 AliFemtoCorrFctnDEtaDPhiCorrections.h:94
 AliFemtoCorrFctnDEtaDPhiCorrections.h:95
 AliFemtoCorrFctnDEtaDPhiCorrections.h:96
 AliFemtoCorrFctnDEtaDPhiCorrections.h:97
 AliFemtoCorrFctnDEtaDPhiCorrections.h:98
 AliFemtoCorrFctnDEtaDPhiCorrections.h:99
 AliFemtoCorrFctnDEtaDPhiCorrections.h:100
 AliFemtoCorrFctnDEtaDPhiCorrections.h:101
 AliFemtoCorrFctnDEtaDPhiCorrections.h:102
 AliFemtoCorrFctnDEtaDPhiCorrections.h:103
 AliFemtoCorrFctnDEtaDPhiCorrections.h:104
 AliFemtoCorrFctnDEtaDPhiCorrections.h:105
 AliFemtoCorrFctnDEtaDPhiCorrections.h:106
 AliFemtoCorrFctnDEtaDPhiCorrections.h:107
 AliFemtoCorrFctnDEtaDPhiCorrections.h:108
 AliFemtoCorrFctnDEtaDPhiCorrections.h:109
 AliFemtoCorrFctnDEtaDPhiCorrections.h:110
 AliFemtoCorrFctnDEtaDPhiCorrections.h:111
 AliFemtoCorrFctnDEtaDPhiCorrections.h:112
 AliFemtoCorrFctnDEtaDPhiCorrections.h:113
 AliFemtoCorrFctnDEtaDPhiCorrections.h:114