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