]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGCF/EBYE/BalanceFunctions/AliBalancePsi.h
do correction in 2dimensions for 1D analysis for cross checking integrals
[u/mrichter/AliRoot.git] / PWGCF / EBYE / BalanceFunctions / AliBalancePsi.h
1 #ifndef ALIBALANCEPSI_H
2 #define ALIBALANCEPSI_H
3 /*  See cxx source for full Copyright notice */
4
5
6 /* $Id: AliBalancePsi.h 54125 2012-01-24 21:07:41Z miweber $ */
7
8 //-------------------------------------------------------------------------
9 //                          Class AliBalancePsi
10 //   This is the class for the Balance Function writ Psi analysis
11 //
12 //    Origin: Panos Christakoglou, Nikhef, Panos.Christakoglou@cern.ch
13 //-------------------------------------------------------------------------
14
15 #include <vector>
16 #include <TObject.h>
17 #include "TString.h"
18 #include "TH2D.h"
19
20 #include "AliTHn.h"
21
22 using std::vector;
23
24 #define ANALYSIS_TYPES  7
25 #define MAXIMUM_NUMBER_OF_STEPS 1024
26 #define MAXIMUM_STEPS_IN_PSI 360
27
28 class TH1D;
29 class TH2D;
30 class TH3D;
31
32 const Int_t kTrackVariablesSingle = 2;       // track variables in histogram (centrality, phi-Psi2, eta, phi, pTtrig)
33 const Int_t kTrackVariablesPair   = 5;       // track variables in histogram (centrality, phi-Psi2, dEta, dPhi, pTtrig, ptAssociated)
34 const TString gBFPsiAnalysisType[ANALYSIS_TYPES] = {"y","eta","qlong","qout","qside","qinv","phi"};
35
36 class AliBalancePsi : public TObject {
37  public:
38   enum EAnalysisType {
39     kRapidity = 0, 
40     kEta      = 1, 
41     kQlong    = 2, 
42     kQout     = 3, 
43     kQside    = 4, 
44     kQinv     = 5, 
45     kPhi      = 6 
46   };
47
48   AliBalancePsi();
49   AliBalancePsi(const AliBalancePsi& balance);
50   ~AliBalancePsi();
51
52   void SetCentralityIdentifier(const char* centralityId) {
53     fCentralityId = centralityId;}
54   
55   void SetAnalysisLevel(const char* analysisLevel) {
56     fAnalysisLevel = analysisLevel;}
57   void SetShuffle(Bool_t shuffle) {fShuffle = shuffle;}
58   void SetCentralityInterval(Double_t cStart, Double_t cStop)  { fCentStart = cStart; fCentStop = cStop;};
59
60   void InitHistograms(void);
61
62   const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}
63   Int_t GetNumberOfAnalyzedEvent() {return fAnalyzedEvents;}
64
65   void CalculateBalance(Double_t gReactionPlane, 
66                         TObjArray* particles,
67                         TObjArray* particlesMixed,
68                         Float_t bSign);
69   
70   TH2D   *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax,
71                                    Double_t ptTriggerMin=-1.,
72                                    Double_t ptTriggerMax=-1.,
73                                    Double_t ptAssociatedMin=-1.,
74                                    Double_t ptAssociatedMax=-1);
75   TH2D   *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax,
76                                    Double_t ptTriggerMin=-1.,
77                                    Double_t ptTriggerMax=-1.,
78                                    Double_t ptAssociatedMin=-1.,
79                                    Double_t ptAssociatedMax=-1);
80   TH2D   *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax,
81                                    Double_t ptTriggerMin=-1.,
82                                    Double_t ptTriggerMax=-1.,
83                                    Double_t ptAssociatedMin=-1.,
84                                    Double_t ptAssociatedMax=-1);
85   TH2D   *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax,
86                                    Double_t ptTriggerMin=-1.,
87                                    Double_t ptTriggerMax=-1.,
88                                    Double_t ptAssociatedMin=-1.,
89                                    Double_t ptAssociatedMax=-1);
90   TH2D   *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax,
91                                                   Double_t ptTriggerMin=-1.,
92                                                   Double_t ptTriggerMax=-1.,
93                                                   Double_t ptAssociatedMin=-1.,
94                                                   Double_t ptAssociatedMax=-1);
95
96   AliTHn *GetHistNp() {return fHistP;}
97   AliTHn *GetHistNn() {return fHistN;}
98   AliTHn *GetHistNpn() {return fHistPN;}
99   AliTHn *GetHistNnp() {return fHistNP;}
100   AliTHn *GetHistNpp() {return fHistPP;}
101   AliTHn *GetHistNnn() {return fHistNN;}
102
103   void SetHistNp(AliTHn *gHist) {
104     fHistP = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();}
105   void SetHistNn(AliTHn *gHist) {
106     fHistN = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();}
107   void SetHistNpn(AliTHn *gHist) {
108     fHistPN = gHist; }//fHistPN->FillParent(); fHistPN->DeleteContainers();}
109   void SetHistNnp(AliTHn *gHist) {
110     fHistNP = gHist; }//fHistNP->FillParent(); fHistNP->DeleteContainers();}
111   void SetHistNpp(AliTHn *gHist) {
112     fHistPP = gHist; }//fHistPP->FillParent(); fHistPP->DeleteContainers();}
113   void SetHistNnn(AliTHn *gHist) {
114     fHistNN = gHist; }//fHistNN->FillParent(); fHistNN->DeleteContainers();}
115
116   TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
117                                     Int_t iVariablePair,
118                                     Double_t psiMin, Double_t psiMax,
119                                     Double_t ptTriggerMin=-1.,
120                                     Double_t ptTriggerMax=-1.,
121                                     Double_t ptAssociatedMin=-1.,
122                                     Double_t ptAssociatedMax=-1);
123
124   TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle,
125                                     Int_t iVariablePair,
126                                     Double_t psiMin, Double_t psiMax,
127                                     Double_t ptTriggerMin=-1.,
128                                     Double_t ptTriggerMax=-1.,
129                                     Double_t ptAssociatedMin=-1.,
130                                     Double_t ptAssociatedMax=-1,
131                                     AliBalancePsi *bfMix=NULL);
132
133   TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax,
134                                            Double_t ptTriggerMin=-1.,
135                                            Double_t ptTriggerMax=-1.,
136                                            Double_t ptAssociatedMin=-1.,
137                                            Double_t ptAssociatedMax=-1);
138   
139   TH2D *GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(Double_t psiMin, Double_t psiMax,
140                                                    Double_t ptTriggerMin=-1.,
141                                                    Double_t ptTriggerMax=-1.,
142                                                    Double_t ptAssociatedMin=-1.,
143                                                    Double_t ptAssociatedMax=-1.,
144                                                    AliBalancePsi *bfMix=NULL);
145
146   TH1D *GetBalanceFunction1DFrom2D2pMethod(Bool_t bPhi,
147                                            Double_t psiMin, Double_t psiMax,
148                                            Double_t ptTriggerMin=-1.,
149                                            Double_t ptTriggerMax=-1.,
150                                            Double_t ptAssociatedMin=-1.,
151                                            Double_t ptAssociatedMax=-1.,
152                                            AliBalancePsi *bfMix=NULL);
153   
154   TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;}
155   TH2D *GetQAHistHBTafter() {return fHistHBTafter;}
156   TH2D *GetQAHistConversionbefore() {return fHistConversionbefore;}
157   TH2D *GetQAHistConversionafter() {return fHistConversionafter;}
158   TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;}
159
160   void UseHBTCut() {fHBTCut = kTRUE;}
161   void UseConversionCut() {fConversionCut = kTRUE;}
162
163  private:
164   Float_t GetDPhiStar(Float_t phi1, Float_t pt1, Float_t charge1, Float_t phi2, Float_t pt2, Float_t charge2, Float_t radius, Float_t bSign); 
165
166   Bool_t fShuffle; //shuffled balance function object
167   TString fAnalysisLevel; //ESD, AOD or MC
168   Int_t fAnalyzedEvents; //number of events that have been analyzed
169
170   TString fCentralityId;//Centrality identifier to be used for the histo naming
171
172   Double_t fCentStart;
173   Double_t fCentStop;
174
175   AliTHn *fHistP; //N+
176   AliTHn *fHistN; //N-
177   AliTHn *fHistPN; //N+-
178   AliTHn *fHistNP; //N-+
179   AliTHn *fHistPP; //N++
180   AliTHn *fHistNN; //N--
181
182   //QA histograms
183   TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts
184   TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts
185   TH2D *fHistConversionbefore; // Delta Eta vs. Delta Phi before Conversion cuts
186   TH2D *fHistConversionafter; // Delta Eta vs. Delta Phi before Conversion cuts
187   TH2D *fHistPsiMinusPhi;//
188
189   Double_t fPsiInterval;// interval in Psi-phi1
190
191   Bool_t fHBTCut;//HBT cut
192   Bool_t fConversionCut;//conversion cut
193
194   AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}
195
196   ClassDef(AliBalancePsi, 1)
197 };
198
199 #endif