]>
Commit | Line | Data |
---|---|---|
2922bbe3 | 1 | #ifndef ALIBALANCEPSI_H |
0879e280 | 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 | ||
c64cb1f6 | 15 | #include <vector> |
0879e280 | 16 | #include <TObject.h> |
17 | #include "TString.h" | |
73609a48 | 18 | #include "TH2D.h" |
0879e280 | 19 | |
a38fd7f3 | 20 | #include "AliTHn.h" |
21 | ||
c64cb1f6 | 22 | using std::vector; |
23 | ||
0879e280 | 24 | #define ANALYSIS_TYPES 7 |
25 | #define MAXIMUM_NUMBER_OF_STEPS 1024 | |
26 | #define MAXIMUM_STEPS_IN_PSI 360 | |
27 | ||
0879e280 | 28 | class TH1D; |
29 | class TH2D; | |
30 | class TH3D; | |
31 | ||
683cbfb5 | 32 | const Int_t kTrackVariablesSingle = 3; // track variables in histogram (event class, pTtrig, vertexZ) |
33 | const Int_t kTrackVariablesPair = 6; // track variables in histogram (event class, dEta, dPhi, pTtrig, ptAssociated, vertexZ) | |
0879e280 | 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 | ||
0879e280 | 52 | void SetCentralityIdentifier(const char* centralityId) { |
53 | fCentralityId = centralityId;} | |
54 | ||
55 | void SetAnalysisLevel(const char* analysisLevel) { | |
56 | fAnalysisLevel = analysisLevel;} | |
9fd4b54e | 57 | void SetShuffle(Bool_t shuffle) {fShuffle = shuffle;} |
0879e280 | 58 | void SetCentralityInterval(Double_t cStart, Double_t cStop) { fCentStart = cStart; fCentStop = cStop;}; |
f0fb4ac1 | 59 | void SetEventClass(TString receivedEventClass){ fEventClass = receivedEventClass; } |
7c04a4d2 | 60 | void SetDeltaEtaMax(Double_t receivedDeltaEtaMax){ fDeltaEtaMax = receivedDeltaEtaMax; } |
683cbfb5 | 61 | void SetVertexZBinning(Bool_t receivedVertexBinning=kTRUE){ fVertexBinning = receivedVertexBinning; } |
0879e280 | 62 | |
63 | void InitHistograms(void); | |
64 | ||
65 | const char* GetAnalysisLevel() {return fAnalysisLevel.Data();} | |
66 | Int_t GetNumberOfAnalyzedEvent() {return fAnalyzedEvents;} | |
67 | ||
621329de | 68 | void CalculateBalance(Double_t gReactionPlane, |
f06d59b3 | 69 | TObjArray* particles, |
73609a48 | 70 | TObjArray* particlesMixed, |
f0fb4ac1 | 71 | Float_t bSign, |
683cbfb5 | 72 | Double_t kMultorCent = -100, |
73 | Double_t vertexZ = 0); | |
0879e280 | 74 | |
6acdbcb2 | 75 | TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax, |
76 | Double_t ptTriggerMin=-1., | |
77 | Double_t ptTriggerMax=-1., | |
78 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 79 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 80 | TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax, |
81 | Double_t ptTriggerMin=-1., | |
82 | Double_t ptTriggerMax=-1., | |
83 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 84 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 85 | TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax, |
86 | Double_t ptTriggerMin=-1., | |
87 | Double_t ptTriggerMax=-1., | |
88 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 89 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 90 | TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax, |
91 | Double_t ptTriggerMin=-1., | |
92 | Double_t ptTriggerMax=-1., | |
93 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 94 | Double_t ptAssociatedMax=-1); |
7b610f27 | 95 | TH2D *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax, |
96 | Double_t ptTriggerMin=-1., | |
97 | Double_t ptTriggerMax=-1., | |
98 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 99 | Double_t ptAssociatedMax=-1); |
a38fd7f3 | 100 | |
9afe3098 | 101 | AliTHn *GetHistNp() {return fHistP;} |
102 | AliTHn *GetHistNn() {return fHistN;} | |
103 | AliTHn *GetHistNpn() {return fHistPN;} | |
104 | AliTHn *GetHistNnp() {return fHistNP;} | |
105 | AliTHn *GetHistNpp() {return fHistPP;} | |
106 | AliTHn *GetHistNnn() {return fHistNN;} | |
107 | ||
a38fd7f3 | 108 | void SetHistNp(AliTHn *gHist) { |
109 | fHistP = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();} | |
110 | void SetHistNn(AliTHn *gHist) { | |
111 | fHistN = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();} | |
112 | void SetHistNpn(AliTHn *gHist) { | |
113 | fHistPN = gHist; }//fHistPN->FillParent(); fHistPN->DeleteContainers();} | |
114 | void SetHistNnp(AliTHn *gHist) { | |
115 | fHistNP = gHist; }//fHistNP->FillParent(); fHistNP->DeleteContainers();} | |
116 | void SetHistNpp(AliTHn *gHist) { | |
117 | fHistPP = gHist; }//fHistPP->FillParent(); fHistPP->DeleteContainers();} | |
118 | void SetHistNnn(AliTHn *gHist) { | |
119 | fHistNN = gHist; }//fHistNN->FillParent(); fHistNN->DeleteContainers();} | |
9afe3098 | 120 | |
121 | TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle, | |
122 | Int_t iVariablePair, | |
6acdbcb2 | 123 | Double_t psiMin, Double_t psiMax, |
124 | Double_t ptTriggerMin=-1., | |
125 | Double_t ptTriggerMax=-1., | |
126 | Double_t ptAssociatedMin=-1., | |
127 | Double_t ptAssociatedMax=-1); | |
128 | ||
f0c5040c | 129 | TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle, |
130 | Int_t iVariablePair, | |
131 | Double_t psiMin, Double_t psiMax, | |
132 | Double_t ptTriggerMin=-1., | |
133 | Double_t ptTriggerMax=-1., | |
134 | Double_t ptAssociatedMin=-1., | |
135 | Double_t ptAssociatedMax=-1, | |
136 | AliBalancePsi *bfMix=NULL); | |
137 | ||
6acdbcb2 | 138 | TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax, |
139 | Double_t ptTriggerMin=-1., | |
140 | Double_t ptTriggerMax=-1., | |
141 | Double_t ptAssociatedMin=-1., | |
142 | Double_t ptAssociatedMax=-1); | |
621329de | 143 | |
f0c5040c | 144 | TH2D *GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(Double_t psiMin, Double_t psiMax, |
145 | Double_t ptTriggerMin=-1., | |
146 | Double_t ptTriggerMax=-1., | |
147 | Double_t ptAssociatedMin=-1., | |
148 | Double_t ptAssociatedMax=-1., | |
149 | AliBalancePsi *bfMix=NULL); | |
f2e8af26 | 150 | |
151 | TH1D *GetBalanceFunction1DFrom2D2pMethod(Bool_t bPhi, | |
152 | Double_t psiMin, Double_t psiMax, | |
153 | Double_t ptTriggerMin=-1., | |
154 | Double_t ptTriggerMax=-1., | |
155 | Double_t ptAssociatedMin=-1., | |
156 | Double_t ptAssociatedMax=-1., | |
157 | AliBalancePsi *bfMix=NULL); | |
158 | ||
159 | Bool_t GetMomentsAnalytical(TH1D* gHist, | |
160 | Double_t &mean, Double_t &meanError, | |
161 | Double_t &sigma, Double_t &sigmaError, | |
162 | Double_t &skewness, Double_t &skewnessError, | |
163 | Double_t &kurtosis, Double_t &kurtosisError); | |
f0c5040c | 164 | |
73609a48 | 165 | TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;} |
166 | TH2D *GetQAHistHBTafter() {return fHistHBTafter;} | |
167 | TH2D *GetQAHistConversionbefore() {return fHistConversionbefore;} | |
168 | TH2D *GetQAHistConversionafter() {return fHistConversionafter;} | |
e9caebd2 | 169 | TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;} |
f0754617 | 170 | TH3D *GetQAHistResonancesBefore() {return fHistResonancesBefore;} |
171 | TH3D *GetQAHistResonancesRho() {return fHistResonancesRho;} | |
172 | TH3D *GetQAHistResonancesK0() {return fHistResonancesK0;} | |
173 | TH3D *GetQAHistResonancesLambda() {return fHistResonancesLambda;} | |
73609a48 | 174 | |
2922bbe3 | 175 | void UseResonancesCut() {fResonancesCut = kTRUE;} |
73609a48 | 176 | void UseHBTCut() {fHBTCut = kTRUE;} |
177 | void UseConversionCut() {fConversionCut = kTRUE;} | |
178 | ||
0879e280 | 179 | private: |
73609a48 | 180 | 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); |
181 | ||
9fd4b54e | 182 | Bool_t fShuffle; //shuffled balance function object |
0879e280 | 183 | TString fAnalysisLevel; //ESD, AOD or MC |
184 | Int_t fAnalyzedEvents; //number of events that have been analyzed | |
185 | ||
186 | TString fCentralityId;//Centrality identifier to be used for the histo naming | |
187 | ||
0879e280 | 188 | Double_t fCentStart; |
189 | Double_t fCentStop; | |
190 | ||
9afe3098 | 191 | AliTHn *fHistP; //N+ |
192 | AliTHn *fHistN; //N- | |
193 | AliTHn *fHistPN; //N+- | |
194 | AliTHn *fHistNP; //N-+ | |
195 | AliTHn *fHistPP; //N++ | |
196 | AliTHn *fHistNN; //N-- | |
0879e280 | 197 | |
73609a48 | 198 | //QA histograms |
199 | TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts | |
200 | TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts | |
201 | TH2D *fHistConversionbefore; // Delta Eta vs. Delta Phi before Conversion cuts | |
202 | TH2D *fHistConversionafter; // Delta Eta vs. Delta Phi before Conversion cuts | |
f0754617 | 203 | TH2D *fHistPsiMinusPhi;// psi - phi QA histogram |
204 | TH3D *fHistResonancesBefore; // 3D histogram (Deta,Dphi,Invmass) before resonance cuts | |
205 | TH3D *fHistResonancesRho; // 3D histogram (Deta,Dphi,Invmass) after removing rho | |
206 | TH3D *fHistResonancesK0; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0 | |
207 | TH3D *fHistResonancesLambda; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda | |
73609a48 | 208 | |
0879e280 | 209 | Double_t fPsiInterval;// interval in Psi-phi1 |
7c04a4d2 | 210 | Double_t fDeltaEtaMax;// maximum delta eta for output THnSparse |
0879e280 | 211 | |
2922bbe3 | 212 | Bool_t fResonancesCut;//resonances cut |
73609a48 | 213 | Bool_t fHBTCut;//HBT cut |
214 | Bool_t fConversionCut;//conversion cut | |
683cbfb5 | 215 | Bool_t fVertexBinning;//use vertex z binning in AliTHn |
73609a48 | 216 | |
7c04a4d2 | 217 | TString fEventClass; |
f0fb4ac1 | 218 | |
0879e280 | 219 | AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;} |
220 | ||
221 | ClassDef(AliBalancePsi, 1) | |
222 | }; | |
223 | ||
224 | #endif |