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