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; }
63 void InitHistograms(void);
65 const char* GetAnalysisLevel() {return fAnalysisLevel.Data();}
66 Int_t GetNumberOfAnalyzedEvent() {return fAnalyzedEvents;}
68 void CalculateBalance(Double_t gReactionPlane,
70 TObjArray* particlesMixed,
72 Double_t kMultorCent = -100,
73 Double_t vertexZ = 0);
75 TH2D *GetCorrelationFunctionPN(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 *GetCorrelationFunctionNP(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 *GetCorrelationFunctionPP(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 *GetCorrelationFunctionNN(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 TH2D *GetCorrelationFunctionChargeIndependent(Double_t psiMin, Double_t psiMax,
96 Double_t ptTriggerMin=-1.,
97 Double_t ptTriggerMax=-1.,
98 Double_t ptAssociatedMin=-1.,
99 Double_t ptAssociatedMax=-1);
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;}
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();}
121 TH1D *GetBalanceFunctionHistogram(Int_t iVariableSingle,
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);
129 TH1D *GetBalanceFunctionHistogram2pMethod(Int_t iVariableSingle,
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);
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);
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);
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);
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);
165 TH2D *GetQAHistHBTbefore() {return fHistHBTbefore;}
166 TH2D *GetQAHistHBTafter() {return fHistHBTafter;}
167 TH2D *GetQAHistConversionbefore() {return fHistConversionbefore;}
168 TH2D *GetQAHistConversionafter() {return fHistConversionafter;}
169 TH2D *GetQAHistPsiMinusPhi() {return fHistPsiMinusPhi;}
171 void UseHBTCut() {fHBTCut = kTRUE;}
172 void UseConversionCut() {fConversionCut = kTRUE;}
175 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);
177 Bool_t fShuffle; //shuffled balance function object
178 TString fAnalysisLevel; //ESD, AOD or MC
179 Int_t fAnalyzedEvents; //number of events that have been analyzed
181 TString fCentralityId;//Centrality identifier to be used for the histo naming
188 AliTHn *fHistPN; //N+-
189 AliTHn *fHistNP; //N-+
190 AliTHn *fHistPP; //N++
191 AliTHn *fHistNN; //N--
194 TH2D *fHistHBTbefore; // Delta Eta vs. Delta Phi before HBT inspired cuts
195 TH2D *fHistHBTafter; // Delta Eta vs. Delta Phi after HBT inspired cuts
196 TH2D *fHistConversionbefore; // Delta Eta vs. Delta Phi before Conversion cuts
197 TH2D *fHistConversionafter; // Delta Eta vs. Delta Phi before Conversion cuts
198 TH2D *fHistPsiMinusPhi;//
200 Double_t fPsiInterval;// interval in Psi-phi1
201 Double_t fDeltaEtaMax;// maximum delta eta for output THnSparse
203 Bool_t fHBTCut;//HBT cut
204 Bool_t fConversionCut;//conversion cut
205 Bool_t fVertexBinning;//use vertex z binning in AliTHn
209 AliBalancePsi & operator=(const AliBalancePsi & ) {return *this;}
211 ClassDef(AliBalancePsi, 1)