]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWGGA/CaloTrackCorrelations/AliAnaParticleHadronCorrelation.h
fba3760defc22aa1e6e067e532456368b2ec3b7f
[u/mrichter/AliRoot.git] / PWGGA / CaloTrackCorrelations / AliAnaParticleHadronCorrelation.h
1 #ifndef ALIANAPARTICLEHADRONCORRELATION_H
2 #define ALIANAPARTICLEHADRONCORRELATION_H
3 /* Copyright(c) 1998-1999, ALICE Experiment at CERN, All rights reserved. *
4  * See cxx source for full Copyright notice     */
5
6 //_________________________________________________________________________
7 // Class that contains the algorithm for the analysis of particle - hadron correlations
8 // Particle (for example direct gamma) must be found in a previous analysis 
9 //-- Author: Gustavo Conesa (INFN-LNF)
10
11 //  Modified by Yaxian Mao:
12 // 1. add the UE subtraction for corrlation study
13 // 2. change the correlation variable
14 // 3. Only use leading particle(cluster/track) as trigger for correlation (2010/07/02)
15 // 4. Make decay photon-hadron correlations where decay contribute pi0 mass (2010/09/09)
16 // 5. fill the pout to extract kt at the end, also to study charge asymmetry(2010/10/06) 
17 // 6. Add the possibility for event selection analysis based on vertex and multiplicity bins (10/10/2010)
18 // 7. change the way of delta phi cut for UE study due to memory issue (reduce histograms)
19 // 8. Add the possibility to request the absolute leading particle at the near side or not, set trigger bins, general clean-up (08/2011)
20
21 // --- Analysis system ---
22 #include "AliAnaCaloTrackCorrBaseClass.h"
23 class AliAODPWG4ParticleCorrelation ;
24
25 class AliAnaParticleHadronCorrelation : public AliAnaCaloTrackCorrBaseClass {
26   
27  public: 
28   
29   AliAnaParticleHadronCorrelation() ;          // default ctor
30   virtual ~AliAnaParticleHadronCorrelation() ; // virtual dtor
31   
32   // General methods
33       
34   TObjString * GetAnalysisCuts();
35   
36   TList      * GetCreateOutputObjects();
37   
38   void         Init();
39   
40   void         InitParameters();
41
42   void         FillEventMixPool() ;
43     
44   void         MakeAnalysisFillHistograms() ; 
45   
46   void         Print(const Option_t * opt) const;
47   
48   // Main analysis methods
49   
50   Bool_t       GetDecayPhotonMomentum(const AliAODPWG4Particle* trigger, TLorentzVector & mom1,TLorentzVector & mom2);
51   
52   Bool_t       MakeChargedCorrelation  (AliAODPWG4ParticleCorrelation * aodParticle, const TObjArray* pl, Bool_t bFillHisto) ;
53   
54   Bool_t       MakeNeutralCorrelation  (AliAODPWG4ParticleCorrelation * aodParticle, const TObjArray* pl, Bool_t bFillHisto) ;
55   
56   void         MakeMCChargedCorrelation(AliAODPWG4ParticleCorrelation * aodParticle) ;
57   
58   void         MakeChargedMixCorrelation(AliAODPWG4ParticleCorrelation *aodParticle) ;
59   
60   // Filling histogram methods
61   
62   void         FillChargedAngularCorrelationHistograms  (Float_t ptAssoc,  Float_t ptTrig,      Int_t   assocBin,
63                                                          Float_t phiAssoc, Float_t phiTrig,     Float_t &     deltaPhi,
64                                                          Float_t etaAssoc, Float_t etaTrig,  
65                                                          Bool_t  decay,    Float_t hmpidSignal, Int_t outTOF,
66                                                          Int_t nTracks,    Int_t   mcTag);
67   
68   void         FillChargedEventMixPool();
69   
70   Bool_t       FillChargedMCCorrelationHistograms       (Float_t mcAssocPt,      Float_t mcAssocPhi, Float_t mcAssocEta,
71                                                          Float_t mcTrigPt, Float_t mcTrigPhi,  Float_t mcTrigEta  );
72
73   
74   void         FillChargedMomentumImbalanceHistograms   (Float_t ptTrig,   Float_t ptAssoc, 
75                                                          Float_t xE,       Float_t hbpXE, 
76                                                          Float_t zT,       Float_t hbpZT, 
77                                                          Float_t pout,     Float_t deltaPhi, Int_t   nTracks,  Int_t charge,
78                                                          Int_t   assocBin, Bool_t  decay,
79                                                          Int_t outTOF,    Int_t mcTag );
80   
81   void         FillChargedUnderlyingEventHistograms     (Float_t ptTrig,   Float_t ptAssoc, 
82                                                          Float_t deltaPhi, Int_t nTracks,    Int_t outTOF);
83   
84   void         FillChargedUnderlyingEventSidesHistograms(Float_t ptTrig,   Float_t ptAssoc, 
85                                                          Float_t deltaPhi);
86   
87   void         FillDecayPhotonCorrelationHistograms     (Float_t ptAssoc,     Float_t phiAssoc, 
88                                                          TLorentzVector mom1, TLorentzVector mom2, 
89                                                          Bool_t bChargedOrNeutral); 
90   
91   
92   void         FillNeutralAngularCorrelationHistograms  (Float_t ptAssoc,  Float_t ptTrig,
93                                                          Float_t phiAssoc, Float_t phiTrig,  Float_t &     deltaPhi,
94                                                          Float_t etaAssoc, Float_t etaTrig);
95   
96   void         FillNeutralEventMixPool();
97   
98   
99   void         FillNeutralUnderlyingEventSidesHistograms(Float_t ptTrig,   Float_t ptAssoc, 
100                                                          Float_t xE,       Float_t hbpXE, 
101                                                          Float_t zT,       Float_t hbpZT, 
102                                                          Float_t deltaPhi);  
103     
104   Int_t        GetMCTagHistogramIndex(Int_t tag);
105   
106   Bool_t       IsTriggerTheEventLeadingParticle(TObjArray *chPl);
107   
108   // Parameter setter and getter
109   
110   Float_t      GetMinimumTriggerPt()       const { return fMinTriggerPt          ; }
111   void         SetMinimumTriggerPt(Float_t min)  { fMinTriggerPt = min           ; }
112
113   Float_t      GetMaximumAssociatedPt()    const { return fMaxAssocPt            ; }
114   Float_t      GetMinimumAssociatedPt()    const { return fMinAssocPt            ; }
115   void         SetAssociatedPtRange(Float_t min, Float_t max)
116                { fMaxAssocPt   = max ;           fMinAssocPt  = min              ; }
117
118   Double_t     GetDeltaPhiMaxCut()         const { return fDeltaPhiMaxCut        ; }
119   Double_t     GetDeltaPhiMinCut()         const { return fDeltaPhiMinCut        ; }
120   void         SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
121                { fDeltaPhiMaxCut   = phimax ;    fDeltaPhiMinCut   = phimin      ; }
122   
123   // Leading Hadron
124   Double_t     GetLeadHadronPhiMaxCut()    const { return fMaxLeadHadPhi         ; }
125   Double_t     GetLeadHadronPhiMinCut()    const { return fMinLeadHadPhi         ; }
126   void         SetLeadHadronPhiCut(Float_t min, Float_t max)
127                { fMaxLeadHadPhi = max ;          fMinLeadHadPhi  = min           ; }
128
129   Double_t     GetLeadHadronPtMinCut()     const { return fMinLeadHadPt          ; }
130   Double_t     GetLeadHadronPtMaxCut()     const { return fMaxLeadHadPt          ; }
131   void         SetLeadHadronPtCut(Float_t min, Float_t max)
132                { fMaxLeadHadPt  = max ;           fMinLeadHadPt  = min           ; }
133   
134   Bool_t       IsLeadHadronCutOn()        const { return fSelectLeadingHadronAngle ; }
135   void         SwitchOnLeadHadronSelection()    { fSelectLeadingHadronAngle = kTRUE  ; }
136   void         SwitchOffLeadHadronSelection()   { fSelectLeadingHadronAngle = kFALSE ; }
137   
138   // UE
139   
140   Double_t     GetUeDeltaPhiMaxCut()       const { return fUeDeltaPhiMaxCut      ; }
141   Double_t     GetUeDeltaPhiMinCut()       const { return fUeDeltaPhiMinCut      ; }
142   
143   void         SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
144                   { fUeDeltaPhiMaxCut = uephimax ;  fUeDeltaPhiMinCut = uephimin ; }
145   
146   Bool_t       IsSeveralUEOn()             const { return fMakeSeveralUE         ; }
147   void         SwitchOnSeveralUECalculation()    { fMakeSeveralUE      = kTRUE   ; }
148   void         SwitchOffSeveralUECalculation()   { fMakeSeveralUE      = kFALSE  ; }
149
150   // Do trigger-neutral correlation
151   Bool_t       DoNeutralCorr()             const { return fNeutralCorr           ; }
152   void         SwitchOnNeutralCorr()             { fNeutralCorr      = kTRUE     ; }
153   void         SwitchOffNeutralCorr()            { fNeutralCorr      = kFALSE    ; }  
154   
155   // Taking the absolute leading as the trigger or not
156   Bool_t       DoAbsoluteLeading()         const { return fMakeAbsoluteLeading   ; }
157   void         SwitchOnAbsoluteLeading()         { fMakeAbsoluteLeading = kTRUE  ; }
158   void         SwitchOffAbsoluteLeading()        { fMakeAbsoluteLeading = kFALSE ; }
159   
160   // Taking the near side leading as the trigger or not
161   Bool_t       DoNearSideLeading()         const { return fMakeNearSideLeading   ; }
162   void         SwitchOnNearSideLeading()         { fMakeNearSideLeading = kTRUE  ; }
163   void         SwitchOffNearSideLeading()        { fMakeNearSideLeading = kFALSE ; }
164   
165   // Do decay-hadron correlation if it is pi0 trigger
166   Bool_t       IsPi0Trigger()              const { return fPi0Trigger            ; }
167   void         SwitchOnPi0TriggerDecayCorr()     { fPi0Trigger          = kTRUE  ; }
168   void         SwitchOffPi0TriggerDecayCorr()    { fPi0Trigger          = kFALSE ; }  
169
170   Bool_t       IsDecayTrigger()            const { return fDecayTrigger          ; }
171   void         SwitchOnDecayTriggerDecayCorr()   { fDecayTrigger        = kTRUE  ; }
172   void         SwitchOffDecayTriggerDecayCorr()  { fDecayTrigger        = kFALSE ; }  
173
174   Bool_t       IsHMPIDCorrelation()        const { return fHMPIDCorrelation      ; }
175   void         SwitchOnHMPIDCorrelation()        { fHMPIDCorrelation    = kTRUE  ; }
176   void         SwitchOffHMPIDCorrelation()       { fHMPIDCorrelation    = kFALSE ; }  
177   
178   void         SwitchOnFillBradHistograms()      { fFillBradHisto       = kTRUE  ; }
179   void         SwitchOffFillBradHistograms()     { fFillBradHisto       = kFALSE ; }  
180     
181   Bool_t       OnlyIsolated()              const { return fSelectIsolated        ; }
182   void         SelectIsolated(Bool_t s)          { fSelectIsolated   = s         ; }
183
184   void         SetPi0AODBranchName(TString n)    { fPi0AODBranchName = n         ; }
185   
186   void         SetNAssocPtBins(Int_t n) ;     
187   void         SetAssocPtBinLimit(Int_t ibin, Float_t pt) ;
188   
189   Bool_t       IsMixStoredInReaderOn()     const { return fUseMixStoredInReader  ; }
190   void         SwitchOnUseMixStoredInReader()    { fUseMixStoredInReader = kTRUE ; }
191   void         SwitchOffUseMixStoredInReader()   { fUseMixStoredInReader = kFALSE; }
192   
193   void         SwitchOnFillNeutralInMixedEvent() { fFillNeutralEventMixPool = kTRUE  ; }
194   void         SwitchOffFillNeutralInMixedEvent(){ fFillNeutralEventMixPool = kFALSE ; }
195   
196   void         SetM02Cut(Float_t min=0, Float_t max=10)  { fM02MinCut   = min ; fM02MaxCut  = max ; }
197
198   void         SwitchOnCorrelationVzBin()        { fCorrelVzBin          = kTRUE  ; }
199   void         SwitchOffCorrelationVzBin()       { fCorrelVzBin          = kFALSE ; }  
200   
201   void         SwitchOnFillPileUpHistograms()    { fFillPileUpHistograms = kTRUE  ; }
202   void         SwitchOffFillPileUpHistograms()   { fFillPileUpHistograms = kFALSE ; }
203   
204  private:
205   
206   Float_t      fMinTriggerPt ;                 // Minimum trigger hadron pt
207   Float_t      fMaxAssocPt ;                   // Maximum associated hadron pt
208   Float_t      fMinAssocPt ;                   // Minimum associated hadron pt
209   Double_t     fDeltaPhiMaxCut ;               // Minimum Delta Phi Gamma-Hadron
210   Double_t     fDeltaPhiMinCut ;               // Maximum Delta Phi Gamma-Hadron
211   Bool_t       fSelectIsolated ;               // Select only trigger particles isolated
212   Bool_t       fMakeSeveralUE ;                // Do analysis for several underlying events contribution
213   Double_t     fUeDeltaPhiMaxCut ;             // Minimum Delta Phi Gamma-Underlying Hadron
214   Double_t     fUeDeltaPhiMinCut ;             // Maximum Delta Phi Gamma-Underlying Hadron
215   TString      fPi0AODBranchName;              // Name of AOD branch with pi0, not trigger
216   Bool_t       fNeutralCorr ;                  // switch the analysis with neutral particles
217   Bool_t       fPi0Trigger ;                   // switch the analysis with decay photon from pi0 trigger
218   Bool_t       fDecayTrigger ;                 // switch the analysis with decay photon from photon trigger
219   Bool_t       fMakeAbsoluteLeading ;          // requesting absolute leading triggers
220   Bool_t       fMakeNearSideLeading ;          // requesting near side leading (+-90º from trigger particle) triggers
221   Int_t        fLeadingTriggerIndex ;          // Store here per event the trigger index, to avoid too many loops
222   Bool_t       fHMPIDCorrelation    ;          // Correlate with particles on HMPID or its acceptance
223   Bool_t       fFillBradHisto ;                // DPhi histograms calculated differently
224   Int_t        fNAssocPtBins ;                 // Number of associated pT bins under study
225   Float_t      fAssocPtBinLimit[20] ;          // Associated pT under study
226   Bool_t       fCorrelVzBin ;                  // Fill one histogram per vz bin
227   
228   TList **     fListMixTrackEvents ;           //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for tracks in stored events for mixing
229   TList **     fListMixCaloEvents ;            //![GetNCentrBin()*GetNZvertBin()*GetNRPBin()] Containers for calo clusters in stored events for mixing
230
231   Bool_t       fUseMixStoredInReader;          // Signal if in the current event the pool was filled
232   Bool_t       fFillNeutralEventMixPool;       // Add clusters to pool if requested
233   
234   Float_t      fM02MaxCut   ;                  // Study photon clusters with l0 smaller than cut
235   Float_t      fM02MinCut   ;                  // Study photon clusters with l0 larger than cut
236   
237   Bool_t       fFillPileUpHistograms;          // Fill pile-up related histograms
238
239   Bool_t       fSelectLeadingHadronAngle;      // Select events with leading particle within a range
240   Float_t      fMinLeadHadPhi;                 // Minimum angle between the trigger and leading hadron
241   Float_t      fMaxLeadHadPhi;                 // Maximum ange between the trigger and leading hadron
242   Float_t      fMinLeadHadPt;                  // Minimum pT of leading hadron
243   Float_t      fMaxLeadHadPt;                  // Maximum pT of leading hadron
244
245   //Histograms
246
247   //leading particles 
248   TH1F *       fhPtTriggerInput;               //! pT distribution of trigger particles before selection
249   TH1F *       fhPtTriggerSSCut;               //! pT distribution of trigger particles after shower shape selection
250   TH1F *       fhPtTriggerIsoCut;              //! pT distribution of trigger particles after isolation cut selection
251   TH1F *       fhPtTriggerFidCut;              //! pT distribution of trigger particles after fiducial selection
252   TH1F *       fhPtLeading;                    //! pT distribution of leading particles
253   TH1F *       fhPtLeadingVtxBC0;              //! pT distribution of leading particles
254   TH1F *       fhPtLeadingPileUp[7];           //! pT distribution of leading particles
255   TH2F *       fhPtLeadingVzBin;               //! pT distribution of leading particles vs vz bin
256   TH2F *       fhPtLeadingBin;                 //! pT distribution of leading particles, vs mixing bin
257   TH2F *       fhPhiLeading;                   //! phi distribution vs pT of leading particles
258   TH2F *       fhEtaLeading;                   //! eta distribution vs pT of leading particles
259   
260   TH1F *       fhPtLeadingMC[7];               //! pT distribution of leading particles, check the origin of the cluster : "Photon","Pi0","Pi0Decay","EtaDecay","OtherDecay","Electron","Hadron"
261
262   TH2F *       fhPtLeadingCentrality;          //! pT distribution of leading particles vs centrality
263   TH2F *       fhPtLeadingEventPlane;          //! pT distribution of leading particles vs centrality
264   TH2F *       fhLeadingEventPlaneCentrality;  //! event plane vs centrality for leading particles
265   
266   TH1F *       fhPtLeadingMixed;               //! pT distribution of leading particles, used in mixing
267   TH2F *       fhPtLeadingMixedVzBin;          //! pT distribution of leading particles, used in mixing, vs vz bin
268   TH2F *       fhPtLeadingMixedBin;            //! pT distribution of leading particles vs mixing bin
269   TH2F *       fhPhiLeadingMixed;              //! phi distribution vs pT of leading particles, used in mixing
270   TH2F *       fhEtaLeadingMixed;              //! eta distribution vs pT of leading particles, used in mixing  
271
272   //trigger-charged histograms
273   TH2F *       fhDeltaPhiDeltaEtaCharged ;     //! differences of eta and phi between trigger and charged hadrons
274   TH2F *       fhPhiCharged  ;                 //! Phi distribution of charged particles
275   TH2F *       fhEtaCharged  ;                 //! Eta distribution of charged particles
276   TH2F *       fhDeltaPhiCharged  ;            //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
277   TH2F *       fhDeltaEtaCharged  ;            //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT
278   TH2F *       fhDeltaPhiChargedPt  ;          //! Difference of charged particle phi and trigger particle  phi as function of charged particle pT
279   TH2F *       fhDeltaPhiUeChargedPt ;         //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
280   TH1F *       fhUePart;                       //! UE particles distribution vs pt trig
281   TH2F *       fhXECharged  ;                  //! Trigger particle -charged hadron momentum imbalance histogram
282   TH2F *       fhXECharged_Cone2  ;            //! Trigger particle -charged hadron momentum imbalance histogram in cone2 (5pi/6-7pi/6)
283   TH2F *       fhXEUeCharged  ;                //! Trigger particle -underlying charged hadron momentum imbalance histogram  
284   TH2F *       fhXEPosCharged  ;               //! Trigger particle -positive charged hadron momentum imbalance histogram
285   TH2F *       fhXENegCharged  ;               //! Trigger particle -negative charged hadron momentum imbalance histogram 
286   TH2F *       fhPtHbpXECharged  ;             //! Trigger particle -charged hadron momentum HBP histogram
287   TH2F *       fhPtHbpXECharged_Cone2  ;       //! Trigger particle -charged hadron momentum HBP histogram in cone2 (5pi/6-7pi/6)
288   TH2F *       fhPtHbpXEUeCharged  ;           //! Trigger particle -underlying charged hadron momentum HBP histogram  
289   TH2F *       fhZTCharged  ;                  //! Trigger particle -charged hadron momentum imbalance histogram
290   TH2F *       fhZTUeCharged  ;                //! Trigger particle -underlying charged hadron momentum imbalance histogram  
291   TH2F *       fhZTPosCharged  ;               //! Trigger particle -positive charged hadron momentum imbalance histogram
292   TH2F *       fhZTNegCharged  ;               //! Trigger particle -negative charged hadron momentum imbalance histogram 
293   TH2F *       fhPtHbpZTCharged  ;             //! Trigger particle -charged hadron momentum HBP histogram
294   TH2F *       fhPtHbpZTUeCharged  ;           //! Trigger particle -underlying charged hadron momentum HBP histogram  
295   
296   TH2F *       fhXEChargedMC[7]  ;             //! Trigger particle -charged hadron momentum imbalance histogram, check the origin of the cluster : decay photon (pi0, eta, other), merged photon (pi0), hadron, rest of photons (prompt, FSR, ISR)
297   TH2F *       fhDeltaPhiChargedMC[7]  ;       //! Trigger particle -charged hadron delta phi histogram, check the origin of the cluster : decay photon (pi0, eta, other), merged photon (pi0), hadron, rest of photons (prompt, FSR, ISR)
298
299   TH2F *       fhDeltaPhiDeltaEtaChargedPtA3GeV;//! differences of eta and phi between trigger and charged hadrons, pTa > 3 GeV
300   TH2F *       fhDeltaPhiChargedPtA3GeV  ;      //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
301   TH2F *       fhDeltaEtaChargedPtA3GeV  ;      //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT, pTa > 3 GeV
302   
303   // Events tagged as pileup by SDD,EMCal, or combination
304   TH2F *       fhDeltaPhiChargedPileUp[7]  ;    //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
305   TH2F *       fhDeltaEtaChargedPileUp[7]  ;    //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT
306   TH2F *       fhDeltaPhiChargedPtA3GeVPileUp[7] ; //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
307   TH2F *       fhDeltaEtaChargedPtA3GeVPileUp[7] ; //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT, pTa > 3 GeV
308   TH2F *       fhXEChargedPileUp[7]  ;          //! Trigger particle -charged hadron momentum imbalance histogram
309   TH2F *       fhXEUeChargedPileUp[7]  ;        //! Trigger particle -charged hadron momentum imbalance histogram
310   TH2F *       fhZTChargedPileUp[7]  ;          //! Trigger particle -charged hadron momentum imbalance histogram
311   TH2F *       fhZTUeChargedPileUp[7]  ;        //! Trigger particle -charged hadron momentum imbalance histogram
312   TH2F *       fhPtTrigChargedPileUp[7] ;       //! trigger and correlated particl pt, to be used for mean value for kt
313   
314   TH2F *       fhDeltaPhiChargedOtherBC  ;       //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
315   TH2F *       fhDeltaPhiChargedPtA3GeVOtherBC ; //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
316   TH2F *       fhXEChargedOtherBC  ;             //! Trigger particle -charged hadron momentum imbalance histogram
317   TH2F *       fhXEUeChargedOtherBC  ;           //! Trigger particle -charged hadron momentum imbalance histogram
318   TH2F *       fhZTChargedOtherBC  ;             //! Trigger particle -charged hadron momentum imbalance histogram
319   TH2F *       fhZTUeChargedOtherBC  ;           //! Trigger particle -charged hadron momentum imbalance histogram
320   TH2F *       fhPtTrigChargedOtherBC ;          //! trigger and correlated particl pt, to be used for mean value for kt
321
322   TH2F *       fhDeltaPhiChargedBC0  ;           //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
323   TH2F *       fhDeltaPhiChargedPtA3GeVBC0 ;     //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
324   TH2F *       fhXEChargedBC0  ;                 //! Trigger particle -charged hadron momentum imbalance histogram
325   TH2F *       fhXEUeChargedBC0  ;               //! Trigger particle -charged hadron momentum imbalance histogram
326   TH2F *       fhZTChargedBC0  ;                 //! Trigger particle -charged hadron momentum imbalance histogram
327   TH2F *       fhZTUeChargedBC0  ;               //! Trigger particle -charged hadron momentum imbalance histogram
328   TH2F *       fhPtTrigChargedBC0 ;              //! trigger and correlated particl pt, to be used for mean value for kt
329
330   TH2F *       fhDeltaPhiChargedVtxBC0  ;        //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
331   TH2F *       fhDeltaPhiChargedPtA3GeVVtxBC0 ;  //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, pTa > 3 GeV
332   TH2F *       fhXEChargedVtxBC0  ;              //! Trigger particle -charged hadron momentum imbalance histogram
333   TH2F *       fhXEUeChargedVtxBC0  ;            //! Trigger particle -charged hadron momentum imbalance histogram
334   TH2F *       fhZTChargedVtxBC0  ;              //! Trigger particle -charged hadron momentum imbalance histogram
335   TH2F *       fhZTUeChargedVtxBC0  ;            //! Trigger particle -charged hadron momentum imbalance histogram
336   TH2F *       fhPtTrigChargedVtxBC0 ;           //! trigger and correlated particl pt, to be used for mean value for kt
337   
338   //if several UE calculation is on, most useful for jet-jet events contribution
339   TH2F *       fhDeltaPhiUeLeftCharged  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
340   TH2F *       fhDeltaPhiUeRightCharged  ;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
341   TH2F *       fhDeltaPhiUeLeftUpCharged;      //! Difference of charged particle from underlying events phi and trigger particle  phi 
342   TH2F *       fhDeltaPhiUeRightUpCharged;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
343   TH2F *       fhDeltaPhiUeLeftDownCharged;    //! Difference of charged particle from underlying events phi and trigger particle  phi 
344   TH2F *       fhDeltaPhiUeRightDownCharged;   //! Difference of charged particle from underlying events phi and trigger particle  phi 
345   TH2F *       fhXEUeLeftCharged  ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram 
346   TH2F *       fhXEUeRightCharged ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram  
347   TH2F *       fhXEUeLeftUpCharged  ;          //! Trigger particle -underlying charged hadron momentum imbalance histogram 
348   TH2F *       fhXEUeRightUpCharged ;          //! Trigger particle -underlying charged hadron momentum imbalance histogram  
349   TH2F *       fhXEUeLeftDownCharged  ;        //! Trigger particle -underlying charged hadron momentum imbalance histogram 
350   TH2F *       fhXEUeRightDownCharged ;        //! Trigger particle -underlying charged hadron momentum imbalance histogram  
351   TH2F *       fhPtHbpXEUeLeftCharged  ;       //! Trigger particle -underlying charged hadron momentum HBP histogram 
352   TH2F *       fhPtHbpXEUeRightCharged  ;      //! Trigger particle -underlying charged hadron momentum HBP histogram  
353   TH2F *       fhZTUeLeftCharged  ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram 
354   TH2F *       fhZTUeRightCharged ;            //! Trigger particle -underlying charged hadron momentum imbalance histogram  
355   TH2F *       fhPtHbpZTUeLeftCharged  ;       //! Trigger particle -underlying charged hadron momentum HBP histogram 
356   TH2F *       fhPtHbpZTUeRightCharged  ;      //! Trigger particle -underlying charged hadron momentum HBP histogram 
357   
358   //for pout and kt extraction
359   TH2F *       fhPtTrigPout  ;                 //! Pout =associated pt*sin(delta phi) distribution vs trigger pt 
360   TH2F *       fhPtTrigCharged ;               //! trigger and correlated particl pt, to be used for mean value for kt  
361   
362   //if different multiplicity analysis asked
363   TH2F **      fhTrigDeltaPhiCharged ;         //![GetMultiBin()] differences of phi between trigger and charged hadrons
364   TH2F **      fhTrigDeltaEtaCharged ;         //![GetMultiBin()] differences of eta between trigger and charged hadrons
365   TH2F **      fhTrigXECorr  ;                 //![GetMultiBin()] Trigger particle -charged hadron momentum imbalance histogram
366   TH2F **      fhTrigXEUeCorr  ;               //![GetMultiBin()] Trigger particle -UE charged hadron momentum imbalance histogram
367   TH2F **      fhTrigZTCorr  ;                 //![GetMultiBin()] Trigger particle -charged hadron momentum imbalance histogram
368   TH2F **      fhTrigZTUeCorr  ;               //![GetMultiBin()] Trigger particle -UE charged hadron momentum imbalance histogram
369   
370   TH2F *       fhAssocPtBkg;                   //! Trigger pT vs associated pT for background
371   TH2F **      fhDeltaPhiDeltaEtaAssocPtBin;   //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function eta difference, for different associated bins
372   TH2F **      fhDeltaPhiAssocPtBin;           //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt bins
373   TH2F **      fhDeltaPhiAssocPtBinDEta08;     //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt bins for Delta eta > 0.8
374   TH2F **      fhDeltaPhiAssocPtBinDEta0 ;     //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt bins for Delta eta = 0
375   TH2F **      fhDeltaPhiAssocPtBinHMPID;      //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt bins, track with HMPID  
376   TH2F **      fhDeltaPhiAssocPtBinHMPIDAcc;   //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi for different associated pt bins, track with HMPIDAcc
377   TH2F **      fhDeltaPhiBradAssocPtBin;       //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs dPhi Brad (?) for different associated pt bins
378   TH2F *       fhDeltaPhiBrad;                 //! Trigger pT vs dPhi Brad (?) for different associated pt bins
379   TH2F **      fhXEAssocPtBin ;                //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs xE for different associated pt bins
380   TH2F **      fhZTAssocPtBin ;                //![fNAssocPtBins*GetNZvertBin()] Trigger pT vs zT for different associated pt bins
381
382   //trigger-neutral histograms
383   TH2F *       fhDeltaPhiDeltaEtaNeutral ;     //! differences of eta and phi between trigger and neutral hadrons (pi0)
384   TH2F *       fhPhiNeutral   ;                //! Phi distribution of neutral particles  
385   TH2F *       fhEtaNeutral   ;                //! Eta distribution of neutral particles
386   TH2F *       fhDeltaPhiNeutral   ;           //! Difference of neutral particle phi and trigger particle  phi as function of  trigger particle pT
387   TH2F *       fhDeltaEtaNeutral  ;            //! Difference of neutral particle eta and trigger particle  eta as function of  trigger particle pT
388   TH2F *       fhDeltaPhiNeutralPt  ;          //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT
389   TH2F *       fhDeltaPhiUeNeutralPt ;         //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT  
390   TH2F *       fhXENeutral  ;                  //! Trigger particle - neutral hadron momentum imbalance histogram 
391   TH2F *       fhXEUeNeutral  ;                //! Trigger particle - neutral hadron momentum imbalance histogram 
392   TH2F *       fhPtHbpXENeutral  ;             //! Trigger particle - neutral particle momentum HBP histogram
393   TH2F *       fhPtHbpXEUeNeutral  ;           //! Trigger particle - underlying neutral hadron momentum HBP histogram  
394   TH2F *       fhZTNeutral  ;                  //! Trigger particle - neutral hadron momentum imbalance histogram 
395   TH2F *       fhZTUeNeutral  ;                //! Trigger particle - neutral hadron momentum imbalance histogram 
396   TH2F *       fhPtHbpZTNeutral  ;             //! Trigger particle - neutral particle momentum HBP histogram
397   TH2F *       fhPtHbpZTUeNeutral  ;           //! Trigger particle - underlying neutral hadron momentum HBP histogram  
398   
399   //if several UE calculation is on, most useful for jet-jet events contribution
400   TH2F *       fhDeltaPhiUeLeftNeutral  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of neutral particle pT
401   TH2F *       fhDeltaPhiUeRightNeutral  ;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
402   TH2F *       fhXEUeLeftNeutral  ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram 
403   TH2F *       fhXEUeRightNeutral ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram 
404   TH2F *       fhPtHbpXEUeLeftNeutral  ;       //! Trigger particle -underlying neutral hadron momentum HBP histogram 
405   TH2F *       fhPtHbpXEUeRightNeutral  ;      //! Trigger particle -underlying neutral hadron momentum HBP histogram 
406   TH2F *       fhZTUeLeftNeutral  ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram 
407   TH2F *       fhZTUeRightNeutral ;            //! Trigger particle -underlying neutral hadron momentum imbalance histogram 
408   TH2F *       fhPtHbpZTUeLeftNeutral  ;       //! Trigger particle -underlying neutral hadron momentum HBP histogram 
409   TH2F *       fhPtHbpZTUeRightNeutral  ;      //! Trigger particle -underlying neutral hadron momentum HBP histogram 
410   
411   //for decay photon trigger correlation
412   TH2F *       fhPtPi0DecayRatio ;             //! for pi0 pt and ratio of decay photon pt
413   TH2F *       fhDeltaPhiDecayCharged  ;       //! Difference of charged particle phi and decay trigger
414   TH2F *       fhXEDecayCharged ;              //! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram    
415   TH2F *       fhZTDecayCharged ;              //! Trigger particle (decay from pi0)-charged hadron momentum imbalance histogram   
416
417   TH2F *       fhDeltaPhiDecayNeutral  ;       //! Difference of neutral particle phi and decay trigger
418   TH2F *       fhXEDecayNeutral ;              //! Trigger particle (decay from pi0)-neutral hadron momentum imbalance histogram  
419   TH2F *       fhZTDecayNeutral ;              //! Trigger particle (decay from pi0)-neutral hadron momentum imbalance histogram  
420
421   TH2F **      fhDeltaPhiDecayChargedAssocPtBin;//![fNAssocPtBins*GetNZvertBin()] Tagged as decay Trigger pT vs dPhi for different associated pt bins
422   TH2F **      fhXEDecayChargedAssocPtBin ;     //![fNAssocPtBins*GetNZvertBin()] Tagged as decay Trigger pT vs xE for different associated pt bins
423   TH2F **      fhZTDecayChargedAssocPtBin ;     //![fNAssocPtBins*GetNZvertBin()] Tagged as decay Trigger pT vs xE for different associated pt bins  
424   
425   //if the data is MC, fill MC information
426   TH2F *       fh2phiLeadingParticle;          //! #phi resolution for triggers
427   TH1F *       fhMCPtLeading;                  //! MC pure pT distribution of leading particles
428   TH2F *       fhMCPhiLeading;                 //! MC pure Phi distribution of leading particles
429   TH2F *       fhMCEtaLeading;                 //! MC pure Eta distribution of leading particles
430   TH2F *       fhMCEtaCharged;                 //! MC pure particles charged primary pt vs eta (both associated) 
431   TH2F *       fhMCPhiCharged;                 //! MC pure particles charged primary pt vs phi (both associated) 
432   TH2F *       fhMCDeltaEtaCharged;            //! MC pure particles charged trigger primary pt vs delta eta (associated-trigger) 
433   TH2F *       fhMCDeltaPhiCharged;            //! MC pure particles charged trigger primary pt vs delta phi (associated-trigger) 
434   TH2F *       fhMCDeltaPhiDeltaEtaCharged;    //! MC pure particles charged associated primary pt vs delta phi (associated-trigger), in away side 
435   TH2F *       fhMCDeltaPhiChargedPt;          //! MC pure particles charged delta phi vs delta eta (associated-trigger) 
436   TH2F *       fhMCPtXECharged;                //! MC pure particles charged trigger primary pt vs xE
437   TH2F *       fhMCPtXEUeCharged;              //! MC pure particles charged trigger primary pt vs xE (underlying event)
438   TH2F *       fhMCPtXEUeLeftCharged;          //! MC pure particles charged trigger primary pt vs xE (underlying event,left cone)
439   TH2F *       fhMCPtXEUeRightCharged;         //! MC pure particles charged trigger primary pt vs xE (underlying event,right cone)
440   TH2F *       fhMCPtHbpXECharged;             //! MC pure particles charged trigger primary pt vs ln(1/xE)
441   TH2F *       fhMCPtHbpXEUeCharged;           //! MC pure particles charged trigger primary pt vs ln(1/xE) (underlying event)
442   TH2F *       fhMCPtHbpXEUeLeftCharged;       //! MC pure particles charged trigger primary pt vs ln(1/xE) (underlying event, left cone)
443   TH2F *       fhMCPtHbpXEUeRightCharged;      //! MC pure particles charged trigger primary pt vs ln(1/xE) (underlying event, right cone)
444   TH1F *       fhMCUePart;                     //! MC pure UE particles distribution vs pt trig
445   TH2F *       fhMCPtZTCharged;                //! MC pure particles charged trigger primary pt vs zT
446   TH2F *       fhMCPtZTUeCharged;              //! MC pure particles charged trigger primary pt vs zT (underlying event)
447   TH2F *       fhMCPtZTUeLeftCharged;          //! MC pure particles charged trigger primary pt vs zT (underlying event, left cone)
448   TH2F *       fhMCPtZTUeRightCharged;         //! MC pure particles charged trigger primary pt vs zT (underlying event, right cone)
449   TH2F *       fhMCPtHbpZTCharged;             //! MC pure particles charged trigger primary pt vs ln(1/zT)
450   TH2F *       fhMCPtHbpZTUeCharged;           //! MC pure particles charged trigger primary pt vs ln(1/zT) (underlying event)
451   TH2F *       fhMCPtHbpZTUeLeftCharged;       //! MC pure particles charged trigger primary pt vs ln(1/zT) (underlying event, left cone)
452   TH2F *       fhMCPtHbpZTUeRightCharged;      //! MC pure particles charged trigger primary pt vs ln(1/zT) (underlying event, right cone)
453   TH2F *       fhMCPtTrigPout ;                //! MC pure particles charged trigger primary pt vs pOut
454   TH2F *       fhMCPtAssocDeltaPhi  ;          //! MC pure particles charged associated primary pt vs delta phi (associated-trigger) 
455
456   // Mixing
457   TH1I *       fhNEventsTrigger;               //! number of analyzed triggered events
458   TH1F *       fhNtracksMB;                    //! total number of tracks in MB events
459   TH1F *       fhNclustersMB;                  //! total number of clusters in MB events
460   TH2F *       fhMixDeltaPhiCharged  ;         //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
461   TH2F *       fhMixDeltaPhiDeltaEtaCharged  ; //! Difference of charged particle phi and trigger particle  phi as function eta difference
462   TH2F *       fhMixXECharged;                 //! xE for mixed event
463   TH2F *       fhMixXEUeCharged;               //! xE for mixed event in Ue region
464   TH2F *       fhMixHbpXECharged;              //! ln(1/xE) for mixed event
465   TH2F **      fhMixDeltaPhiChargedAssocPtBin; //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins
466   TH2F **      fhMixDeltaPhiChargedAssocPtBinDEta08;   //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins, delta eta > 0.8
467   TH2F **      fhMixDeltaPhiChargedAssocPtBinDEta0;    //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT, for different associated bins, delta eta = 0
468   TH2F **      fhMixDeltaPhiDeltaEtaChargedAssocPtBin; //![fNAssocPtBins*GetNZvertBin()] Difference of charged particle phi and trigger particle  phi as function eta difference, for different associated bins
469
470   TH1I *       fhEventBin;                     //! Number of real  events in a particular bin (cen,vz,rp)
471   TH1I *       fhEventMixBin;                  //! Number of mixed events in a particular bin (cen,vz,rp)
472   
473   AliAnaParticleHadronCorrelation(              const AliAnaParticleHadronCorrelation & ph) ; // cpy ctor
474   AliAnaParticleHadronCorrelation & operator = (const AliAnaParticleHadronCorrelation & ph) ; // cpy assignment
475         
476   ClassDef(AliAnaParticleHadronCorrelation,31)
477 } ;
478  
479
480 #endif //ALIANAPARTICLEHADRONCORRELATION_H
481
482
483