]> git.uio.no Git - u/mrichter/AliRoot.git/blobdiff - PWGCF/EBYE/BalanceFunctions/AliBalancePsi.h
Event Mixing for Balance Function Psi Task (PhiCorrelation style)
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliBalancePsi.h
index a5aa8a447a994ad13b22e69633cfa980137d7c7f..5e7660121439e74d1673b0ac3ad78b94e0a00949 100644 (file)
 //    Origin: Panos Christakoglou, Nikhef, Panos.Christakoglou@cern.ch
 //-------------------------------------------------------------------------
 
+#include <vector>
 #include <TObject.h>
 #include "TString.h"
 
+#include "AliTHn.h"
+
+using std::vector;
+
 #define ANALYSIS_TYPES 7
 #define MAXIMUM_NUMBER_OF_STEPS        1024
 #define MAXIMUM_STEPS_IN_PSI 360
 
-class TGraphErrors;
 class TH1D;
 class TH2D;
 class TH3D;
 
+const Int_t nTrackVariablesSingle = 2;       // track variables in histogram (centrality, phi-Psi2, eta, phi, pTtrig)
+const Int_t nTrackVariablesPair   = 5;       // track variables in histogram (centrality, phi-Psi2, dEta, dPhi, pTtrig, ptAssociated)
 const TString gBFPsiAnalysisType[ANALYSIS_TYPES] = {"y","eta","qlong","qout","qside","qinv","phi"};
 
 class AliBalancePsi : public TObject {
@@ -42,86 +48,54 @@ class AliBalancePsi : public TObject {
   AliBalancePsi(const AliBalancePsi& balance);
   ~AliBalancePsi();
 
-  void SetPsiInterval(Double_t psiInterval) {
-    fPsiInterval = psiInterval; 
-    fPsiNumberOfBins = (Int_t)(360./fPsiInterval);}
-  void SetPsiNumberOfBins(Int_t psiNumberOfBins) {
-    fPsiNumberOfBins = psiNumberOfBins;
-    fPsiInterval = 360./fPsiNumberOfBins;}
-
   void SetCentralityIdentifier(const char* centralityId) {
     fCentralityId = centralityId;}
   
   void SetAnalysisLevel(const char* analysisLevel) {
     fAnalysisLevel = analysisLevel;}
   void SetShuffle(Bool_t shuffle) {bShuffle = shuffle;}
-  void SetInterval(Int_t iAnalysisType, Double_t p1Start, Double_t p1Stop,
-                  Int_t ibins, Double_t p2Start, Double_t p2Stop,
-                  Double_t psiInterval);
   void SetCentralityInterval(Double_t cStart, Double_t cStop)  { fCentStart = cStart; fCentStop = cStop;};
-  void SetNp(Int_t analysisType, Int_t psiBin, Double_t NpSet)   { fNp[analysisType][psiBin] = NpSet; }
-  void SetNn(Int_t analysisType, Int_t psiBin, Double_t NnSet)   { fNn[analysisType][psiBin] = NnSet; }
-  void SetNpp(Int_t analysisType, Int_t psiBin, Int_t ibin, Double_t NppSet) { if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNpp[analysisType][psiBin][ibin] = NppSet; }
-  void SetNpn(Int_t analysisType, Int_t psiBin, Int_t ibin, Double_t NpnSet) { if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNpn[analysisType][psiBin][ibin] = NpnSet; }
-  void SetNnp(Int_t analysisType, Int_t psiBin, Int_t ibin, Double_t NnpSet) { if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNnp[analysisType][psiBin][ibin] = NnpSet; }
-  void SetNnn(Int_t analysisType, Int_t psiBin, Int_t ibin, Double_t NnnSet) { if(ibin > -1 && ibin < MAXIMUM_NUMBER_OF_STEPS) fNnn[analysisType][psiBin][ibin] = NnnSet; }
 
   void InitHistograms(void);
 
   const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}
   Int_t GetNumberOfAnalyzedEvent() {return fAnalyzedEvents;}
 
-  Int_t GetNumberOfBins(Int_t ibin) {return fNumberOfBins[ibin];}
-  Double_t GetP1Start(Int_t ibin){return fP1Start[ibin];}
-  Double_t GetP1Stop(Int_t ibin){return fP1Stop[ibin];}   
-  Double_t GetP2Start(Int_t ibin){return fP2Start[ibin];}
-  Double_t GetP2Stop(Int_t ibin){return fP2Stop[ibin];}    
-  Double_t GetNp(Int_t analysisType, Int_t psiBin) const { return 1.0*fNp[analysisType][psiBin]; }
-  Double_t GetNn(Int_t analysisType, Int_t psiBin) const { return 1.0*fNn[analysisType][psiBin]; }
-  Double_t GetNnn(Int_t analysisType, Int_t psiBin, Int_t p2) const { 
-    return 1.0*fNnn[analysisType][psiBin][p2]; }
-  Double_t GetNpp(Int_t analysisType, Int_t psiBin, Int_t p2) const { 
-    return 1.0*fNpp[analysisType][psiBin][p2]; }
-  Double_t GetNpn(Int_t analysisType, Int_t psiBin, Int_t p2) const { 
-    return 1.0*fNpn[analysisType][psiBin][p2]; }  
-  Double_t GetNnp(Int_t analysisType, Int_t psiBin, Int_t p2) const { 
-    return 1.0*fNnp[analysisType][psiBin][p2]; }
-
-  void CalculateBalance(Float_t fCentrality, Double_t gReactionPlane, vector<Double_t> **chargeVector);
+  void CalculateBalance(Double_t gReactionPlane, 
+                       TObjArray* particles,
+                       TObjArray* particlesMixed);
   
-  Double_t GetBalance(Int_t iAnalysisType, Int_t psiBin, Int_t p2);
-  Double_t GetError(Int_t iAnalysisType, Int_t psiBin, Int_t p2);
-
-  TH3D *GetHistNp(Int_t iAnalysisType) { return fHistP[iAnalysisType];}
-  TH3D *GetHistNn(Int_t iAnalysisType) { return fHistN[iAnalysisType];}
-  TH3D *GetHistNpn(Int_t iAnalysisType) { return fHistPN[iAnalysisType];}
-  TH3D *GetHistNnp(Int_t iAnalysisType) { return fHistNP[iAnalysisType];}
-  TH3D *GetHistNpp(Int_t iAnalysisType) { return fHistPP[iAnalysisType];}
-  TH3D *GetHistNnn(Int_t iAnalysisType) { return fHistNN[iAnalysisType];}
-
-  void PrintAnalysisSettings();
-  TGraphErrors *DrawBalance(Int_t fAnalysisType, Int_t psiBin);
-
-  void SetHistNp(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistP[iAnalysisType] = gHist;}
-  void SetHistNn(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistN[iAnalysisType] = gHist;}
-  void SetHistNpn(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistPN[iAnalysisType] = gHist;}
-  void SetHistNnp(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistNP[iAnalysisType] = gHist;}
-  void SetHistNpp(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistPP[iAnalysisType] = gHist;}
-  void SetHistNnn(Int_t iAnalysisType, TH3D *gHist) { 
-    fHistNN[iAnalysisType] = gHist;}
-
-  TH1D *GetBalanceFunctionHistogram(Int_t iAnalysisType,
-                                   Double_t centrMin, 
-                                   Double_t centrMax, 
+  TH2D   *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax);
+  TH2D   *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax);
+  TH2D   *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax);
+  TH2D   *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax);
+
+  AliTHn *GetHistNp() {return fHistP;}
+  AliTHn *GetHistNn() {return fHistN;}
+  AliTHn *GetHistNpn() {return fHistPN;}
+  AliTHn *GetHistNnp() {return fHistNP;}
+  AliTHn *GetHistNpp() {return fHistPP;}
+  AliTHn *GetHistNnn() {return fHistNN;}
+
+  void SetHistNp(AliTHn *gHist) {
+    fHistP = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();}
+  void SetHistNn(AliTHn *gHist) {
+    fHistN = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();}
+  void SetHistNpn(AliTHn *gHist) {
+    fHistPN = gHist; }//fHistPN->FillParent(); fHistPN->DeleteContainers();}
+  void SetHistNnp(AliTHn *gHist) {
+    fHistNP = gHist; }//fHistNP->FillParent(); fHistNP->DeleteContainers();}
+  void SetHistNpp(AliTHn *gHist) {
+    fHistPP = gHist; }//fHistPP->FillParent(); fHistPP->DeleteContainers();}
+  void SetHistNnn(AliTHn *gHist) {
+    fHistNN = gHist; }//fHistNN->FillParent(); fHistNN->DeleteContainers();}
+
+  TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
+                                   Int_t iVariablePair,
                                    Double_t psiMin, Double_t psiMax);
