]>
Commit | Line | Data |
---|---|---|
9efce966 | 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 | |
34616eda | 75 | TH2D *GetCorrelationFunction(TString type, |
76 | Double_t psiMin, Double_t psiMax, | |
77 | Double_t vertexZMin=-1, | |
78 | Double_t vertexZMax=-1, | |
79 | Double_t ptTriggerMin=-1., | |
80 | Double_t ptTriggerMax=-1., | |
81 | Double_t ptAssociatedMin=-1., | |
82 | Double_t ptAssociatedMax=-1, | |
83 | AliBalancePsi *bMixed=NULL); | |
6acdbcb2 | 84 | TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax, |
20006629 | 85 | Double_t vertexZMin=-1, |
86 | Double_t vertexZMax=-1, | |
6acdbcb2 | 87 | Double_t ptTriggerMin=-1., |
88 | Double_t ptTriggerMax=-1., | |
89 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 90 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 91 | TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax, |
20006629 | 92 | Double_t vertexZMin=-1, |
93 | Double_t vertexZMax=-1, | |
6acdbcb2 | 94 | Double_t ptTriggerMin=-1., |
95 | Double_t ptTriggerMax=-1., | |
96 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 97 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 98 | TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax, |
20006629 | 99 | Double_t vertexZMin=-1, |
100 | Double_t vertexZMax=-1, | |
6acdbcb2 | 101 | Double_t ptTriggerMin=-1., |
102 | Double_t ptTriggerMax=-1., | |
103 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 104 | Double_t ptAssociatedMax=-1); |
6acdbcb2 | 105 | TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax, |
20006629 | 106 | Double_t vertexZMin=-1, |
107 | Double_t vertexZMax=-1, | |
6acdbcb2 | 108 | Double_t ptTriggerMin=-1., |
109 | Double_t ptTriggerMax=-1., | |
110 | Double_t ptAssociatedMin=-1., | |
20006629 | 111 | Double_t ptAssociatedMax=-1); |
7b610f27 | 112 | TH2D *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax, |
20006629 | 113 | Double_t vertexZMin=-1, |
114 | Double_t vertexZMax=-1, | |
7b610f27 | 115 | Double_t ptTriggerMin=-1., |
116 | Double_t ptTriggerMax=-1., | |
117 | Double_t ptAssociatedMin=-1., | |
47e040b5 | 118 | Double_t ptAssociatedMax=-1); |
a38fd7f3 | 119 | |
9afe3098 | 120 | AliTHn *GetHistNp() {return fHistP;} |
121 | AliTHn *GetHistNn() {return fHistN;} | |
122 | AliTHn *GetHistNpn() {return fHistPN;} | |
123 | AliTHn *GetHistNnp() {return fHistNP;} | |
124 | AliTHn *GetHistNpp() {return fHistPP;} | |
125 | AliTHn *GetHistNnn() {return fHistNN;} | |
126 | ||
a38fd7f3 | 127 | void SetHistNp(AliTHn *gHist) { |
128 | fHistP = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();} | |
129 | void SetHistNn(AliTHn *gHist) { | |
130 | fHistN = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();} | |
131 | void SetHistNpn(AliTHn *gHist) { | |
132 | fHistPN = gHist; }//fHistPN->FillParent(); fHistPN->DeleteContainers();} | |
133 | void SetHistNnp(AliTHn *gHist) { | |
134 | fHistNP = gHist; }//fHistNP->FillParent(); fHistNP->DeleteContainers();} | |
135 | void SetHistNpp(AliTHn *gHist) { | |
136 | fHistPP = gHist; }//fHistPP->FillParent(); fHistPP->DeleteContainers();} | |
137 | void SetHistNnn(AliTHn *gHist) { | |
138 | fHistNN = gHist; }//fHistNN->FillParent(); fHistNN->DeleteContainers();} | |
9afe3098 | 139 | |
140 | TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle, | |
141 | Int_t iVariablePair, | |
6acdbcb2 | 142 | Double_t psiMin, Double_t psiMax, |
20006629 | 143 | Double_t vertexZMin=-1, |
144 | Double_t vertexZMax=-1, | |
6acdbcb2 | 145 | Double_t ptTriggerMin=-1., |
146 | Double_t ptTriggerMax=-1., | |
147 | Double_t ptAssociatedMin=-1., | |
20006629 | 148 | Double_t ptAssociatedMax=-1); // |
6acdbcb2 | 149 | |
f0c5040c | 150 | TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle, |
20006629 | 151 | Int_t iVariablePair, |
152 | Double_t psiMin, Double_t psiMax, | |
153 | Double_t vertexZMin=-1, | |
154 | Double_t vertexZMax=-1, | |
155 | Double_t ptTriggerMin=-1., | |
156 | Double_t ptTriggerMax=-1., | |
157 | Double_t ptAssociatedMin=-1., | |
158 | Double_t ptAssociatedMax=-1, | |
159 | AliBalancePsi *bfMix=NULL); | |
f0c5040c | 160 | |
6acdbcb2 | 161 | TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax, |
20006629 | 162 | Double_t vertexZMin=-1, |
163 | Double_t vertexZMax=-1, | |
6acdbcb2 | 164 | Double_t ptTriggerMin=-1., |
165 | Double_t ptTriggerMax=-1., | |
166 | Double_t ptAssociatedMin=-1., | |
20006629 | 167 | Double_t ptAssociatedMax=-1); |
621329de | 168 | |
f0c5040c | 169 | TH2D *GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(Double_t psiMin, Double_t psiMax, |
20006629 | 170 | Double_t vertexZMin=-1, |
171 | Double_t vertexZMax=-1, | |
f0c5040c | 172 | Double_t ptTriggerMin=-1., |
173 | Double_t ptTriggerMax=-1., | |
174 | Double_t ptAssociatedMin=-1., | |
175 | Double_t ptAssociatedMax=-1., | |
176 | AliBalancePsi *bfMix=NULL); | |
f2e8af26 | 177 | |
178 | TH1D *GetBalanceFunction1DFrom2D2pMethod(Bool_t bPhi, | |
179 | Double_t psiMin, Double_t psiMax, | |
20006629 | 180 | Double_t vertexZMin=-1, |
181 | Double_t vertexZMax=-1, | |
f2e8af26 | 182 | Double_t ptTriggerMin=-1., |
183 | Double_t ptTriggerMax=-1., | |
184 | Double_t ptAssociatedMin=-1., | |
185 | Double_t ptAssociatedMax=-1., | |
186 | AliBalancePsi *bfMix=NULL); | |
187 | ||
1822002d | 188 | Bool_t GetMomentsAnalytical(Int_t fVariable, TH1D* gHist, Bool_t kUseZYAM, |
f2e8af26 | 189 | Double_t &mean, Double_t &meanError, |
190 | Double_t &sigma, Double_t &sigmaError, | |
191 | Double_t &skewness, Double_t &skewnessError, | |
192 | Double_t &kurtosis, Double_t &kurtosisError); | |
f0c5040c | 193 | |
73609a48 | 194 | TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;} |
195 | TH2D *GetQAHistHBTafter() {return fHistHBTafter;} | |
196 | TH2D *GetQAHistConversionbefore() {return fHistConversionbefore;} | |
197 | TH2D *GetQAHistConversionafter() {return fHistConversionafter;} | |
e9caebd2 | 198 | TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;} |
f0754617 | 199 | TH3D *GetQAHistResonancesBefore() {return fHistResonancesBefore;} |
200 | TH3D *GetQAHistResonancesRho() {return fHistResonancesRho;} | |
201 | TH3D *GetQAHistResonancesK0() {return fHistResonancesK0;} | |
202 | TH3D *GetQAHistResonancesLambda() {return fHistResonancesLambda;} | |
5a861dc6 | 203 | TH3D *GetQAHistQbefore() {return fHistQbefore;} |
204 | TH3D *GetQAHistQafter() {return fHistQafter;} | |
73609a48 | 205 | |
2922bbe3 | 206 | void UseResonancesCut() {fResonancesCut = kTRUE;} |
73609a48 | 207 | void UseHBTCut() {fHBTCut = kTRUE;} |
208 | void UseConversionCut() {fConversionCut = kTRUE;} | |
6fa567bd | 209 | void UseMomentumDifferenceCut(Double_t gDeltaPtCutMin) { |
210 | fQCut = kTRUE; fDeltaPtMin = gDeltaPtCutMin;} | |
73609a48 | 211 | |
0879e280 | 212 | private: |
73609a48 | 213 | 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); |
214 | ||
9fd4b54e | 215 | Bool_t fShuffle; //shuffled balance function object |
0879e280 | 216 | TString fAnalysisLevel; //ESD, AOD or MC |
217 | Int_t fAnalyzedEvents; //number of events that have been analyzed | |
218 | ||
219 | TString fCentralityId;//Centrality identifier to be used for the histo naming | |
220 | ||
0879e280 | 221 | Double_t fCentStart; |
222 | Double_t fCentStop; | |
223 | ||
9afe3098 | 224 | AliTHn *fHistP; //N+ |
225 | AliTHn *fHistN; //N- | |
226 | AliTHn *fHistPN; //N+- | |
227 | AliTHn *fHistNP; //N-+ | |
228 | AliTHn *fHistPP; //N++ | |
229 | AliTHn *fHistNN; //N-- | |
0879e280 | 230 | |
73609a48 | 231 | //QA histograms |
232 | TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts | |
233 | TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts | |
234 | TH2D *fHistConversionbefore; // Delta Eta vs. Delta Phi before Conversion cuts | |
235 | TH2D *fHistConversionafter; // Delta Eta vs. Delta Phi before Conversion cuts | |
f0754617 | 236 | TH2D *fHistPsiMinusPhi;// psi - phi QA histogram |
237 | TH3D *fHistResonancesBefore; // 3D histogram (Deta,Dphi,Invmass) before resonance cuts | |
238 | TH3D *fHistResonancesRho; // 3D histogram (Deta,Dphi,Invmass) after removing rho | |
239 | TH3D *fHistResonancesK0; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0 | |
5a861dc6 | 240 | TH3D *fHistResonancesLambda; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda |
241 | TH3D *fHistQbefore; // Delta Eta vs. Delta Phi before cut on momentum difference | |
242 | TH3D *fHistQafter; // Delta Eta vs. Delta Phi after cut on momentum difference | |
73609a48 | 243 | |
0879e280 | 244 | Double_t fPsiInterval;// interval in Psi-phi1 |
7c04a4d2 | 245 | Double_t fDeltaEtaMax;// maximum delta eta for output THnSparse |
0879e280 | 246 | |
2922bbe3 | 247 | Bool_t fResonancesCut;//resonances cut |
5a861dc6 | 248 | Bool_t fHBTCut;//cut for two-track efficiency (like HBT group) |
73609a48 | 249 | Bool_t fConversionCut;//conversion cut |
5a861dc6 | 250 | Bool_t fQCut;//cut on momentum difference to suppress femtoscopic effect correlations |
6fa567bd | 251 | Double_t fDeltaPtMin;//delta pt cut: minimum value |
683cbfb5 | 252 | Bool_t fVertexBinning;//use vertex z binning in AliTHn |
73609a48 | 253 | |
7c04a4d2 | 254 | TString fEventClass; |
f0fb4ac1 | 255 | |
0879e280 | 256 | AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;} |
257 | ||
258 | ClassDef(AliBalancePsi, 1) | |
259 | }; | |
260 | ||
261 | #endif |