]> git.uio.no Git - u/mrichter/AliRoot.git/blob - PWG4/PartCorrDep/AliAnaParticleHadronCorrelation.h
Selection of absolute leading for triggering, MC histograms added, possibility of...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / 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 /* $Id:  $ */
6
7 //_________________________________________________________________________
8 // Class that contains the algorithm for the analysis of particle - hadron correlations
9 // Particle (for example direct gamma) must be found in a previous analysis 
10 //-- Author: Gustavo Conesa (INFN-LNF)
11
12 //  Modified by Yaxian Mao:
13 // 1. add the UE subtraction for corrlation study
14 // 2. change the correlation variable
15 // 3. Only use leading particle(cluster/track) as trigger for correlation (2010/07/02)
16 // 4. Make decay photon-hadron correlations where decay contribute pi0 mass (2010/09/09)
17 // 5. fill the pout to extract kt at the end, also to study charge asymmetry(2010/10/06) 
18 // 6. Add the possibility for event selection analysis based on vertex and multiplicity bins (10/10/2010)
19 // 7. change the way of delta phi cut for UE study due to memory issue (reduce histograms)
20 // 8. Add the possibility to request the absolute leading particle at the near side or not, set trigger bins, general clean-up (08/2011)
21
22 // --- ROOT system ---
23 //class TH3D;
24
25 // --- Analysis system ---
26 #include "AliAnaPartCorrBaseClass.h"
27 class AliAODPWG4ParticleCorrelation ;
28
29 class AliAnaParticleHadronCorrelation : public AliAnaPartCorrBaseClass {
30   
31  public: 
32   AliAnaParticleHadronCorrelation() ; // default ctor
33   virtual ~AliAnaParticleHadronCorrelation() {;} //virtual dtor
34  private:  
35   AliAnaParticleHadronCorrelation(const AliAnaParticleHadronCorrelation & ph) ; // cpy ctor
36   AliAnaParticleHadronCorrelation & operator = (const AliAnaParticleHadronCorrelation & ph) ;//cpy assignment
37
38  public:
39   
40   // General methods
41   
42   TObjString * GetAnalysisCuts();
43   
44   TList      * GetCreateOutputObjects();
45   
46   void         InitParameters();
47   
48   void         MakeAnalysisFillAOD()  ;
49   
50   void         MakeAnalysisFillHistograms() ; 
51   
52   void         Print(const Option_t * opt) const;
53   
54   // Main analysis methods
55   
56   Bool_t       MakeChargedCorrelation  (AliAODPWG4ParticleCorrelation * aodParticle, TObjArray* pl, const Bool_t bFillHisto) ;
57   
58   Bool_t       MakeNeutralCorrelation  (AliAODPWG4ParticleCorrelation * aodParticle, TObjArray* pl, const Bool_t bFillHisto) ;
59   
60   void         MakeMCChargedCorrelation(AliAODPWG4ParticleCorrelation *aodParticle);
61   
62   
63   // Parameter setter and getter
64   
65   Double_t     GetDeltaPhiMaxCut()       const { return fDeltaPhiMaxCut   ; }
66   Double_t     GetDeltaPhiMinCut()       const { return fDeltaPhiMinCut   ; }
67   Double_t     GetUeDeltaPhiMaxCut()     const { return fUeDeltaPhiMaxCut ; }
68   Double_t     GetUeDeltaPhiMinCut()     const { return fUeDeltaPhiMinCut ; }
69   
70   void         SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
71     { fDeltaPhiMaxCut   = phimax ;   fDeltaPhiMinCut   = phimin   ; }
72   void         SetUeDeltaPhiCutRange(Double_t uephimin, Double_t uephimax)
73     { fUeDeltaPhiMaxCut = uephimax;  fUeDeltaPhiMinCut = uephimin ; }
74   
75   Bool_t       IsSeveralUEOn()           const { return fMakeSeveralUE    ; }
76   void         SwitchOnSeveralUECalculation()  { fMakeSeveralUE = kTRUE   ; }
77   void         SwitchOffSeveralUECalculation() { fMakeSeveralUE = kFALSE  ; }
78
79   // Do trigger-neutral correlation
80   Bool_t       DoNeutralCorr()           const { return fNeutralCorr      ; }
81   void         SwitchOnNeutralCorr()           { fNeutralCorr = kTRUE     ; }
82   void         SwitchOffNeutralCorr()          { fNeutralCorr = kFALSE    ; }  
83   
84   // Taking the absolute leading as the trigger or not
85   Bool_t       DoAbsoluteLeading()       const { return fMakeAbsoluteLeading   ; }
86   void         SwitchOnAbsoluteLeading()       { fMakeAbsoluteLeading = kTRUE  ; }
87   void         SwitchOffAbsoluteLeading()      { fMakeAbsoluteLeading = kFALSE ; }
88   
89   // Do decay-hadron correlation if it is pi0 trigger
90   Bool_t       IsPi0Trigger()            const { return fPi0Trigger       ; }
91   void         SwitchOnDecayCorr()             { fPi0Trigger = kTRUE      ; }
92   void         SwitchOffDecayCorr()            { fPi0Trigger = kFALSE     ; }  
93   
94   Bool_t       OnlyIsolated()            const { return fSelectIsolated   ; }
95   void         SelectIsolated(Bool_t s)        { fSelectIsolated   = s    ; }
96
97   void         SetPi0AODBranchName(TString n)  { fPi0AODBranchName = n    ; }
98   
99   void         SetNTriggerPtBins(Int_t n) ;     
100   void         SetTriggerPtBinLimit(Int_t ibin, Float_t pt) ;
101                 
102  private:
103   
104   Double_t     fDeltaPhiMaxCut ;               // Minimum Delta Phi Gamma-Hadron
105   Double_t     fDeltaPhiMinCut ;               // Maximum Delta Phi Gamma-Hadron
106   Bool_t       fSelectIsolated ;               // Select only trigger particles isolated
107   Bool_t       fMakeSeveralUE ;                // Do analysis for several underlying events contribution
108   Double_t     fUeDeltaPhiMaxCut ;             // Minimum Delta Phi Gamma-Underlying Hadron
109   Double_t     fUeDeltaPhiMinCut ;             // Maximum Delta Phi Gamma-Underlying Hadron
110   TString      fPi0AODBranchName;              // Name of AOD branch with pi0, not trigger
111   Bool_t       fNeutralCorr ;                  // switch the analysis with neutral particles
112   Bool_t       fPi0Trigger ;                   // switch the analysis with decay photon from pi0 trigger
113   Bool_t       fMakeAbsoluteLeading ;          // requesting absolute leading while it is cluster triggers
114   Int_t        fLeadingTriggerIndex ;          // Store here per event the trigger index, to avoid too many loops
115   
116   Int_t        fNTriggerPtBins ;               // Number of trigger bins under study
117   Float_t      fTriggerPtBinLimit[10] ;        // Trigger pt limtis
118   
119   //Histograms
120
121   //leading particles 
122   TH1F *       fhPtLeading;                    //! pT distribution of leading particles
123   TH2F *       fhPhiLeading;                   //! phi distribution vs pT of leading particles
124   TH2F *       fhEtaLeading;                   //! eta distribution vs pT of leading particles
125   
126   //trigger-charged histograms
127   TH2F *       fhDeltaPhiDeltaEtaCharged ;     //! differences of eta and phi between trigger and charged hadrons
128   TH2F *       fhPhiCharged  ;                 //! Phi distribution of charged particles
129   TH2F *       fhEtaCharged  ;                 //! Eta distribution of charged particles
130   TH2F *       fhDeltaPhiCharged  ;            //! Difference of charged particle phi and trigger particle  phi as function of  trigger particle pT
131   TH2F *       fhDeltaEtaCharged  ;            //! Difference of charged particle eta and trigger particle  eta as function of  trigger particle pT
132   TH2F *       fhDeltaPhiChargedPt  ;          //! Difference of charged particle phi and trigger particle  phi as function of charged particle pT
133   TH2F *       fhDeltaPhiUeChargedPt ;         //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
134   TH2F *       fhPtImbalanceCharged  ;         //! Trigger particle -charged hadron momentim imbalance histogram
135   TH2F *       fhPtImbalanceUeCharged  ;       //! Trigger particle -underlying charged hadron momentum imbalance histogram  
136   TH2F *       fhPtImbalancePosCharged  ;      //! Trigger particle -positive charged hadron momentum imbalance histogram
137   TH2F *       fhPtImbalanceNegCharged  ;      //! Trigger particle -negative charged hadron momentum imbalance histogram 
138   
139   //with different imblance varible defination HBP distribution
140   TH2F *       fhPtHbpCharged  ;               //! Trigger particle -charged hadron momentim HBP histogram
141   TH2F *       fhPtHbpUeCharged  ;             //! Trigger particle -underlying charged hadron momentim HBP histogram  
142   
143   //if several UE calculation is on, most useful for jet-jet events contribution
144   TH2F *       fhDeltaPhiUeLeftCharged  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of charged particle pT
145   TH2F *       fhDeltaPhiUeRightCharged  ;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
146   TH2F *       fhPtImbalanceUeLeftCharged  ;   //! Trigger particle -underlying charged hadron momentim imbalance histogram 
147   TH2F *       fhPtImbalanceUeRightCharged ;   //! Trigger particle -underlying charged hadron momentim imbalance histogram  
148   TH2F *       fhPtHbpUeLeftCharged  ;         //! Trigger particle -underlying charged hadron momentim HBP histogram 
149   TH2F *       fhPtHbpUeRightCharged  ;        //! Trigger particle -underlying charged hadron momentim HBP histogram  
150
151   //for pout and kt extraction
152   TH2F *       fhPtTrigPout  ;                 //! Pout =associated pt*sin(delta phi) distribution vs trigger pt vs associated pt
153   TH2F *       fhPtAssocDeltaPhi  ;            //! Pout =associated pt*sin(delta phi) distribution
154   TH2F *       fhPtTrigCharged ;               //! trigger and correlated particl pt, to be used for mean value for kt  
155   
156   //if different multiplicity analysis asked
157   TH2F **      fhTrigDeltaPhiCharged ;         //! differences of phi between trigger and charged hadrons
158   TH2F **      fhTrigDeltaEtaCharged ;         //! differences of eta between trigger and charged hadrons
159   TH2F **      fhTrigCorr  ;                   //! Trigger particle -charged hadron momentim imbalance histogram
160   TH2F **      fhTrigUeCorr  ;                 //! Trigger particle -UE charged hadron momentim imbalance histogram
161     
162   TH1F *       fhTrigPt[10] ;                  //! add explanation
163   TH1F *       fhDphiTrigPtAssocPt[10];        //! add explanation
164   TH1F *       fhAssocPtBkg[10];               //! add explanation
165   TH1F *       fhXE[10] ;                      //! add explanation
166   
167   //trigger-neutral histograms
168   TH2F *       fhDeltaPhiDeltaEtaNeutral ;     //! differences of eta and phi between trigger and neutral hadrons (pi0)
169   TH2F *       fhPhiNeutral   ;                //! Phi distribution of neutral particles  
170   TH2F *       fhEtaNeutral   ;                //! Eta distribution of neutral particles
171   TH2F *       fhDeltaPhiNeutral   ;           //! Difference of neutral particle phi and trigger particle  phi as function of  trigger particle pT
172   TH2F *       fhDeltaEtaNeutral  ;            //! Difference of neutral particle eta and trigger particle  eta as function of  trigger particle pT
173   TH2F *       fhDeltaPhiNeutralPt  ;          //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT
174   TH2F *       fhDeltaPhiUeNeutralPt ;         //! Difference of neutral particle phi and trigger particle  phi as function of neutral particle particle pT  
175   TH2F *       fhPtImbalanceNeutral  ;         //! Trigger particle - neutral hadron momentum imbalance histogram 
176   TH2F *       fhPtImbalanceUeNeutral  ;       //! Trigger particle - neutral hadron momentum imbalance histogram 
177   
178   //with different imblance varible defination HBP distribution  
179   TH2F *       fhPtHbpNeutral  ;               //! Trigger particle -neutral particle momentim HBP histogram
180   TH2F *       fhPtHbpUeNeutral  ;             //! Trigger particle -underlying neutral hadron momentim HBP histogram  
181
182   //if several UE calculation is on, most useful for jet-jet events contribution
183   TH2F *       fhDeltaPhiUeLeftNeutral  ;      //! Difference of charged particle from underlying events phi and trigger particle  phi as function of neutral particle pT
184   TH2F *       fhDeltaPhiUeRightNeutral  ;     //! Difference of charged particle from underlying events phi and trigger particle  phi 
185   TH2F *       fhPtImbalanceUeLeftNeutral  ;   //! Trigger particle -underlying neutral hadron momentim imbalance histogram 
186   TH2F *       fhPtImbalanceUeRightNeutral ;   //! Trigger particle -underlying neutral hadron momentim imbalance histogram 
187   TH2F *       fhPtHbpUeLeftNeutral  ;         //! Trigger particle -underlying neutral hadron momentim HBP histogram 
188   TH2F *       fhPtHbpUeRightNeutral  ;        //! Trigger particle -underlying neutral hadron momentim HBP histogram 
189   
190   //for decay photon trigger correlation
191   TH2F *       fhPtPi0DecayRatio ;             //! for pi0 pt and ratio of decay photon pt
192   TH2F *       fhDeltaPhiDecayCharged  ;       //! Difference of charged particle phi and decay trigger
193   TH2F *       fhPtImbalanceDecayCharged ;     //! Trigger particle (decay from pi0)-charged hadron momentim imbalance histogram    
194   TH2F *       fhDeltaPhiDecayNeutral  ;       //! Difference of neutral particle phi and decay trigger
195   TH2F *       fhPtImbalanceDecayNeutral ;     //! Trigger particle (decay from pi0)-neutral hadron momentim imbalance histogram  
196   
197   //if the data is MC, fill MC information
198   TH2F *       fh2phiLeadingParticle;          //! #phi resolution for triggers
199   TH1F *       fhMCLeadingCount;               //! add explanation
200   TH2F *       fhMCEtaCharged;                 //! add explanation
201   TH2F *       fhMCPhiCharged;                 //! add explanation
202   TH2F *       fhMCDeltaEtaCharged;            //! add explanation
203   TH2F *       fhMCDeltaPhiCharged;            //! add explanation
204   TH2F *       fhMCDeltaPhiDeltaEtaCharged;    //! add explanation
205   TH2F *       fhMCDeltaPhiChargedPt;          //! add explanation
206   TH2F *       fhMCPtImbalanceCharged;         //! add explanation
207   TH2F *       fhMCPtHbpCharged;               //! add explanation
208   TH2F *       fhMCPtTrigPout ;                //! add explanation
209   TH2F *       fhMCPtAssocDeltaPhi  ;          //! Pout =associated pt*sin(delta phi) distribution
210
211         
212   ClassDef(AliAnaParticleHadronCorrelation,7)
213 } ;
214  
215
216 #endif //ALIANAPARTICLEHADRONCORRELATION_H
217
218
219