-  void PrintResults(Int_t iAnalysisType, TH1D *gHist);
 
+  TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax);
+  
  private:
   Bool_t bShuffle; //shuffled balance function object
   TString fAnalysisLevel; //ESD, AOD or MC
@@ -129,34 +103,17 @@ class AliBalancePsi : public TObject {
 
   TString fCentralityId;//Centrality identifier to be used for the histo naming
 
-  Int_t fNumberOfBins[ANALYSIS_TYPES];//number of bins of the analyzed interval
-  Double_t fP1Start[ANALYSIS_TYPES];
-  Double_t fP1Stop[ANALYSIS_TYPES];
-  Double_t fP2Start[ANALYSIS_TYPES];
-  Double_t fP2Stop[ANALYSIS_TYPES];
-  Double_t fP2Step[ANALYSIS_TYPES]; 
   Double_t fCentStart;
   Double_t fCentStop;
 
-       
-  Double_t fNnn[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI][MAXIMUM_NUMBER_OF_STEPS]; //N(--)
-  Double_t fNpp[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI][MAXIMUM_NUMBER_OF_STEPS]; //N(++)
-  Double_t fNpn[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI][MAXIMUM_NUMBER_OF_STEPS]; //N(+-)
-  Double_t fNnp[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI][MAXIMUM_NUMBER_OF_STEPS]; //N(-+)
-  Double_t fNn[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI], fNp[ANALYSIS_TYPES][MAXIMUM_STEPS_IN_PSI]; //number of pos./neg. inside the analyzed interval
-  
-  Double_t fB[ANALYSIS_TYPES][MAXIMUM_NUMBER_OF_STEPS][MAXIMUM_STEPS_IN_PSI]; //BF matrix
-  Double_t ferror[ANALYSIS_TYPES][MAXIMUM_NUMBER_OF_STEPS][MAXIMUM_STEPS_IN_PSI]; //error of the BF
-  
-  TH3D *fHistP[ANALYSIS_TYPES]; //N+
-  TH3D *fHistN[ANALYSIS_TYPES]; //N-
-  TH3D *fHistPN[ANALYSIS_TYPES]; //N+-
-  TH3D *fHistNP[ANALYSIS_TYPES]; //N-+
-  TH3D *fHistPP[ANALYSIS_TYPES]; //N++
-  TH3D *fHistNN[ANALYSIS_TYPES]; //N--
+  AliTHn *fHistP; //N+
+  AliTHn *fHistN; //N-
+  AliTHn *fHistPN; //N+-
+  AliTHn *fHistNP; //N-+
+  AliTHn *fHistPP; //N++
+  AliTHn *fHistNN; //N--
 
   Double_t fPsiInterval;// interval in Psi-phi1
-  Int_t fPsiNumberOfBins;// number of bins
 
   AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}