PartCorr split in 2 Base and Dep; coding violations corrected; PHOS geometry can...
[u/mrichter/AliRoot.git] / PWG4 / PartCorrDep / AliAnaParticleJetLeadingConeCorrelation.h
1 #ifndef ALIANAPARTICLEJETLEADINGCONECORRELATION_H
2 #define ALIANAPARTICLEJETLEADINGCONECORRELATION_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 reconstruction of jet, cone around leading particle
9 // The seed is a backward particle (direct photon)
10 // 1)Take the a trigger particle found stored in AliAODPWG4ParticleCorrelation,
11 // 2) Search for the highest pt leading particle opposite to the trigger within a phi, pt window
12 // 3) Take all particles around leading in a cone R with pt larger than threshold and construct the jet
13 //
14 //  Class created from old AliPHOSGammaJet
15 //  (see AliRoot versions previous Release 4-09)
16 //
17 //-- Author: Gustavo Conesa (INFN-LNF)
18
19 // --- ROOT system ---
20 class TH2F;
21
22 //---- Analysis system ----
23 class AliAODTrack;
24 class AliAODCaloCluster;
25 class AliCaloTrackReader;
26 class AliNeutralMesonSelection;
27 class AliLog;
28 class AliAODPWG4ParticleCorrelation ;
29
30 #include "AliAnaPartCorrBaseClass.h"
31
32 class AliAnaParticleJetLeadingConeCorrelation : public AliAnaPartCorrBaseClass {
33
34 public: 
35   
36   AliAnaParticleJetLeadingConeCorrelation() ; // default ctor
37   AliAnaParticleJetLeadingConeCorrelation(const AliAnaParticleJetLeadingConeCorrelation & g) ; // cpy ctor
38   AliAnaParticleJetLeadingConeCorrelation & operator = (const AliAnaParticleJetLeadingConeCorrelation & g) ;//cpy assignment
39   virtual ~AliAnaParticleJetLeadingConeCorrelation() ; //virtual dtor
40   
41   TList * GetCreateOutputObjects();
42
43   void InitParameters();
44   
45   void Print(const Option_t * opt) const;
46   
47   Bool_t AreJetsRecalculated() const {return fReMakeJet ; } 
48   void SwitchOnJetsRecalculation(){fReMakeJet = kTRUE; }
49   void SwitchOffJetsRecalculation(){fReMakeJet = kFALSE; }
50   
51   Bool_t AreJetsOnlyInCTS() const {return fJetsOnlyInCTS ; } 
52   void SwitchOnJetsOnlyInCTS(){fJetsOnlyInCTS = kTRUE; }
53   void SwitchOffJetsOnlyInCTS(){fJetsOnlyInCTS = kFALSE; }
54   
55   Bool_t AreSeveralConeAndPtCuts() const {return fSeveralConeAndPtCuts ; }
56   void SwitchOnSeveralConeAndPtCuts(){fSeveralConeAndPtCuts = kTRUE ;}
57   void SwitchOffSeveralConeAndPtCuts(){fSeveralConeAndPtCuts = kFALSE ;}
58   
59   Bool_t IsPbPb() const {return fPbPb ; }
60   void SetppCollisions(){fPbPb = kFALSE; }
61   void SetPbPbCollisions(){fPbPb = kTRUE; }
62   
63   Double_t GetDeltaPhiMaxCut() const {return fDeltaPhiMaxCut ; }
64   Double_t GetDeltaPhiMinCut() const {return fDeltaPhiMinCut ; }
65   Double_t GetLeadingRatioMaxCut() const {return fLeadingRatioMaxCut ; }
66   Double_t GetLeadingRatioMinCut() const {return fLeadingRatioMinCut ; }
67
68   Double_t GetPtTriggerSelectionCut() const {return fPtTriggerSelectionCut ; }
69   Double_t GetJetRatioMaxCut() const {return fJetRatioMaxCut ; }
70   Double_t GetJetRatioMinCut() const {return fJetRatioMinCut ; }  
71
72   void SetPtTriggerSelectionCut(Double_t cut){fPtTriggerSelectionCut = cut; }
73   void SetJetSelectionMode(UInt_t select){ fSelect= select ; }
74   
75   Int_t     GetJetNCones()             const {return fJetNCone ; }
76   Int_t     GetJetNPtThres()           const {return fJetNPt ; }
77   Float_t   GetJetCone()               const {return fJetCone ; }
78   Float_t   GetJetPtThreshold()        const {return fJetPtThreshold ; }
79   Float_t   GetJetPtThresPbPb()        const {return fJetPtThresPbPb ; }
80   Float_t   GetJetCones(Int_t i)       const {return fJetCones[i] ; }
81   Float_t   GetJetPtThreshold(Int_t i) const {return fJetPtThres[i] ; }
82   TString   GetJetConeName(Int_t i)    const {return fJetNameCones[i] ; }
83   TString   GetJetPtThresName(Int_t i) const {return fJetNamePtThres[i] ; }
84   
85
86   void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax)
87   {fDeltaPhiMaxCut =phimax;  fDeltaPhiMinCut =phimin;}
88   void SetLeadingRatioCutRange(Double_t ratiomin, Double_t ratiomax)
89   {fLeadingRatioMaxCut =ratiomax;  fLeadingRatioMinCut = ratiomin ; }
90
91   void SetJetNCones(Int_t n){fJetNCone = n ; }
92   void SetJetNPtThresholds(Int_t n){fJetNPt = n ; }
93   void SetJetCones(Int_t i, Float_t cone, TString sc) {fJetCones[i] = cone ; fJetNameCones[i] = sc; };
94   void SetCone(Float_t cone) {fJetCone = cone; }
95   void SetJetPtThreshold(Float_t pt){fJetPtThreshold = pt; };
96   void SetJetPtThresPbPb(Float_t pt){fJetPtThresPbPb = pt; };
97   void SetJetPtThresholds(Int_t i,Float_t pt, TString spt){fJetPtThres[i] = pt ; fJetNamePtThres[i] = spt; };
98   
99   void SetJetRatioCutRange(Double_t ratiomin, Double_t ratiomax)
100   {fJetRatioMaxCut =ratiomax;  fJetRatioMinCut = ratiomin ; }
101   void SetJetCTSRatioCutRange(Double_t ratiomin, Double_t ratiomax)
102   {fJetCTSRatioMaxCut =ratiomax;  fJetCTSRatioMinCut = ratiomin ; }
103   
104  private:
105   
106   Double_t CalculateJetRatioLimit(const Double_t ptTrig, const Double_t *param, const Double_t *x) const ;
107   
108   void FillJetHistos(AliAODPWG4ParticleCorrelation * particle, const TLorentzVector  leading, const TLorentzVector jet, const TString type, const TString lastname);
109   
110   TList * GetOutputContainer() const {return fOutCont; }
111   
112   Bool_t IsJetSelected(const Double_t ptTrig, const Double_t ptjet) const ;
113   Bool_t IsParticleInJetCone(const Double_t eta, Double_t phi, const Double_t etal, Double_t phil) const ;
114   
115   void GetLeadingCharge(AliAODPWG4ParticleCorrelation *particle, TLorentzVector & pLeading) const ;
116   void GetLeadingPi0   (AliAODPWG4ParticleCorrelation *particle, TLorentzVector & pLeading)  const ;
117   Bool_t GetLeadingParticle(AliAODPWG4ParticleCorrelation *particle, TLorentzVector &  pLeading) const ;
118   
119   void MakeAnalysisFillAOD();
120   void MakeAnalysisFillHistograms();   
121   void MakeAODJet(AliAODPWG4ParticleCorrelation * particle, const TLorentzVector pLeading) const ; 
122   void MakeJetFromAOD(AliAODPWG4ParticleCorrelation * particle, const TLorentzVector pLeading, 
123                       TLorentzVector & jet, TLorentzVector & bkg) const ; 
124   
125   Bool_t  SelectCluster(AliAODCaloCluster * calo, Double_t *vertex, TLorentzVector & mom, Int_t & pdg) const ;
126   
127  private:
128   
129   Bool_t     fJetsOnlyInCTS ;    // Jets measured only in TPC+ITS.
130   Bool_t     fPbPb;          // PbPb event
131   Bool_t     fSeveralConeAndPtCuts;     //  To play with the jet cone size and pt th.
132   Bool_t     fReMakeJet ; //Re make the jet reconstruction from AODParticleCorrelation input
133
134   //Leading particle selection parameters  
135   Double_t   fDeltaPhiMaxCut ;      // Minimum Delta Phi Gamma-Leading
136   Double_t   fDeltaPhiMinCut ;      //  Maximum Delta Phi Gamma-Leading
137   Double_t   fLeadingRatioMaxCut ; // Leading /gamma Ratio cut maximum
138   Double_t   fLeadingRatioMinCut ; // Leading/gamma Ratio cut minimum
139
140   //Jet selection parameters
141   //Fixed cuts (old)
142   Double_t   fJetCTSRatioMaxCut ; // Jet(CTS) /gamma Ratio cut maximum
143   Double_t   fJetCTSRatioMinCut ; // Jet(CTS) /gamma Ratio cut maximum
144   Double_t   fJetRatioMaxCut ; // Jet(EMCAL+CTS)/gamma Ratio cut maximum
145   Double_t   fJetRatioMinCut ; // Jet(EMCAL+CTS)/gamma Ratio cut minimum
146   
147   //Cuts depending on jet pt
148   Double_t   fJetE1[2];    //Rec. jet energy parameters
149   Double_t   fJetE2[2];    //Rec. jet energy parameters
150   Double_t   fJetSigma1[2];//Rec. sigma of jet energy  parameters
151   Double_t   fJetSigma2[2];//Rec. sigma of jet energy  parameters
152   Double_t   fBkgMean[6];  //Background mean energy 
153   Double_t   fBkgRMS[6];   //Background RMS
154   Double_t   fJetXMin1[6]; //X Factor to set jet min limit for pp
155   Double_t   fJetXMin2[6]; //X Factor to set jet min limit for PbPb
156   Double_t   fJetXMax1[6]; //X Factor to set jet max limit for pp
157   Double_t   fJetXMax2[6]; //X Factor to set jet max limit for PbPb
158   
159   Int_t      fJetNCone ;            // Number of jet cones sizes, maximum 5
160   Int_t      fJetNPt   ;            // Number of jet particle pT threshold, maximum 5
161   Double_t   fJetCone  ;            // Jet cone sizes under study (!fSeveralConeAndPtCuts)
162   Double_t   fJetCones[5];         // Jet cone sizes under study (fSeveralConeAndPtCuts)
163   TString    fJetNameCones[5];     // String name of cone to append to histos
164   Double_t   fJetPtThreshold;       // Jet pT threshold under study(!fSeveralConeAndPtCuts)
165   Double_t   fJetPtThresPbPb;       // Jet pT threshold under study(!fSeveralConeAndPtCuts)
166   Double_t   fJetPtThres[5];       // Jet pT threshold under study(fSeveralConeAndPtCuts)
167   TString    fJetNamePtThres[5];   // String name of pt th to append to histos
168   Double_t   fPtTriggerSelectionCut; // Jet pt to change to low pt jets analysis
169   UInt_t     fSelect  ;   //kTRUE: Selects all jets, no limits.
170   
171   //Histograms
172   //Leading particle distributions
173   TList *  fOutCont ; //! Container for histograms
174
175   TH2F * fhChargedLeadingPt  ;    //! Pt(Pt trigger) distribution of charged hadrons
176   TH2F * fhChargedLeadingPhi  ;   //! Phi(Pt trigger) distribution of charged hadrons
177   TH2F * fhChargedLeadingEta  ;   //! Eta(Pt trigger) distribution of charged hadrons
178   TH2F * fhChargedLeadingDeltaPt  ;   //! Difference of charged hadron and trigger  pT as function of trigger p
179   TH2F * fhChargedLeadingDeltaPhi  ;  //! Difference of charged hadron and trigger  phi as function of trigger pT
180   TH2F * fhChargedLeadingDeltaEta ;   //! Difference of charged particle and trigger eta as function of trigger pT
181   TH2F * fhChargedLeadingRatioPt  ; //! Ratio of Pt leading charge and trigger
182
183   TH2F * fhNeutralLeadingPt   ;   //! Pt(Pt trigger) distribution of neutral hadrons
184   TH2F * fhNeutralLeadingPhi   ;  //! Phi(Pt trigger) distribution of neutral hadrons
185   TH2F * fhNeutralLeadingEta   ;  //! Eta(Pt trigger) distribution of neutral hadrons
186   TH2F * fhNeutralLeadingDeltaPt   ;  //! Difference of neutral hadron and trigger pT as function of trigger pT
187   TH2F * fhNeutralLeadingDeltaPhi  ;  //! Difference of neutral hadron and trigger phi as function of trigger pT
188   TH2F * fhNeutralLeadingDeltaEta ;   //! Difference of charged particle and trigger eta as function of trigger pT
189   TH2F * fhNeutralLeadingRatioPt   ;  //! Ratio of Pt leading neutral and trigger
190
191   // Jet distributions
192   // Fixed cone and pt threshold
193   TH2F * fhJetPt  ; //! leading pt jet vs pt trigger
194   TH2F * fhJetRatioPt  ; //! Ratio of pt jet and pt trigger
195   TH2F * fhJetDeltaPhi  ; //! Delta phi jet-trigger
196   TH2F * fhJetDeltaEta  ; //! Delta eta jet-trigger
197   TH2F * fhJetLeadingRatioPt  ; //! Ratio of pt leading and pt jet
198   TH2F * fhJetLeadingDeltaPhi  ; //! Delta phi jet-leading
199   TH2F * fhJetLeadingDeltaEta  ; //! Delta eta jet-leading
200   TH2F * fhJetFFz; //! Accepted reconstructed jet fragmentation function, z=ptjet/pttrig
201   TH2F * fhJetFFxi; //! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/ptjet)
202   TH2F * fhJetFFpt; //! Jet particle pt distribution in cone
203   TH2F * fhJetNTracksInCone   ; //! jet multiplicity in cone
204
205   TH2F * fhBkgPt  ; //! leading pt bakground vs pt trigger
206   TH2F * fhBkgRatioPt  ; //! Ratio of pt background and pt trigger
207   TH2F * fhBkgDeltaPhi  ; //! Delta phi background-trigger
208   TH2F * fhBkgDeltaEta  ; //! Delta eta background-trigger
209   TH2F * fhBkgLeadingRatioPt  ; //! Ratio of pt leading and pt background
210   TH2F * fhBkgLeadingDeltaPhi  ; //! Delta phi background-leading
211   TH2F * fhBkgLeadingDeltaEta  ; //! Delta eta background-leading
212   TH2F * fhBkgFFz; //! Accepted reconstructed background fragmentation function, z=ptjet/pttrig
213   TH2F * fhBkgFFxi; //! Accepted reconstructed background fragmentation function, xsi = ln(pttrig/ptjet)
214   TH2F * fhBkgFFpt; //! Background particle pt distribution in cone
215   TH2F * fhBkgNTracksInCone   ; //! Background multiplicity in cone
216
217   // Variable cone and pt threshold
218
219   TH2F * fhJetPts[5][5]; //! leading pt jet vs pt trigger
220   TH2F * fhJetRatioPts[5][5]; //! Ratio of pt jet and pt trigger
221   TH2F * fhJetDeltaPhis[5][5]; //! Delta phi jet-trigger
222   TH2F * fhJetDeltaEtas[5][5]; //! Delta eta jet-trigger
223   TH2F * fhJetLeadingRatioPts[5][5]; //! Ratio of pt leading and pt jet
224   TH2F * fhJetLeadingDeltaPhis[5][5]; //! Delta phi jet-leading
225   TH2F * fhJetLeadingDeltaEtas[5][5]; //! Delta eta jet-leading
226   TH2F * fhJetFFzs[5][5]; //! Accepted reconstructed jet fragmentation function, z=ptjet/pttrig
227   TH2F * fhJetFFxis[5][5]; //! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/ptjet)
228   TH2F * fhJetFFpts[5][5]; //! Jet particle pt distribution in cone
229   TH2F * fhJetNTracksInCones[5][5]; //! jet multiplicity in cone
230
231   TH2F * fhBkgPts[5][5]; //! leading pt bakground vs pt trigger
232   TH2F * fhBkgRatioPts[5][5]; //! Ratio of pt background and pt trigger
233   TH2F * fhBkgDeltaPhis[5][5]; //! Delta phi background-trigger
234   TH2F * fhBkgDeltaEtas[5][5]; //! Delta eta background-trigger
235   TH2F * fhBkgLeadingRatioPts[5][5]; //! Ratio of pt leading and pt background
236   TH2F * fhBkgLeadingDeltaPhis[5][5]; //! Delta phi background-leading
237   TH2F * fhBkgLeadingDeltaEtas[5][5]; //! Delta eta background-leading
238   TH2F * fhBkgFFzs[5][5]; //! Accepted reconstructed background fragmentation function, z=ptjet/pttrig
239   TH2F * fhBkgFFxis[5][5]; //! Accepted reconstructed background fragmentation function, xsi = ln(pttrig/ptjet)
240   TH2F * fhBkgFFpts[5][5]; //! Background particle pt distribution in cone
241   TH2F * fhBkgNTracksInCones[5][5]; //! Background multiplicity in cone
242   
243   
244   ClassDef(AliAnaParticleJetLeadingConeCorrelation,1)
245  } ;
246  
247
248 #endif //ALIANAPARTICLEJETLEADINGCONECORRELATION_H
249
250
251