]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/UserTasks/AliAnalysisTaskEmcalJetMassBkg.cxx
From Ruediger
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / UserTasks / AliAnalysisTaskEmcalJetMassBkg.cxx
CommitLineData
8612dfc8 1//
2// Jet mass background analysis task.
3//
4// Author: M.Verweij
5
6#include <TClonesArray.h>
7#include <TH1F.h>
8#include <TH2F.h>
9#include <TH3F.h>
10#include <THnSparse.h>
11#include <TList.h>
12#include <TLorentzVector.h>
13#include <TProfile.h>
14#include <TChain.h>
15#include <TSystem.h>
16#include <TFile.h>
17#include <TKey.h>
18#include <TRandom3.h>
19
20#include "AliVCluster.h"
21#include "AliVTrack.h"
22#include "AliEmcalJet.h"
23#include "AliRhoParameter.h"
24#include "AliLog.h"
25#include "AliEmcalParticle.h"
26#include "AliMCEvent.h"
27#include "AliGenPythiaEventHeader.h"
28#include "AliAODMCHeader.h"
29#include "AliMCEvent.h"
30#include "AliAnalysisManager.h"
31#include "AliJetContainer.h"
32#include "AliClusterContainer.h"
33#include "AliParticleContainer.h"
34
35#include "AliAnalysisTaskEmcalJetMassBkg.h"
36
37ClassImp(AliAnalysisTaskEmcalJetMassBkg)
38
39//________________________________________________________________________
40AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg() :
41 AliAnalysisTaskEmcalJet("AliAnalysisTaskEmcalJetMassBkg", kTRUE),
42 fContainerBase(0),
43 fMinRC2LJ(-1),
44 fRCperEvent(10),
45 fConeRadius(0.2),
46 fConeMinEta(-0.9),
47 fConeMaxEta(0.9),
48 fConeMinPhi(0),
49 fConeMaxPhi(TMath::Pi()*2),
50 fJetsCont(0),
51 fTracksCont(0),
52 fCaloClustersCont(0),
53 fh2PtVsMassRC(0),
54 fpPtVsMassRC(0),
55 fh2PtVsMassRCExLJDPhi(0),
56 fpPtVsMassRCExLJ(0),
57 fh2PtVsMassPerpConeLJ(0),
58 fpPtVsMassPerpConeLJ(0),
59 fh2PtVsMassPerpConeTJ(0),
60 fpPtVsMassPerpConeTJ(0),
61 fh2CentVsMassRC(0),
62 fh2CentVsMassRCExLJ(0),
63 fh2CentVsMassPerpConeLJ(0),
64 fh2CentVsMassPerpConeTJ(0),
65 fh2MultVsMassRC(0),
66 fh2MultVsMassRCExLJ(0),
67 fh2MultVsMassPerpConeLJ(0),
68 fh2MultVsMassPerpConeTJ(0)
69{
70 // Default constructor.
71
72 fh2PtVsMassRC = new TH2F*[fNcentBins];
73 fpPtVsMassRC = new TProfile*[fNcentBins];
74 fh2PtVsMassRCExLJDPhi = new TH3F*[fNcentBins];
75 fpPtVsMassRCExLJ = new TProfile*[fNcentBins];
76 fh2PtVsMassPerpConeLJ = new TH2F*[fNcentBins];
77 fpPtVsMassPerpConeLJ = new TProfile*[fNcentBins];
78 fh2PtVsMassPerpConeTJ = new TH2F*[fNcentBins];
79 fpPtVsMassPerpConeTJ = new TProfile*[fNcentBins];
80
81 for (Int_t i = 0; i < fNcentBins; i++) {
82 fh2PtVsMassRC[i] = 0;
83 fpPtVsMassRC[i] = 0;
84 fh2PtVsMassRCExLJDPhi[i] = 0;
85 fpPtVsMassRCExLJ[i] = 0;
86 fh2PtVsMassPerpConeLJ[i] = 0;
87 fpPtVsMassPerpConeLJ[i] = 0;
88 fh2PtVsMassPerpConeTJ[i] = 0;
89 fpPtVsMassPerpConeTJ[i] = 0;
90 }
91
92 SetMakeGeneralHistograms(kTRUE);
93
94}
95
96//________________________________________________________________________
97AliAnalysisTaskEmcalJetMassBkg::AliAnalysisTaskEmcalJetMassBkg(const char *name) :
98 AliAnalysisTaskEmcalJet(name, kTRUE),
99 fContainerBase(0),
100 fMinRC2LJ(-1),
101 fRCperEvent(10),
102 fConeRadius(0.2),
103 fConeMinEta(-0.9),
104 fConeMaxEta(0.9),
105 fConeMinPhi(0),
106 fConeMaxPhi(TMath::Pi()*2),
107 fJetsCont(0),
108 fTracksCont(0),
109 fCaloClustersCont(0),
110 fh2PtVsMassRC(0),
111 fpPtVsMassRC(0),
112 fh2PtVsMassRCExLJDPhi(0),
113 fpPtVsMassRCExLJ(0),
114 fh2PtVsMassPerpConeLJ(0),
115 fpPtVsMassPerpConeLJ(0),
116 fh2PtVsMassPerpConeTJ(0),
117 fpPtVsMassPerpConeTJ(0),
118 fh2CentVsMassRC(0),
119 fh2CentVsMassRCExLJ(0),
120 fh2CentVsMassPerpConeLJ(0),
121 fh2CentVsMassPerpConeTJ(0),
122 fh2MultVsMassRC(0),
123 fh2MultVsMassRCExLJ(0),
124 fh2MultVsMassPerpConeLJ(0),
125 fh2MultVsMassPerpConeTJ(0)
126{
127 // Standard constructor.
128
129 fh2PtVsMassRC = new TH2F*[fNcentBins];
130 fpPtVsMassRC = new TProfile*[fNcentBins];
131 fh2PtVsMassRCExLJDPhi = new TH3F*[fNcentBins];
132 fpPtVsMassRCExLJ = new TProfile*[fNcentBins];
133 fh2PtVsMassPerpConeLJ = new TH2F*[fNcentBins];
134 fpPtVsMassPerpConeLJ = new TProfile*[fNcentBins];
135 fh2PtVsMassPerpConeTJ = new TH2F*[fNcentBins];
136 fpPtVsMassPerpConeTJ = new TProfile*[fNcentBins];
137
138 for (Int_t i = 0; i < fNcentBins; i++) {
139 fh2PtVsMassRC[i] = 0;
140 fpPtVsMassRC[i] = 0;
141 fh2PtVsMassRCExLJDPhi[i] = 0;
142 fpPtVsMassRCExLJ[i] = 0;
143 fh2PtVsMassPerpConeLJ[i] = 0;
144 fpPtVsMassPerpConeLJ[i] = 0;
145 fh2PtVsMassPerpConeTJ[i] = 0;
146 fpPtVsMassPerpConeTJ[i] = 0;
147 }
148
149 SetMakeGeneralHistograms(kTRUE);
150}
151
152//________________________________________________________________________
153AliAnalysisTaskEmcalJetMassBkg::~AliAnalysisTaskEmcalJetMassBkg()
154{
155 // Destructor.
156}
157
158//________________________________________________________________________
159void AliAnalysisTaskEmcalJetMassBkg::UserCreateOutputObjects()
160{
161 // Create user output.
162
163 AliAnalysisTaskEmcalJet::UserCreateOutputObjects();
164
165 fJetsCont = GetJetContainer(fContainerBase);
166 fTracksCont = fJetsCont->GetParticleContainer();
167 fCaloClustersCont = fJetsCont->GetClusterContainer();
168
169 Bool_t oldStatus = TH1::AddDirectoryStatus();
170 TH1::AddDirectory(kFALSE);
171
172 const Int_t nBinsPt = 250;
173 const Double_t minPt = -50.;
174 const Double_t maxPt = 200.;
175
176 const Int_t nBinsCent = 100;
177 const Double_t minCent = 0.;
178 const Double_t maxCent = 100.;
179
180 const Int_t nBinsMult = 400;
181 const Double_t minMult = 0.;
182 const Double_t maxMult = 4000.;
183
184 fh2CentVsMassRC = new TH2F("fh2CentVsMassRC","fh2CentVsMassRC;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
185 fOutput->Add(fh2CentVsMassRC);
186
187 fh2CentVsMassRCExLJ = new TH2F("fh2CentVsMassRCExLJ","fh2CentVsMassRCExLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
188 fOutput->Add(fh2CentVsMassRCExLJ);
189
190 fh2CentVsMassPerpConeLJ = new TH2F("fh2CentVsMassPerpConeLJ","fh2CentVsMassPerpConeLJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
191 fOutput->Add(fh2CentVsMassPerpConeLJ);
192
193 fh2CentVsMassPerpConeTJ = new TH2F("fh2CentVsMassPerpConeTJ","fh2CentVsMassPerpConeTJ;cent;#it{M}_{RC}",nBinsCent,minCent,maxCent,nBinsPt,minPt,maxPt);
194 fOutput->Add(fh2CentVsMassPerpConeTJ);
195
196 fh2MultVsMassRC = new TH2F("fh2MultVsMassRC","fh2MultVsMassRC;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
197 fOutput->Add(fh2MultVsMassRC);
198
199 fh2MultVsMassRCExLJ = new TH2F("fh2MultVsMassRCExLJ","fh2MultVsMassRCExLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
200 fOutput->Add(fh2MultVsMassRCExLJ);
201
202 fh2MultVsMassPerpConeLJ = new TH2F("fh2MultVsMassPerpConeLJ","fh2MultVsMassPerpConeLJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
203 fOutput->Add(fh2MultVsMassPerpConeLJ);
204
205 fh2MultVsMassPerpConeTJ = new TH2F("fh2MultVsMassPerpConeTJ","fh2MultVsMassPerpConeTJ;#it{N}_{track};#it{M}_{RC}",nBinsMult,minMult,maxMult,nBinsPt,minPt,maxPt);
206 fOutput->Add(fh2MultVsMassPerpConeTJ);
207
208 TString histName = "";
209 TString histTitle = "";
210 for (Int_t i = 0; i < fNcentBins; i++) {
211 histName = TString::Format("fh2PtVsMassRC_%d",i);
212 histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
213 fh2PtVsMassRC[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
214 fOutput->Add(fh2PtVsMassRC[i]);
215
216 histName = TString::Format("fpPtVsMassRC_%d",i);
217 histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
218 fpPtVsMassRC[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
219 fOutput->Add(fpPtVsMassRC[i]);
220
221 histName = TString::Format("fh2PtVsMassRCExLJDPhi_%d",i);
222 histTitle = TString::Format("%s;#it{p}_{T,RC};#it{M}_{RC}",histName.Data());
223 fh2PtVsMassRCExLJDPhi[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt,72,-0.5*TMath::Pi(),1.5*TMath::Pi());
224 fOutput->Add(fh2PtVsMassRCExLJDPhi[i]);
225
226 histName = TString::Format("fpPtVsMassRCExLJ_%d",i);
227 histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
228 fpPtVsMassRCExLJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
229 fOutput->Add(fpPtVsMassRCExLJ[i]);
230
231 histName = TString::Format("fh2PtVsMassPerpConeLJ_%d",i);
232 histTitle = TString::Format("%s;#it{p}_{T,PerpConeLJ};#it{M}_{PerpConeLJ}",histName.Data());
233 fh2PtVsMassPerpConeLJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
234 fOutput->Add(fh2PtVsMassPerpConeLJ[i]);
235
236 histName = TString::Format("fpPtVsMassPerpConeLJ_%d",i);
237 histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
238 fpPtVsMassPerpConeLJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
239 fOutput->Add(fpPtVsMassPerpConeLJ[i]);
240
241 histName = TString::Format("fh2PtVsMassPerpConeTJ_%d",i);
242 histTitle = TString::Format("%s;#it{p}_{T,PerpConeTJ};#it{M}_{PerpConeTJ}",histName.Data());
243 fh2PtVsMassPerpConeTJ[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
244 fOutput->Add(fh2PtVsMassPerpConeTJ[i]);
245
246 histName = TString::Format("fpPtVsMassPerpConeTJ_%d",i);
247 histTitle = TString::Format("%s;#it{p}_{T,RC};Avg #it{M}_{RC}",histName.Data());
248 fpPtVsMassPerpConeTJ[i] = new TProfile(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt);
249 fOutput->Add(fpPtVsMassPerpConeTJ[i]);
250 }
251
252 // =========== Switch on Sumw2 for all histos ===========
253 for (Int_t i=0; i<fOutput->GetEntries(); ++i) {
254 TH1 *h1 = dynamic_cast<TH1*>(fOutput->At(i));
255 if (h1){
256 h1->Sumw2();
257 continue;
258 }
259 THnSparse *hn = dynamic_cast<THnSparse*>(fOutput->At(i));
260 if(hn)hn->Sumw2();
261 }
262
263 TH1::AddDirectory(oldStatus);
264
265 PostData(1, fOutput); // Post data for ALL output slots > 0 here.
266}
267
268//________________________________________________________________________
269Bool_t AliAnalysisTaskEmcalJetMassBkg::Run()
270{
271 // Run analysis code here, if needed. It will be executed before FillHistograms().
272
273 return kTRUE;
274}
275
276//________________________________________________________________________
277Bool_t AliAnalysisTaskEmcalJetMassBkg::FillHistograms()
278{
279 // Fill histograms.
280
281 const Float_t rcArea = fConeRadius * fConeRadius * TMath::Pi();
282 Double_t rho = GetRhoVal(fContainerBase);
283 Int_t trackMult = fTracksCont->GetNAcceptedParticles();
284
285 TLorentzVector lvRC(0.,0.,0.,0.);
286 Float_t RCpt = 0;
287 Float_t RCeta = 0;
288 Float_t RCphi = 0;
289 Float_t RCmass = 0.;
290 for (Int_t i = 0; i < fRCperEvent; i++) {
291 // Simple random cones
292 lvRC.SetPxPyPzE(0.,0.,0.,0.);
293 RCpt = 0;
294 RCeta = 0;
295 RCphi = 0;
296 GetRandomCone(lvRC,RCpt, RCeta, RCphi, fTracksCont, fCaloClustersCont, 0);
297 RCmass = lvRC.M();
298 if (RCpt > 0) {
299 fh2PtVsMassRC[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
300 fpPtVsMassRC[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
301 fh2CentVsMassRC->Fill(fCent,RCmass);
302 fh2MultVsMassRC->Fill(trackMult,RCmass);
303 }
304
305 if (fJetsCont) {
306
307 // Random cones far from leading jet(s)
308 AliEmcalJet* jet = fJetsCont->GetLeadingJet("rho");
309 lvRC.SetPxPyPzE(0.,0.,0.,0.);
310 RCpt = 0;
311 RCeta = 0;
312 RCphi = 0;
313 GetRandomCone(lvRC,RCpt, RCeta, RCphi, fTracksCont, fCaloClustersCont, jet);
314 RCmass = lvRC.M();
315 if (RCpt > 0 && jet) {
316 Float_t dphi = RCphi - jet->Phi();
317 if (dphi > 1.5*TMath::Pi()) dphi -= TMath::Pi() * 2;
318 if (dphi < -0.5*TMath::Pi()) dphi += TMath::Pi() * 2;
319 fh2PtVsMassRCExLJDPhi[fCentBin]->Fill(RCpt - rho*rcArea,RCmass,dphi);
320 fpPtVsMassRCExLJ[fCentBin]->Fill(RCpt - rho*rcArea,RCmass);
321 fh2CentVsMassRCExLJ->Fill(fCent,RCmass);
322 fh2MultVsMassRCExLJ->Fill(trackMult,RCmass);
323 }
324 }
325 }//RC loop
326
327 if(fJetsCont) {
328 //cone perpendicular to leading jet
329 TLorentzVector lvPC(0.,0.,0.,0.);
330 Float_t PCpt = 0;
331 Float_t PCeta = 0;
332 Float_t PCphi = 0;
333 Float_t PCmass = 0.;
334 AliEmcalJet* jet = fJetsCont->GetLeadingJet("rho");
335 if(jet) {
336 GetPerpCone(lvPC,PCpt, PCeta, PCphi, fTracksCont, fCaloClustersCont, jet);
337 PCmass = lvPC.M();
338 if(PCpt>0.) {
339 fh2PtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
340 fpPtVsMassPerpConeLJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
341 fh2CentVsMassPerpConeLJ->Fill(fCent,PCmass);
342 fh2MultVsMassPerpConeLJ->Fill(trackMult,PCmass);
343 }
344 }
345 //cone perpendicular to all tagged jets
346 for(int i = 0; i < fJetsCont->GetNJets();++i) {
347 jet = static_cast<AliEmcalJet*>(fJetsCont->GetAcceptJet(i));
348 if(!jet) continue;
349
350 if(jet->GetTagStatus()<1)
351 continue;
352
353 lvPC.SetPxPyPzE(0.,0.,0.,0.);
354 PCpt = 0;
355 PCeta = 0;
356 PCphi = 0;
357 GetPerpCone(lvPC,PCpt, PCeta, PCphi, fTracksCont, fCaloClustersCont, jet);
358 PCmass = lvPC.M();
359 if(PCpt>0.) {
360 fh2PtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
361 fpPtVsMassPerpConeTJ[fCentBin]->Fill(PCpt-rho*rcArea,PCmass);
362 fh2CentVsMassPerpConeTJ->Fill(fCent,PCmass);
363 fh2MultVsMassPerpConeTJ->Fill(trackMult,PCmass);
364 }
365 }//jet loop
366 }
367
368 return kTRUE;
369
370}
371
372//________________________________________________________________________
373void AliAnalysisTaskEmcalJetMassBkg::GetRandomCone(TLorentzVector& lvRC,Float_t &pt, Float_t &eta, Float_t &phi,
374 AliParticleContainer* tracks, AliClusterContainer* clusters,
375 AliEmcalJet *jet) const
376{
377 // Get rigid cone.
378 lvRC.SetPxPyPzE(0.,0.,0.,0.);
379
380 eta = -999;
381 phi = -999;
382 pt = 0;
383
384 if (!tracks && !clusters)
385 return;
386
387 Float_t LJeta = 999;
388 Float_t LJphi = 999;
389
390 if (jet) {
391 LJeta = jet->Eta();
392 LJphi = jet->Phi();
393 }
394
395 Float_t maxEta = fConeMaxEta;
396 Float_t minEta = fConeMinEta;
397 Float_t maxPhi = fConeMaxPhi;
398 Float_t minPhi = fConeMinPhi;
399
400 if (maxPhi > TMath::Pi() * 2) maxPhi = TMath::Pi() * 2;
401 if (minPhi < 0) minPhi = 0;
402
403 Float_t dLJ = 0;
404 Int_t repeats = 0;
405 Bool_t reject = kTRUE;
406 do {
407 eta = gRandom->Rndm() * (maxEta - minEta) + minEta;
408 phi = gRandom->Rndm() * (maxPhi - minPhi) + minPhi;
409 dLJ = TMath::Sqrt((LJeta - eta) * (LJeta - eta) + (LJphi - phi) * (LJphi - phi));
410
411 repeats++;
412 } while (dLJ < fMinRC2LJ && repeats < 999 && reject);
413
414 if (repeats == 999) {
415 AliWarning(Form("%s: Could not get random cone!", GetName()));
416 return;
417 }
418
419 GetCone(lvRC,pt,eta,phi,tracks,clusters);
420
421
422}
423
424//________________________________________________________________________
425void AliAnalysisTaskEmcalJetMassBkg::GetCone(TLorentzVector& lvRC,Float_t &pt, Float_t eta, Float_t phi, AliParticleContainer* tracks, AliClusterContainer* clusters) const
426{
427
428 pt = 0.;
429 lvRC.SetPxPyPzE(0.,0.,0.,0.);
430
431 if (clusters) {
432 AliVCluster* cluster = clusters->GetNextAcceptCluster(0);
433 while (cluster) {
434 TLorentzVector nPart;
435 cluster->GetMomentum(nPart, const_cast<Double_t*>(fVertex));
436
437 Float_t cluseta = nPart.Eta();
438 Float_t clusphi = nPart.Phi();
439
440 if (TMath::Abs(clusphi - phi) > TMath::Abs(clusphi - phi + 2 * TMath::Pi()))
441 clusphi += 2 * TMath::Pi();
442 if (TMath::Abs(clusphi - phi) > TMath::Abs(clusphi - phi - 2 * TMath::Pi()))
443 clusphi -= 2 * TMath::Pi();
444
445 Float_t d = TMath::Sqrt((cluseta - eta) * (cluseta - eta) + (clusphi - phi) * (clusphi - phi));
446 if (d <= fConeRadius) {
447 pt += nPart.Pt();
448 TLorentzVector lvcl(nPart.Px(),nPart.Py(),nPart.Pz(),nPart.E());
449 lvRC += lvcl;
450 }
451
452 cluster = clusters->GetNextAcceptCluster();
453 }
454 }
455
456 if (tracks) {
457 AliVParticle* track = tracks->GetNextAcceptParticle(0);
458 while(track) {
459 Float_t tracketa = track->Eta();
460 Float_t trackphi = track->Phi();
461
462 if (TMath::Abs(trackphi - phi) > TMath::Abs(trackphi - phi + 2 * TMath::Pi()))
463 trackphi += 2 * TMath::Pi();
464 if (TMath::Abs(trackphi - phi) > TMath::Abs(trackphi - phi - 2 * TMath::Pi()))
465 trackphi -= 2 * TMath::Pi();
466
467 Float_t d = TMath::Sqrt((tracketa - eta) * (tracketa - eta) + (trackphi - phi) * (trackphi - phi));
468 if (d <= fConeRadius) {
469 pt += track->Pt();
470 TLorentzVector lvtr(track->Px(),track->Py(),track->Pz(),track->E());
471 lvRC += lvtr;
472 }
473
474 track = tracks->GetNextAcceptParticle();
475 }
476 }
477
478}
479
480//________________________________________________________________________
481void AliAnalysisTaskEmcalJetMassBkg::GetPerpCone(TLorentzVector& lvRC,Float_t &pt, Float_t &eta, Float_t &phi, AliParticleContainer* tracks, AliClusterContainer* clusters, AliEmcalJet *jet) const
482{
483 // Get rigid cone.
484 lvRC.SetPxPyPzE(0.,0.,0.,0.);
485
486 eta = -999;
487 phi = -999;
488 pt = 0;
489
490 if (!tracks && !clusters)
491 return;
492
493 if(!jet)
494 return;
495
496 Float_t LJeta = jet->Eta();
497 Float_t LJphi = jet->Phi();
498
499 eta = LJeta;
500 phi = LJphi + 0.5*TMath::Pi();
501 if(phi>TMath::TwoPi()) phi-=TMath::TwoPi();
502
503 GetCone(lvRC,pt,eta,phi,tracks,clusters);
504}
505
506//________________________________________________________________________
507void AliAnalysisTaskEmcalJetMassBkg::SetConeEtaPhiEMCAL()
508{
509 // Set default cuts for full cones
510
511 SetConeEtaLimits(-0.7+fConeRadius,0.7-fConeRadius);
512 SetConePhiLimits(1.405+fConeRadius,3.135-fConeRadius);
513}
514
515//________________________________________________________________________
516void AliAnalysisTaskEmcalJetMassBkg::SetConeEtaPhiTPC()
517{
518 // Set default cuts for charged cones
519
520 SetConeEtaLimits(-0.9+fConeRadius, 0.9-fConeRadius);
521 SetConePhiLimits(-10, 10);
522}
523
524//________________________________________________________________________
525void AliAnalysisTaskEmcalJetMassBkg::ExecOnce() {
526
527 AliAnalysisTaskEmcalJet::ExecOnce();
528
529 if (fTracksCont && fTracksCont->GetArray() == 0) fTracksCont = 0;
530 if (fCaloClustersCont && fCaloClustersCont->GetArray() == 0) fCaloClustersCont = 0;
531
532 if (fRCperEvent < 0) {
533 Double_t area = (fConeMaxEta - fConeMinEta) * (fConeMaxPhi - fConeMinPhi);
534 Double_t rcArea = TMath::Pi() * fConeRadius * fConeRadius;
535 fRCperEvent = TMath::FloorNint(area / rcArea - 0.5);
536 if (fRCperEvent == 0)
537 fRCperEvent = 1;
538 }
539
540 if (fMinRC2LJ < 0)
541 fMinRC2LJ = fConeRadius * 1.5;
542
543 const Float_t maxDist = TMath::Max(fConeMaxPhi - fConeMinPhi, fConeMaxEta - fConeMinEta) / 2;
544 if (fMinRC2LJ > maxDist) {
545 AliWarning(Form("The parameter fMinRC2LJ = %f is too large for the considered acceptance. "
546 "Will use fMinRC2LJ = %f", fMinRC2LJ, maxDist));
547 fMinRC2LJ = maxDist;
548 }
549
550}
551
552//________________________________________________________________________
553Bool_t AliAnalysisTaskEmcalJetMassBkg::RetrieveEventObjects() {
554 //
555 // retrieve event objects
556 //
557
558 if (!AliAnalysisTaskEmcalJet::RetrieveEventObjects())
559 return kFALSE;
560
561 return kTRUE;
562
563}
564
565//_______________________________________________________________________
566void AliAnalysisTaskEmcalJetMassBkg::Terminate(Option_t *)
567{
568 // Called once at the end of the analysis.
569}
570