Compilation on Windows/Cygwin
[u/mrichter/AliRoot.git] / PWG4 / AliAnaGammaJetLeadCone.h
1 #ifndef ALIANAGAMMAJETLEADCONE_H
2 #define ALIANAGAMMAJETLEADCONE_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 /* History of cvs commits:
8  *
9  * $Log$
10  * Revision 1.2  2007/08/17 12:40:04  schutz
11  * New analysis classes by Gustavo Conesa
12  *
13  * Revision 1.1.2.1  2007/07/26 10:32:09  schutz
14  * new analysis classes in the the new analysis framework
15  *
16  *
17  */
18
19 //_________________________________________________________________________
20 // Class that contains the algorithm for the reconstruction of jet, cone around leading particle
21 // 1)Take the prompt photon found with AliAnaGammaDirect,
22 // 2) Search for the highest pt leading particle opposite to the photon within a phi, pt window
23 // 3) Take all particles around leading in a cone R with pt larger than threshold and construct the jet
24 //
25 //  Class created from old AliPHOSGammaJet
26 //  (see AliRoot versions previous Release 4-09)
27 //-- Author: Gustavo Conesa (INFN-LNF)
28
29 #include "AliAnaGammaCorrelation.h"
30
31 class AliAnaGammaJetLeadCone : public AliAnaGammaCorrelation {
32
33 public: 
34   
35   AliAnaGammaJetLeadCone() ; // default ctor
36   AliAnaGammaJetLeadCone(const AliAnaGammaJetLeadCone & g) ; // cpy ctor
37   AliAnaGammaJetLeadCone & operator = (const AliAnaGammaJetLeadCone & g) ;//cpy assignment
38   virtual ~AliAnaGammaJetLeadCone() ; //virtual dtor
39   
40   TList * GetCreateOutputObjects();
41
42   void InitParameters();
43
44   void Print(const Option_t * opt) const;
45  
46   Bool_t   AreSeveralConeAndPtCuts() const {return fSeveralConeAndPtCuts ; }
47   void SetSeveralConeAndPtCuts(Bool_t several){fSeveralConeAndPtCuts = several ;}
48
49   Bool_t   IsPbPb() const {return fPbPb ; }
50   void SetPbPb(Bool_t opt){fPbPb = opt; }
51
52   Double_t GetEtaEMCALCut() const {return fEtaEMCALCut;}
53   Double_t GetPhiEMCALCut(Int_t i) const {return fPhiEMCALCut[i];}
54   void SetEtaEMCALCut(Double_t etacut) {fEtaEMCALCut = etacut ; }
55   void SetPhiEMCALCut(Double_t phi, Int_t i){fPhiEMCALCut[i] = phi; }
56
57   Double_t GetPtJetSelectionCut() const {return fPtJetSelectionCut ; }
58   Double_t GetJetRatioMaxCut() const {return fJetRatioMaxCut ; }
59   Double_t GetJetRatioMinCut() const {return fJetRatioMinCut ; }
60  
61   void SetPtJetSelectionCut(Double_t cut){fPtJetSelectionCut = cut; }
62   void SetJetSelection(UInt_t select){ fSelect= select ; }
63
64   Int_t       GetJetNCones() const {return fJetNCone ; }
65   Int_t       GetJetNPtThres() const {return fJetNPt ; }
66   Float_t    GetJetCone() const {return fJetCone ; }
67   Float_t    GetJetPtThreshold() const {return fJetPtThreshold ; }
68   Float_t    GetJetPtThresPbPb() const {return fJetPtThresPbPb ; }
69   Float_t    GetJetCones(Int_t i) const {return fJetCones[i] ; }
70   Float_t    GetJetPtThreshold(Int_t i) const {return fJetPtThres[i] ; }
71   TString   GetJetConeName(Int_t i) const {return fJetNameCones[i] ; }
72   TString   GetJetPtThresName(Int_t i) const {return fJetNamePtThres[i] ; }
73
74   void SetJetNCones(Int_t n){fJetNCone = n ; }
75   void SetJetNPtThresholds(Int_t n){fJetNPt = n ; }
76   void SetJetCones(Int_t i, Float_t cone, TString sc)
77     {fJetCones[i] = cone ; fJetNameCones[i] = sc; };
78   void SetCone(Float_t cone)
79     {fJetCone = cone; }
80   void SetJetPtThreshold(Float_t pt){fJetPtThreshold = pt; };
81   void SetJetPtThresPbPb(Float_t pt){fJetPtThresPbPb = pt; };
82   void SetJetPtThresholds(Int_t i,Float_t pt, TString spt){fJetPtThres[i] = pt ; 
83   fJetNamePtThres[i] = spt; };
84
85   void SetJetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
86     {fJetRatioMaxCut =ratiomax;  fJetRatioMinCut = ratiomin ; }
87   void SetJetCTSRatioCutRange(Double_t ratiomin, Double_t ratiomax)
88     {fJetCTSRatioMaxCut =ratiomax;  fJetCTSRatioMinCut = ratiomin ; }
89   
90   void MakeGammaCorrelation(TParticle * pGamma, TClonesArray * plCTS,   TClonesArray * plNe) ;
91   
92   private:
93
94   Double_t CalculateJetRatioLimit(const Double_t ptg, const Double_t *param, 
95                                   const Double_t *x){
96     return 0; // dummy implementation
97   }
98   void FillJetHistos(TClonesArray * pl, Double_t ptg, Double_t ptl,TString type, TString lastname);
99
100   Bool_t IsJetSelected(const Double_t ptg, const Double_t ptjet);
101
102   void MakeJet(TClonesArray * plCTS, TClonesArray * plNe, 
103                TParticle * pGamma, TParticle* pLeading, TString lastname); 
104   
105   void GetLeadingCharge(TClonesArray * pl, TParticle *pGamma, TParticle * pLeading) const ;
106   void GetLeadingPi0   (TClonesArray * pl, TParticle *pGamma, TParticle * pLeading)  ;
107   Bool_t GetLeadingParticle(TClonesArray * plCTS, TClonesArray * plNe, 
108                             TParticle *pGamma, TParticle * pLeading) ;
109   
110   void SetJet(TParticle * part, Bool_t & b, Float_t cone, Double_t eta, 
111               Double_t phi);
112
113   private:
114
115   Bool_t       fPbPb;          // PbPb event
116   Bool_t       fSeveralConeAndPtCuts;     //  To play with the jet cone size and pt th.
117
118   Double_t   fEtaEMCALCut ;         // Eta EMCAL acceptance
119   Double_t   fPhiEMCALCut[2] ; // Phi cut maximum
120
121   //Jet selection parameters
122   //Fixed cuts (old)
123   Double_t   fJetCTSRatioMaxCut ; // Leading particle/gamma Ratio cut maximum
124   Double_t   fJetCTSRatioMinCut ; // Leading particle/gamma Ratio cut minimum
125   Double_t   fJetRatioMaxCut ; // Jet/gamma Ratio cut maximum
126   Double_t   fJetRatioMinCut ; // Jet/gamma Ratio cut minimum
127
128   //Cuts depending on jet pt
129   Double_t fJetE1[2];    //Rec. jet energy parameters
130   Double_t fJetE2[2];    //Rec. jet energy parameters
131   Double_t fJetSigma1[2];//Rec. sigma of jet energy  parameters
132   Double_t fJetSigma2[2];//Rec. sigma of jet energy  parameters
133   Double_t fBkgMean[6];  //Background mean energy 
134   Double_t fBkgRMS[6];   //Background RMS
135   Double_t fJetXMin1[6]; //X Factor to set jet min limit for pp
136   Double_t fJetXMin2[6]; //X Factor to set jet min limit for PbPb
137   Double_t fJetXMax1[6]; //X Factor to set jet max limit for pp
138   Double_t fJetXMax2[6]; //X Factor to set jet max limit for PbPb
139
140   Int_t         fJetNCone ;            // Number of jet cones sizes
141   Int_t         fJetNPt   ;            // Number of jet particle pT threshold
142   Double_t   fJetCone  ;            // Jet cone sizes under study (!fSeveralConeAndPtCuts)
143   Double_t   fJetCones[10];         // Jet cone sizes under study (fSeveralConeAndPtCuts)
144   TString     fJetNameCones[10];     // String name of cone to append to histos
145   Double_t   fJetPtThreshold;       // Jet pT threshold under study(!fSeveralConeAndPtCuts)
146   Double_t   fJetPtThresPbPb;       // Jet pT threshold under study(!fSeveralConeAndPtCuts)
147   Double_t   fJetPtThres[10];       // Jet pT threshold under study(fSeveralConeAndPtCuts)
148   TString     fJetNamePtThres[10];   // String name of pt th to append to histos
149   Double_t   fPtJetSelectionCut; // Jet pt to change to low pt jets analysis
150   UInt_t       fSelect  ;   //kTRUE: Selects all jets, no limits.
151  
152   //Histograms
153   //Particle distributions
154   TH2F * fhPhiCharged  ; //Phi distribution of charged particles
155   TH2F * fhPhiNeutral   ;  //Phi distribution of neutral particles
156   TH2F * fhEtaCharged  ;  //Eta distribution of charged particles
157   TH2F * fhEtaNeutral   ;  //Eta distribution of neutral particles
158   //Leading particle distributions
159   TH2F * fhDeltaPhiGammaCharged  ;   //Difference of charged particle phi and prompt gamma phi as function of gamma pT
160   TH2F * fhDeltaPhiGammaNeutral   ;  //Difference of neutral particle phi and prompt gamma phi as function of gamma pT
161   TH2F * fhDeltaEtaGammaCharged  ;  //Difference of charged particle eta and prompt gamma eta as function of gamma pT
162   TH2F * fhDeltaEtaGammaNeutral  ;   //Difference of charged particle eta and prompt gamma eta as function of charged pT
163
164   TH2F * fhAnglePairLeading  ; //Aperture angle of decay photons of leading pi0
165   TH2F * fhInvMassPairLeading  ; //Invariant mass of decay photons of leading pi0
166   TH2F * fhChargedRatio  ; //Ratio of leading charge and prompt gamma
167   TH2F * fhNeutralRatio   ;  //Ratio of leading neutral and prompt gamma
168   TH1F * fhNBkg   ; //Bakground multiplicity
169   TH2F * fhNLeading  ; //Accepted leading particle pt distribution
170
171   //Jet distributions
172   //Fixed cone and pt threshold
173   TH1F * fhNJet  ; //Accepted reconstructed Jet pt distribution 
174   TH2F * fhJetRatio  ; //Ratio of pt jet and pt gamma
175   TH2F * fhJetPt   ; //reconstructed pt jet vs prompt pt gamma
176   TH2F * fhBkgRatio   ; //leading pt bakground / pt gamma 
177   TH2F * fhBkgPt  ; //leading pt bakground vs pt gamma 
178   TH2F * fhJetFragment  ; //Accepted reconstructed jet fragmentation function
179   TH2F * fhBkgFragment  ;  //Background "fragmentation function"
180   TH2F * fhJetPtDist  ; //Jet particle pt distribution
181   TH2F * fhBkgPtDist  ; //Background jet particle pt distribution
182
183   //Variable cone and pt threshold
184   TH2F * fhJetRatios[5][5]; //Ratio of pt jet and pt gamma
185   TH2F * fhJetPts[5][5]; //reconstructed pt jet vs prompt pt gamma
186   TH2F * fhBkgRatios[5][5];  //leading pt bakground / pt gamma 
187   TH2F * fhBkgPts[5][5]; //leading pt bakground vs pt gamma 
188   
189   TH2F * fhNLeadings[5][5];  //Accepted leading particle pt distribution
190   TH1F * fhNJets[5][5]; //Accepted reconstructed Jet pt distribution 
191   TH1F * fhNBkgs[5][5]; //Bakground multiplicity
192   
193   TH2F * fhJetFragments[5][5];//Accepted reconstructed jet fragmentation function
194   TH2F * fhBkgFragments[5][5];  //Background "fragmentation function"
195   TH2F * fhJetPtDists[5][5]; //Jet particle pt distribution
196   TH2F * fhBkgPtDists[5][5]; //Background jet particle pt distribution
197   
198
199   ClassDef(AliAnaGammaJetLeadCone,1)
200 } ;
201  
202
203 #endif //ALIANAGAMMAJETLEADCONE_H
204
205
206