]>
Commit | Line | Data |
---|---|---|
1c5acb87 | 1 | #ifndef ALIANAPARTICLEJETFINDERCORRELATION_H |
2 | #define ALIANAPARTICLEJETFINDERCORRELATION_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 analysis of particle (direct gamma) - jet | |
8 | // (standard jet found with JETAN) correlation | |
9 | // Particle and jet for correlation found by independent algorithms. | |
10 | // For Example direct isolated photon found in AliAnaGammaDirect and the jet with JETAN | |
11 | // | |
12 | //-- Author: Gustavo Conesa (INFN-LNF) | |
290c1e1b | 13 | //-- Modified by Adam Matyja (INP PAN, Krakow) |
1c5acb87 | 14 | |
15 | // --- ROOT system --- | |
16 | class TH2F; | |
290c1e1b | 17 | class TTree; |
18 | class TRandom2; | |
1c5acb87 | 19 | //---- Analysis system ---- |
745913ae | 20 | #include "AliAnaCaloTrackCorrBaseClass.h" |
1c5acb87 | 21 | |
745913ae | 22 | class AliAnaParticleJetFinderCorrelation : public AliAnaCaloTrackCorrBaseClass { |
1c5acb87 | 23 | |
78219bac | 24 | public: |
745913ae | 25 | AliAnaParticleJetFinderCorrelation() ; // default ctor |
290c1e1b | 26 | virtual ~AliAnaParticleJetFinderCorrelation() ; // virtual dtor |
78219bac | 27 | |
c5693f62 | 28 | // General methods |
477d6cee | 29 | |
c5693f62 | 30 | void InitParameters(); |
477d6cee | 31 | |
c5693f62 | 32 | TList * GetCreateOutputObjects(); |
33 | ||
34 | void MakeAnalysisFillAOD() ; | |
477d6cee | 35 | |
c5693f62 | 36 | void MakeAnalysisFillHistograms() ; |
477d6cee | 37 | |
290c1e1b | 38 | Int_t SelectJet(AliAODPWG4Particle * particle, TClonesArray * aodRecJets) ;//to access non standard branch |
c5693f62 | 39 | |
40 | void Print(const Option_t * opt) const; | |
477d6cee | 41 | |
c5693f62 | 42 | // Settings |
477d6cee | 43 | |
c5693f62 | 44 | Bool_t OnlyIsolated() const { return fSelectIsolated ; } |
45 | void SelectIsolated(Bool_t select) { fSelectIsolated = select ; } | |
477d6cee | 46 | |
c5693f62 | 47 | Float_t GetConeSize() const { return fConeSize ; } |
48 | Float_t GetPtThresholdInCone() const { return fPtThresholdInCone ; } | |
49 | Double_t GetDeltaPhiMaxCut() const { return fDeltaPhiMaxCut ; } | |
50 | Double_t GetDeltaPhiMinCut() const { return fDeltaPhiMinCut ; } | |
51 | Double_t GetRatioMaxCut() const { return fRatioMaxCut ; } | |
52 | Double_t GetRatioMinCut() const { return fRatioMinCut ; } | |
53 | Bool_t AreJetRefTracks() const { return fUseJetRefTracks ; } | |
54 | Bool_t IsCorrelationMadeInHistoMaker() const { return fMakeCorrelationInHistoMaker ; } | |
290c1e1b | 55 | Double_t GetJetConeSize() const { return fJetConeSize ; } |
56 | Double_t GetJetMinPt() const { return fJetMinPt ; } | |
57 | Double_t GetJetAreaFraction() const { return fJetAreaFraction ; } | |
58 | Double_t GetGammaConeSize() const { return fGammaConeSize ; } | |
59 | ||
c5693f62 | 60 | void SetConeSize(Float_t cone) { fConeSize = cone ; } |
61 | void SetPtThresholdInCone(Float_t pt) { fPtThresholdInCone = pt ; } | |
62 | void SetDeltaPhiCutRange(Double_t phimin, Double_t phimax) | |
63 | { fDeltaPhiMaxCut =phimax; fDeltaPhiMinCut =phimin ; } | |
64 | void SetRatioCutRange(Double_t ratiomin, Double_t ratiomax) | |
65 | { fRatioMaxCut =ratiomax; fRatioMinCut = ratiomin ; } | |
66 | void UseJetRefTracks(Bool_t use) { fUseJetRefTracks = use ; } | |
290c1e1b | 67 | void SetMakeCorrelationInHistoMaker(Bool_t make) { fMakeCorrelationInHistoMaker = make ; } |
68 | void SetJetConeSize(Double_t cone) { fJetConeSize = cone ; } | |
69 | void SetJetMinPt(Double_t minpt) { fJetMinPt = minpt ; } | |
70 | void SetJetAreaFraction(Double_t areafr) { fJetAreaFraction = areafr ; } | |
71 | void SetGammaConeSize(Float_t cone) { fGammaConeSize = cone ; } | |
72 | ||
73 | // Settings for non standard jet branch | |
74 | TString GetJetBranchName() const { return fJetBranchName ; } | |
75 | void SetJetBranchName(const char *name) { fJetBranchName = name ; } | |
76 | void SwitchOnNonStandardJetFromReader() { fNonStandardJetFromReader = kTRUE ; } | |
77 | void SwitchOffNonStandardJetFromReader() { fNonStandardJetFromReader = kFALSE; } | |
78 | Bool_t IsNonStandardJetFromReader() { return fNonStandardJetFromReader ; } | |
79 | ||
80 | TString GetBkgJetBranchName() const { return fBkgJetBranchName ; } | |
81 | void SetBkgJetBranchName(const char *name) { fBkgJetBranchName = name ; } | |
82 | void SwitchOnBackgroundJetFromReader() { fBackgroundJetFromReader = kTRUE ; } | |
83 | void SwitchOffBackgroundJetFromReader() { fBackgroundJetFromReader = kFALSE ; } | |
84 | Bool_t IsBackgroundJetFromReader() { return fBackgroundJetFromReader ; } | |
85 | ||
86 | //switches for photons | |
87 | void SwitchOnBackgroundSubtractionGamma() { fUseBackgroundSubtractionGamma = kTRUE ; } | |
88 | void SwitchOffBackgroundSubtractionGamma() { fUseBackgroundSubtractionGamma = kFALSE; } | |
89 | Bool_t IsBackgroundSubtractionGamma() { return fUseBackgroundSubtractionGamma ; } | |
90 | ||
91 | void CalculateBkg(TVector3 gamma, TVector3 jet,Double_t *vector,Int_t type); | |
92 | ||
93 | void SwitchOnSaveGJTree() { fSaveGJTree = kTRUE ; } | |
94 | void SwitchOffSaveGJTree() { fSaveGJTree = kFALSE; } | |
95 | Bool_t IsSaveGJTree() { return fSaveGJTree ; } | |
96 | ||
97 | void SwitchOnMostEnergetic() { fMostEnergetic = kTRUE ; fMostOpposite = kFALSE; } | |
98 | void SwitchOffMostEnergetic() { fMostEnergetic = kFALSE; fMostOpposite = kTRUE ; } | |
99 | void SwitchOffMostOpposite() { fMostEnergetic = kTRUE ; fMostOpposite = kFALSE; } | |
100 | void SwitchOnMostOpposite() { fMostEnergetic = kFALSE; fMostOpposite = kTRUE ; } | |
101 | Bool_t IsMostEnergetic() { return fMostEnergetic ; } | |
102 | Bool_t IsMostOpposite() { return fMostOpposite; } | |
103 | ||
104 | //switches for histograms | |
105 | void SwitchOnHistogramJetBkg() { fUseHistogramJetBkg = kTRUE ; } | |
106 | void SwitchOffHistogramJetBkg() { fUseHistogramJetBkg = kFALSE; } | |
107 | Bool_t IsHistogramJetBkg() { return fUseHistogramJetBkg ; } | |
108 | ||
109 | void SwitchOnHistogramTracks() { fUseHistogramTracks = kTRUE ; } | |
110 | void SwitchOffHistogramTracks() { fUseHistogramTracks = kFALSE; } | |
111 | Bool_t IsHistogramTracks() { return fUseHistogramTracks ; } | |
112 | ||
113 | void SwitchOnHistogramJetTracks() { fUseHistogramJetTracks = kTRUE ; } | |
114 | void SwitchOffHistogramJetTracks() { fUseHistogramJetTracks = kFALSE; } | |
115 | Bool_t IsHistogramJetTracks() { return fUseHistogramJetTracks ; } | |
116 | ||
c5693f62 | 117 | private: |
118 | ||
477d6cee | 119 | //selection parameters |
c5693f62 | 120 | Double_t fDeltaPhiMaxCut ; //! Minimum Delta Phi Gamma-Leading |
290c1e1b | 121 | Double_t fDeltaPhiMinCut ; //! Maximum Delta Phi Gamma-Leading |
122 | Double_t fRatioMaxCut ; //! Jet/particle Ratio cut maximum | |
c5693f62 | 123 | Double_t fRatioMinCut ; //! Jet/particle Ratio cut minimum |
477d6cee | 124 | |
290c1e1b | 125 | Double_t fConeSize ; //! Jet cone size to calculate fragmentation function |
477d6cee | 126 | Double_t fPtThresholdInCone ; //! Jet pT threshold in jet cone |
290c1e1b | 127 | Bool_t fUseJetRefTracks ; //! Use track references from JETAN not the AOD tracks to calculate fragmentation function |
128 | Bool_t fMakeCorrelationInHistoMaker ; //!Make particle-jet correlation in histogram maker | |
129 | Bool_t fSelectIsolated ; //! Select only trigger particles isolated | |
c5693f62 | 130 | |
290c1e1b | 131 | Double_t fJetConeSize ; //! Reconstructed jet cone size |
132 | Double_t fJetMinPt ; //! Minumum jet pt, default 5GeV/c | |
133 | Double_t fJetAreaFraction ; //! Jet area fraction X in X*pi*R^2, default 0.6 | |
134 | Bool_t fNonStandardJetFromReader; //! use non standard jet from reader //new | |
135 | TString fJetBranchName ;//! name of jet branch not set in reader part //new | |
136 | Bool_t fBackgroundJetFromReader; //! use background jet from reader //new | |
137 | TString fBkgJetBranchName ;//! name of background jet branch not set in reader part //new | |
138 | ||
139 | Double_t fGammaConeSize ; //! Isolation cone radius | |
140 | Bool_t fUseBackgroundSubtractionGamma;//! flag to use backgrouind subtraction for photons or not | |
141 | Bool_t fSaveGJTree;//! flag to save gamma-jet tree | |
142 | Bool_t fMostEnergetic;//! flag to choose gamma-jet pairs most energetic | |
143 | Bool_t fMostOpposite;//! flag to choose gamma-jet pairs most opposite | |
144 | ||
145 | Bool_t fUseHistogramJetBkg;//! flag to save bkg jet histograms | |
146 | Bool_t fUseHistogramTracks;//! flag to save CTS tracks features | |
147 | Bool_t fUseHistogramJetTracks;//! flag to save jet tracks features | |
148 | ||
149 | TRandom2 * fGenerator;//! pointer to random generator object | |
150 | ||
c5693f62 | 151 | // Histograms |
290c1e1b | 152 | TH2F * fhDeltaEta; //! Difference of jet eta and trigger particle eta as function of trigger particle pT |
153 | //TH2F * fhDeltaPhi; //! Difference of jet phi and trigger particle phi as function of trigger particle pT | |
154 | TH2F * fhDeltaPhiCorrect; //! Difference of jet phi and trigger particle phi as function of trigger particle pT | |
155 | TH2F * fhDeltaPhi0PiCorrect; //! Difference of jet phi and trigger particle phi as function of trigger particle pT | |
156 | ||
c5693f62 | 157 | TH2F * fhDeltaPt; //! Difference of jet pT and trigger particle pT as function of trigger particle pT |
158 | TH2F * fhPtRatio; //! Ratio of jet pT and trigger particle pT as function of trigger particle pT | |
159 | TH2F * fhPt; //! jet pT vs trigger particle pT | |
477d6cee | 160 | |
290c1e1b | 161 | TH2F * fhFFz ; //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet/pttrig |
162 | TH2F * fhFFxi; //! Accepted reconstructed jet fragmentation function, xsi = ln(pttrig/pt^particle,jet) | |
c5693f62 | 163 | TH2F * fhFFpt; //! Jet particle pt distribution in cone |
164 | TH2F * fhNTracksInCone; //! jet multiplicity in cone | |
477d6cee | 165 | |
290c1e1b | 166 | TH2F * fhJetFFz ; //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet/ptjet |
167 | TH2F * fhJetFFxi; //! Accepted reconstructed jet fragmentation function, xsi = ln(ptjet/pt^particle,jet) | |
168 | TH2F * fhJetFFpt; //! Jet particle pt distribution in jet cone | |
169 | TH2F * fhJetFFzCor ; //! Accepted reconstructed jet fragmentation function, z=pt^particle,jet*-cos(jet,trig)/ptjet | |
170 | TH2F * fhJetFFxiCor; //! Accepted reconstructed jet fragmentation function, xsi = ln(ptjet/pt^particle*-cos(jet,trig),jet) | |
171 | ||
172 | //background from RC | |
173 | TH2F * fhBkgFFz[5] ; //! Background fragmentation function, z=ptjet/pttrig | |
174 | TH2F * fhBkgFFxi[5]; //! Background fragmentation function, xsi = ln(pttrig/ptjet) | |
175 | TH2F * fhBkgFFpt[5]; //! Background particle pt distribution in cone | |
176 | TH2F * fhBkgNTracksInCone[5]; //! Background multiplicity in cone | |
177 | TH2F * fhBkgSumPtInCone[5]; //! Background sum pt in cone | |
178 | TH2F * fhBkgSumPtnTracksInCone[5];//! Background sum pt over ntracks in cone | |
179 | ||
180 | //temporary histograms | |
181 | TH2F * fhNjetsNgammas; //! Number of jets vs number of photons in the event | |
182 | TH1F * fhCuts; //! Number of events after cuts | |
183 | ||
184 | TH2F * fhDeltaEtaBefore; //! Difference of jet eta and trigger particle eta as function of trigger particle pT | |
185 | TH2F * fhDeltaPhiBefore; //! Difference of jet phi and trigger particle phi as function of trigger particle pT | |
186 | TH2F * fhDeltaPtBefore; //! Difference of jet pT and trigger particle pT as function of trigger particle pT | |
187 | TH2F * fhPtRatioBefore; //! Ratio of jet pT and trigger particle pT as function of trigger particle pT | |
188 | TH2F * fhPtBefore; //! jet pT vs trigger particle pT | |
189 | TH2F * fhDeltaPhi0PiCorrectBefore; //! Difference of jet phi and trigger particle phi (0,pi) as function of trigger particle pT | |
190 | ||
191 | //temporary jet histograms | |
192 | TH1F * fhJetPtBefore; //! Pt of all jets | |
193 | TH1F * fhJetPt; //! Pt of all jets after bkg correction | |
194 | TH1F * fhJetPtMostEne; //! Pt of the most energetic jet | |
195 | TH1F * fhJetPhi; //! Phi of all jets | |
196 | TH1F * fhJetEta; //! Eta of all jets | |
197 | TH2F * fhJetEtaVsPt; //! Eta of all jets vs pt | |
198 | TH2F * fhJetPhiVsEta; //! Phi vs eta of all jets | |
199 | TH2F * fhJetEtaVsNpartInJet; //! Eta vs number of particles in jet for all jets | |
200 | TH2F * fhJetEtaVsNpartInJetBkg; //! Eta vs number of particles in jet for background subtracted jets | |
201 | TH2F * fhJetChBkgEnergyVsPt; //! background energy of each charged jet vs jet pt | |
202 | TH2F * fhJetChAreaVsPt; //! area of each charged jet vs jet pt | |
203 | TH2F * fhTrackPhiVsEta; //! Phi vs eta of all chosen tracks in all events | |
204 | TH1F * fhTrackAveTrackPt; //! average track pt in event | |
205 | TH1F * fhJetNjetOverPtCut[10]; //! number of reconstructed jets in event over pT threshold | |
206 | TH2F * fhJetChBkgEnergyVsArea; //! area of each charged jet vs jet background | |
207 | TH2F * fhJetRhoVsPt; //! jet energy density vs jet pt | |
208 | TH2F * fhJetRhoVsCentrality; //! jet energy density vs centrality | |
209 | TH1F * fhJetNparticlesInJet; //! number of particles in jets | |
210 | TH2F * fhJetDeltaEtaDeltaPhi; //! delta eta vs delta phi for (jet-track) <-0.8,0.8> | |
211 | TH2F * fhJetDeltaEtaDeltaPhiAllTracks;//! delta eta vs delta phi for (jet-track) <-pi,pi> | |
212 | ||
213 | ||
214 | ||
215 | TH1F * fhJetAveTrackPt; //! average track from jets pt in event | |
216 | TH2F * fhJetNtracksInJetAboveThr[6]; //! number of tracks in jet with pt above 0,1,2,3,4,5GeV | |
217 | TH2F * fhJetRatioNTrkAboveToNTrk[5]; //! ratio tracks in jet with pt above 1,2,3,4,5GeV to ntracks | |
218 | TH2F * fhJetNtrackRatioMostEne[5]; //! the same for most energetic jet | |
219 | TH2F * fhJetNtrackRatioJet5GeV[5]; //! the same for pt jet above 5 GeV | |
220 | TH2F * fhJetNtrackRatioLead5GeV[5]; //! the same for jet with leading particle pt>5GeV | |
221 | ||
222 | //temporary background jet histograms | |
223 | TH1F * fhBkgJetBackground[4]; //! background from jet bkg branch | |
224 | TH1F * fhBkgJetSigma[4]; //! sigma of jet in backgroud branch | |
225 | TH1F * fhBkgJetArea[4]; //! area of jet in bkg branch | |
226 | ||
227 | //temporary photon histograms | |
228 | TH1F * fhPhotonPtMostEne; //! most pt photon | |
229 | TH1F * fhPhotonAverageEnergy; //! average energy of photon | |
230 | TH1F * fhPhotonRatioAveEneToMostEne; //! ratio average energy to most energetic photon | |
231 | TH1F * fhPhotonAverageEnergyMinus1; //! average energy of photon w/o most ene photon | |
232 | TH1F * fhPhotonRatioAveEneMinus1ToMostEne; //! ratio average energy of photon w/o most ene photon to most energetic photon | |
233 | TH1F * fhPhotonNgammaMoreAverageToNgamma; //! number of gammas with ene. more than average ene divided by no. of gammas | |
234 | TH1F * fhPhotonNgammaMoreAverageMinus1ToNgamma; //! number of gammas with ene. more than average ene (w/o most ene gamma) divided by no. of gammas | |
235 | TH1F * fhPhotonNgammaOverPtCut[10]; //! number of photons in event over pT threshold | |
236 | TH2F * fhPhotonBkgRhoVsNtracks; //! average energy in one cell vs n tracks | |
237 | TH2F * fhPhotonBkgRhoVsNclusters; //! average energy in one cell vs n clusters | |
238 | TH2F * fhPhotonBkgRhoVsCentrality; //! average energy in one cell vs centrality | |
239 | TH2F * fhPhotonBkgRhoVsNcells; //! average energy in one cell vs n cells | |
240 | TH1F * fhPhotonPt; //! pt of gamma before bkg correction | |
241 | TH1F * fhPhotonPtCorrected; //! pt of gamma after background correction | |
242 | TH1F * fhPhotonPtCorrectedZoom; //! pt of gamma after background correction in +-5 GeV/c | |
243 | TH1F * fhPhotonPtDiff; //! bkg correction = n_cells * median_rho | |
244 | TH2F * fhPhotonPtDiffVsCentrality; //! correction vs centrality | |
245 | TH2F * fhPhotonPtDiffVsNcells; //! correction vs Ncells | |
246 | TH2F * fhPhotonPtDiffVsNtracks; //! correction vs Ntracks | |
247 | TH2F * fhPhotonPtDiffVsNclusters; //! correction vs Nclustres | |
248 | ||
249 | TH1F * fhPhotonSumPtInCone; //! sum pt in cone before correction | |
250 | TH1F * fhPhotonSumPtCorrectInCone; //! sum pt in cone afrer correction | |
251 | TH1F * fhPhotonSumPtChargedInCone; //! sum pt of charged tracks in the cone before correction | |
252 | ||
253 | ||
254 | //temporary jet histograms after selection | |
255 | TH2F * fhSelectedJetPhiVsEta; //! phi vs eta of selected jet | |
256 | TH2F * fhSelectedJetChBkgEnergyVsPtJet; //! background energy of selected charged jet vs jet pt | |
257 | TH2F * fhSelectedJetChAreaVsPtJet; //! area of selected charged jet vs jet pt | |
258 | TH1F * fhSelectedJetNjet; //! number of jets in selected event | |
259 | TH1F * fhSelectedNtracks; //! number of tracks in selected event | |
260 | TH2F * fhSelectedTrackPhiVsEta; //! Phi vs eta of all chosen tracks in selected events | |
261 | ||
262 | TH1F * fhCuts2; //! efficienct cuts | |
263 | ||
264 | //temporary photon histogram after selection | |
265 | TH2F * fhSelectedPhotonNLMVsPt; //! nlm vs pt for selected photons | |
266 | TH2F * fhSelectedPhotonLambda0VsPt; //! lambda0 vs pt for selected photons | |
267 | TH2F * fhRandomPhiEta[5]; //! eta and phi from random generator | |
268 | ||
269 | //tree with data gamma and jet | |
270 | TTree * fTreeGJ; //! gamma-jet tree | |
271 | Double_t fGamPt; //! pt | |
272 | Double_t fGamLambda0; //! lambda 0 | |
273 | Int_t fGamNLM; //! NLM | |
274 | Double_t fGamSumPtCh; //! energy in isolation cone charged | |
275 | Double_t fGamTime; //! time | |
276 | Int_t fGamNcells; //! ncells | |
277 | Double_t fGamEta; //! eta photon | |
278 | Double_t fGamPhi; //! phi photon | |
279 | Double_t fGamSumPtNeu; //! energy in isolation cone neutral | |
280 | Int_t fGamNtracks; //! number of tracks in iso cone | |
281 | Int_t fGamNclusters; //! number of clusters in iso cone | |
282 | Double_t fGamAvEne; //! average energy of photons (without most ene) | |
283 | Double_t fJetPhi; //! jet phi | |
284 | Double_t fJetEta; //! eta phi | |
285 | Double_t fJetPt; //! jet pt | |
286 | Double_t fJetBkgChEne; //! bkg energy of jet | |
287 | Double_t fJetArea; //! jet area | |
288 | Int_t fJetNtracks; //! number of jet tracks | |
289 | Int_t fJetNtracks1; //! number of jet tracks with pt>1 GeV/c | |
290 | Int_t fJetNtracks2; //! number of jet tracks with pt>2 GeV/c | |
291 | Double_t fJetRho; //! jet rho in event | |
292 | Int_t fEventNumber; //! event number | |
293 | Int_t fNtracks; //! n tracks in event | |
294 | Double_t fZvertex; //! z vertex | |
295 | Double_t fCentrality; //! centrality | |
296 | Bool_t fIso; //! flag isolated or not | |
297 | Double_t fGamRho; //! background energy for photons per cell in EMCal | |
298 | ||
745913ae | 299 | AliAnaParticleJetFinderCorrelation( const AliAnaParticleJetFinderCorrelation & g) ; // cpy ctor |
c5693f62 | 300 | AliAnaParticleJetFinderCorrelation & operator = (const AliAnaParticleJetFinderCorrelation & g) ; // cpy assignment |
477d6cee | 301 | |
290c1e1b | 302 | ClassDef(AliAnaParticleJetFinderCorrelation,3) |
c5693f62 | 303 | |
1c5acb87 | 304 | } ; |
305 | ||
1c5acb87 | 306 | #endif //ALIANAPARTICLEJETFINDERCORRELATION_H |
307 | ||
308 | ||
309 |