1 #ifndef ALIBALANCEPSI_H
2 #define ALIBALANCEPSI_H
3 /* See cxx source for full Copyright notice */
6 /* $Id: AliBalancePsi.h 54125 2012-01-24 21:07:41Z miweber $ */
8 //-------------------------------------------------------------------------
10 // This is the class for the Balance Function writ Psi analysis
12 // Origin: Panos Christakoglou, Nikhef, Panos.Christakoglou@cern.ch
13 //-------------------------------------------------------------------------
24 #define ANALYSIS_TYPES 7
25 #define MAXIMUM_NUMBER_OF_STEPS 1024
26 #define MAXIMUM_STEPS_IN_PSI 360
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)
34 const TString gBFPsiAnalysisType[ANALYSIS_TYPES] = {"y","eta","qlong","qout","qside","qinv","phi"};
36 class AliBalancePsi : public TObject {
49 AliBalancePsi(const AliBalancePsi& balance);
52 void SetCentralityIdentifier(const char* centralityId) {
53 fCentralityId = centralityId;}
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 void SetEventClass(TString receivedEventClass){ fEventClass = receivedEventClass; }
60 void SetDeltaEtaMax(Double_t receivedDeltaEtaMax){ fDeltaEtaMax = receivedDeltaEtaMax; }
61 void SetVertexZBinning(Bool_t receivedVertexBinning=kTRUE){ fVertexBinning = receivedVertexBinning; }
62 void SetCustomBinning(TString receivedCustomBinning) { fCustomBinning = receivedCustomBinning; }
64 void InitHistograms(void);
66 const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}
67 Int_t GetNumberOfAnalyzedEvent() {return fAnalyzedEvents;}
69 void CalculateBalance(Double_t gReactionPlane,
71 TObjArray* particlesMixed,
73 Double_t kMultorCent = -100,
74 Double_t vertexZ = 0);
76 TH1D *GetTriggers(TString type,
81 Double_t ptTriggerMin,
82 Double_t ptTriggerMax);
84 TH2D *GetCorrelationFunction(TString type,
85 Double_t psiMin, Double_t psiMax,
86 Double_t vertexZMin=-1,
87 Double_t vertexZMax=-1,
88 Double_t ptTriggerMin=-1.,
89 Double_t ptTriggerMax=-1.,
90 Double_t ptAssociatedMin=-1.,
91 Double_t ptAssociatedMax=-1,
92 AliBalancePsi *bMixed=NULL,
93 Bool_t normToTrig = kFALSE,
94 Double_t normalizationRangePhi = TMath::Pi()/6.);
96 TH2D *GetCorrelationFunctionPN(Double_t psiMin, Double_t psiMax,
97 Double_t vertexZMin=-1,
98 Double_t vertexZMax=-1,
99 Double_t ptTriggerMin=-1.,
100 Double_t ptTriggerMax=-1.,
101 Double_t ptAssociatedMin=-1.,
102 Double_t ptAssociatedMax=-1);
103 TH2D *GetCorrelationFunctionNP(Double_t psiMin, Double_t psiMax,
104 Double_t vertexZMin=-1,
105 Double_t vertexZMax=-1,
106 Double_t ptTriggerMin=-1.,
107 Double_t ptTriggerMax=-1.,
108 Double_t ptAssociatedMin=-1.,
109 Double_t ptAssociatedMax=-1);
110 TH2D *GetCorrelationFunctionPP(Double_t psiMin, Double_t psiMax,
111 Double_t vertexZMin=-1,
112 Double_t vertexZMax=-1,
113 Double_t ptTriggerMin=-1.,
114 Double_t ptTriggerMax=-1.,
115 Double_t ptAssociatedMin=-1.,
116 Double_t ptAssociatedMax=-1);
117 TH2D *GetCorrelationFunctionNN(Double_t psiMin, Double_t psiMax,
118 Double_t vertexZMin=-1,
119 Double_t vertexZMax=-1,
120 Double_t ptTriggerMin=-1.,
121 Double_t ptTriggerMax=-1.,
122 Double_t ptAssociatedMin=-1.,
123 Double_t ptAssociatedMax=-1);
124 TH2D *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax,
125 Double_t vertexZMin=-1,
126 Double_t vertexZMax=-1,
127 Double_t ptTriggerMin=-1.,
128 Double_t ptTriggerMax=-1.,
129 Double_t ptAssociatedMin=-1.,
130 Double_t ptAssociatedMax=-1);
132 AliTHn *GetHistNp() {return fHistP;}
133 AliTHn *GetHistNn() {return fHistN;}
134 AliTHn *GetHistNpn() {return fHistPN;}
135 AliTHn *GetHistNnp() {return fHistNP;}
136 AliTHn *GetHistNpp() {return fHistPP;}
137 AliTHn *GetHistNnn() {return fHistNN;}
139 void SetHistNp(AliTHn *gHist) {
140 fHistP = gHist; }//fHistP->FillParent(); fHistP->DeleteContainers();}
141 void SetHistNn(AliTHn *gHist) {
142 fHistN = gHist; }//fHistN->FillParent(); fHistN->DeleteContainers();}
143 void SetHistNpn(AliTHn *gHist) {
144 fHistPN = gHist; }//fHistPN->FillParent(); fHistPN->DeleteContainers();}
145 void SetHistNnp(AliTHn *gHist) {
146 fHistNP = gHist; }//fHistNP->FillParent(); fHistNP->DeleteContainers();}
147 void SetHistNpp(AliTHn *gHist) {
148 fHistPP = gHist; }//fHistPP->FillParent(); fHistPP->DeleteContainers();}
149 void SetHistNnn(AliTHn *gHist) {
150 fHistNN = gHist; }//fHistNN->FillParent(); fHistNN->DeleteContainers();}
152 TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
154 Double_t psiMin, Double_t psiMax,
155 Double_t vertexZMin=-1,
156 Double_t vertexZMax=-1,
157 Double_t ptTriggerMin=-1.,
158 Double_t ptTriggerMax=-1.,
159 Double_t ptAssociatedMin=-1.,
160 Double_t ptAssociatedMax=-1); //
162 TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle,
164 Double_t psiMin, Double_t psiMax,
165 Double_t vertexZMin=-1,
166 Double_t vertexZMax=-1,
167 Double_t ptTriggerMin=-1.,
168 Double_t ptTriggerMax=-1.,
169 Double_t ptAssociatedMin=-1.,
170 Double_t ptAssociatedMax=-1,
171 AliBalancePsi *bfMix=NULL);
173 TH2D *GetBalanceFunctionDeltaEtaDeltaPhi(Double_t psiMin, Double_t psiMax,
174 Double_t vertexZMin=-1,
175 Double_t vertexZMax=-1,
176 Double_t ptTriggerMin=-1.,
177 Double_t ptTriggerMax=-1.,
178 Double_t ptAssociatedMin=-1.,
179 Double_t ptAssociatedMax=-1);
181 TH2D *GetBalanceFunctionDeltaEtaDeltaPhi2pMethod(Double_t psiMin, Double_t psiMax,
182 Double_t vertexZMin=-1,
183 Double_t vertexZMax=-1,
184 Double_t ptTriggerMin=-1.,
185 Double_t ptTriggerMax=-1.,
186 Double_t ptAssociatedMin=-1.,
187 Double_t ptAssociatedMax=-1.,
188 AliBalancePsi *bfMix=NULL);
190 TH1D *GetBalanceFunction1DFrom2D2pMethod(Bool_t bPhi,
191 Double_t psiMin, Double_t psiMax,
192 Double_t vertexZMin=-1,
193 Double_t vertexZMax=-1,
194 Double_t ptTriggerMin=-1.,
195 Double_t ptTriggerMax=-1.,
196 Double_t ptAssociatedMin=-1.,
197 Double_t ptAssociatedMax=-1.,
198 AliBalancePsi *bfMix=NULL);
200 Bool_t GetMomentsAnalytical(Int_t fVariable, TH1D* gHist, Bool_t kUseZYAM,
201 Double_t &mean, Double_t &meanError,
202 Double_t &sigma, Double_t &sigmaError,
203 Double_t &skewness, Double_t &skewnessError,
204 Double_t &kurtosis, Double_t &kurtosisError);
206 //++++++++++++++++++//
207 Double_t GetFWHM(Int_t gDeltaEtaPhi, TH1D* gHist,
208 Double_t &fwhm_spline, Double_t &fwhmError);
209 //++++++++++++++++++//
211 TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;}
212 TH2D *GetQAHistHBTafter() {return fHistHBTafter;}
213 TH3D *GetQAHistConversionbefore() {return fHistConversionbefore;}
214 TH3D *GetQAHistConversionafter() {return fHistConversionafter;}
215 TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;}
216 TH3D *GetQAHistResonancesBefore() {return fHistResonancesBefore;}
217 TH3D *GetQAHistResonancesRho() {return fHistResonancesRho;}
218 TH3D *GetQAHistResonancesK0() {return fHistResonancesK0;}
219 TH3D *GetQAHistResonancesLambda() {return fHistResonancesLambda;}
220 TH3D *GetQAHistQbefore() {return fHistQbefore;}
221 TH3D *GetQAHistQafter() {return fHistQafter;}
223 void UseResonancesCut() {fResonancesCut = kTRUE;}
224 void UseHBTCut(Double_t setHBTCutValue = 0.02) {
225 fHBTCut = kTRUE; fHBTCutValue = setHBTCutValue;}
226 void UseConversionCut(Double_t setInvMassCutConversion = 0.04) {
227 fConversionCut = kTRUE; fInvMassCutConversion = setInvMassCutConversion; }
228 void UseMomentumDifferenceCut(Double_t gDeltaPtCutMin) {
229 fQCut = kTRUE; fDeltaPtMin = gDeltaPtCutMin;}
231 // related to customized binning of output AliTHn
232 Bool_t IsUseVertexBinning() { return fVertexBinning; }
233 TString GetBinningString() { return fBinningString; }
234 Double_t* GetBinning(const char* configuration, const char* tag, Int_t& nBins);
237 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);
239 Bool_t fShuffle; //shuffled balance function object
240 TString fAnalysisLevel; //ESD, AOD or MC
241 Int_t fAnalyzedEvents; //number of events that have been analyzed
243 TString fCentralityId;//Centrality identifier to be used for the histo naming
250 AliTHn *fHistPN; //N+-
251 AliTHn *fHistNP; //N-+
252 AliTHn *fHistPP; //N++
253 AliTHn *fHistNN; //N--
256 TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts
257 TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts
258 TH3D *fHistConversionbefore; // 3D histogram (Deta,Dphi,Invmass) before Conversion cuts
259 TH3D *fHistConversionafter; // 3D histogram (Deta,Dphi,Invmass) before Conversion cuts
260 TH2D *fHistPsiMinusPhi;// psi - phi QA histogram
261 TH3D *fHistResonancesBefore; // 3D histogram (Deta,Dphi,Invmass) before resonance cuts
262 TH3D *fHistResonancesRho; // 3D histogram (Deta,Dphi,Invmass) after removing rho
263 TH3D *fHistResonancesK0; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0
264 TH3D *fHistResonancesLambda; // 3D histogram (Deta,Dphi,Invmass) after removing rho, K0, and Lambda
265 TH3D *fHistQbefore; // Delta Eta vs. Delta Phi before cut on momentum difference
266 TH3D *fHistQafter; // Delta Eta vs. Delta Phi after cut on momentum difference
268 Double_t fPsiInterval;// interval in Psi-phi1
269 Double_t fDeltaEtaMax;// maximum delta eta for output THnSparse
271 Bool_t fResonancesCut;//resonances cut
272 Bool_t fHBTCut;//cut for two-track efficiency (like HBT group)
273 Double_t fHBTCutValue;// value for two-track efficiency cut (default = 0.02 from dphicorrelations)
274 Bool_t fConversionCut;//conversion cut
275 Double_t fInvMassCutConversion;//invariant mass for conversion cut
276 Bool_t fQCut;//cut on momentum difference to suppress femtoscopic effect correlations
277 Double_t fDeltaPtMin;//delta pt cut: minimum value
278 Bool_t fVertexBinning;//use vertex z binning in AliTHn
279 TString fCustomBinning;//for setting customized binning
280 TString fBinningString;//final binning string
284 AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}
286 ClassDef(AliBalancePsi, 2)