AliPhysics  05c4c93 (05c4c93)
AliAnalysisTaskJetUEStudies.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-2017, ALICE Experiment at CERN, All rights reserved. *
3  * *
4  * Author: The ALICE Off-line Project. *
5  * Contributors are mentioned in the code where appropriate. *
6  * *
7  * Permission to use, copy, modify and distribute this software and its *
8  * documentation strictly for non-commercial purposes is hereby granted *
9  * without fee, provided that the above copyright notice appears in all *
10  * copies and that both the copyright notice and this permission notice *
11  * appear in the supporting documentation. The authors make no claims *
12  * about the suitability of this software for any purpose. It is *
13  * provided "as is" without express or implied warranty. *
14  **************************************************************************/
15 
16 #include <array>
17 #include <memory>
18 
19 #include <TRandom3.h>
20 
21 #include <AliAnalysisManager.h>
22 #include <AliVEventHandler.h>
23 
24 #include "AliEmcalJet.h"
25 #include "AliVCluster.h"
26 #include "AliVParticle.h"
27 #include "AliLog.h"
28 #include "AliJetContainer.h"
29 #include "AliClusterContainer.h"
30 #include "AliParticleContainer.h"
31 
33 
37 
41  fAlternativeRho(),
42  fHistManager(),
43  fRandom(nullptr)
44 
45 {
46 }
47 
52  AliAnalysisTaskJetUE(name, kTRUE),
54  fHistManager(name),
56 {
58 }
59 
62 {
63  AliInfo(Form("CreateOutputObjects of task %s", GetName()));
64 
66 
67  Int_t maxTracks = 6000;
68  Int_t constituentsNbins = 250;
69  Double_t constituentsMax = 249.5;
70  Double_t maxRho = 500;
71  Double_t minCorrPt = -250;
72 
73  if (fForceBeamType == kpp) {
74  constituentsNbins = 50;
75  constituentsMax = 49.5;
76  maxRho = 50;
77  maxTracks = 200;
78  minCorrPt = -50;
79  }
80  else if (fForceBeamType == kpA) {
81  constituentsNbins = 100;
82  constituentsMax = 99.5;
83  maxRho = 200;
84  maxTracks = 500;
85  minCorrPt = -100;
86  }
87 
88  // Avoid half bins
89  minCorrPt -= minCorrPt - TMath::FloorNint(minCorrPt / fPtBinWidth) * fPtBinWidth;
90 
91  Int_t nPtBins = TMath::CeilNint(fMaxPt / fPtBinWidth);
92  Int_t nCorrPtBins = TMath::CeilNint((fMaxPt - minCorrPt) / fPtBinWidth);
93 
94  TString histname;
95  TString title;
96 
97  for (auto cont_it : fJetCollArray) {
98  AliJetContainer* jets = cont_it.second;
99  if (jets->GetRhoName().IsNull()) continue;
100  fDefaultRhoNames.insert(jets->GetRhoName());
101  fAlternativeRho.insert(std::make_pair(jets->GetRhoName(), nullptr));
102  }
103 
104  for (auto rho1 : fAlternativeRho) {
105  for (auto rho2 : fAlternativeRho) {
106  if (rho1.first == rho2.first) continue;
107  histname = TString::Format("%s/fHistDelta%sOverRhoVsCent", rho1.first.Data(), rho2.first.Data());
108  title = TString::Format("%s;Centrality (%%);2#frac{%s - %s}{%s + %s};counts", histname.Data(), rho1.first.Data(), rho2.first.Data(), rho1.first.Data(), rho2.first.Data());
109  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, 500, -2.5, 2.5);
110 
111  histname = TString::Format("%s/fHistDelta%sVsRho", rho1.first.Data(), rho2.first.Data());
112  title = TString::Format("%s;#frac{%s + %s}{2} (GeV/#it{c} #times rad^{-1});%s - %s (GeV/#it{c} #times rad^{-1});counts", histname.Data(), rho1.first.Data(), rho2.first.Data(), rho1.first.Data(), rho2.first.Data());
113  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*4, minCorrPt*2, -minCorrPt*2);
114 
115  histname = TString::Format("%s/fHist%sVs%s", rho1.first.Data(), rho2.first.Data(), rho1.first.Data());
116  title = TString::Format("%s;%s (GeV/#it{c} #times rad^{-1}); %s (GeV/#it{c} #times rad^{-1});counts", histname.Data(), rho1.first.Data(), rho2.first.Data());
117  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, 500, 0, maxRho);
118  }
119  }
120 
121  for (auto cont_it : fJetCollArray) {
122  AliJetContainer* jets = cont_it.second;
123 
124  histname = TString::Format("%s/fHistLeadingJetPtVsCent", jets->GetArrayName().Data());
125  title = histname + ";Centrality (%);#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
126  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, nPtBins, 0, fMaxPt);
127 
128  histname = TString::Format("%s/fHistLeadingJetPhiVsEta", jets->GetArrayName().Data());
129  title = histname + ";#eta_{jet};#phi_{jet} (rad);counts";
130  fHistManager.CreateTH2(histname.Data(), title.Data(), 50, -1, 1, 150, 0, TMath::TwoPi());
131 
132  histname = TString::Format("%s/fHistB2BLeadingJetPtVsCent", jets->GetArrayName().Data());
133  title = histname + ";Centrality (%);#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
134  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, nPtBins, 0, fMaxPt);
135 
136  for (auto rho : fAlternativeRho) {
137  for (auto rho2 : fAlternativeRho) {
138  if (rho.first == rho2.first) continue;
139  histname = TString::Format("%s/%s/fHistB2BDelta%sOverRhoVsCent", jets->GetArrayName().Data(), rho.first.Data(), rho2.first.Data());
140  title = TString::Format("%s;Centrality (%%);2#frac{%s - %s}{%s + %s};counts", histname.Data(), rho.first.Data(), rho2.first.Data(), rho.first.Data(), rho2.first.Data());
141  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, 500, -2.5, 2.5);
142 
143  histname = TString::Format("%s/%s/fHistB2BDelta%sVsRho", jets->GetArrayName().Data(), rho.first.Data(), rho2.first.Data());
144  title = TString::Format("%s;#frac{%s + %s}{2} (GeV/#it{c} #times rad^{-1});%s - %s (GeV/#it{c} #times rad^{-1});counts", histname.Data(), rho.first.Data(), rho2.first.Data(), rho.first.Data(), rho2.first.Data());
145  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*4, minCorrPt*2, -minCorrPt*2);
146 
147  histname = TString::Format("%s/fHistB2B%sVs%s", rho.first.Data(), rho2.first.Data(), rho.first.Data());
148  title = TString::Format("%s;%s (GeV/#it{c} #times rad^{-1}); %s (GeV/#it{c} #times rad^{-1});counts", histname.Data(), rho.first.Data(), rho2.first.Data());
149  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, 500, 0, maxRho);
150  }
151 
152  histname = TString::Format("%s/%s/fHistLeadingJetCorrPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
153  title = histname + ";Centrality (%);#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
154  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, nCorrPtBins, minCorrPt, fMaxPt);
155 
156  histname = TString::Format("%s/%s/fHistB2BLeadingJetCorrPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
157  title = histname + ";Centrality (%);#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
158  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, nCorrPtBins, minCorrPt, fMaxPt);
159 
160  histname = TString::Format("%s/%s/fHistRCPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
161  title = histname + ";#eta_{RC};#phi_{RC} (rad);counts";
162  fHistManager.CreateTH2(histname.Data(), title.Data(), 50, -1, 1, 150, 0, TMath::TwoPi());
163 
164  histname = TString::Format("%s/%s/fHistRCPerpPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
165  title = histname + ";#eta_{RC};#phi_{RC} (rad);counts";
166  fHistManager.CreateTH2(histname.Data(), title.Data(), 50, -1, 1, 150, 0, TMath::TwoPi());
167 
168  histname = TString::Format("%s/%s/fHistRCExclLeadJetPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
169  title = histname + ";#eta_{RC};#phi_{RC} (rad);counts";
170  fHistManager.CreateTH2(histname.Data(), title.Data(), 50, -1, 1, 150, 0, TMath::TwoPi());
171 
172  histname = TString::Format("%s/%s/fHistRCDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
173  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
174  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
175 
176  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
177  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
178  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
179 
180  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
181  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
182  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
183 
184  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
185  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
186  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
187 
188  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
189  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
190  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
191 
192  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
193  title = histname + ";Centrality (%);#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
194  fHistManager.CreateTH2(histname.Data(), title.Data(), 100, 0, 100, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
195 
196  histname = TString::Format("%s/%s/fHistRCDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
197  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
198  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
199 
200  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
201  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
202  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
203 
204  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
205  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
206  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
207 
208  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
209  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
210  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
211 
212  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
213  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
214  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
215 
216  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
217  title = histname + ";#rho (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
218  fHistManager.CreateTH2(histname.Data(), title.Data(), 500, 0, maxRho, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
219 
220  histname = TString::Format("%s/%s/fHistRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
221  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
222  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
223 
224  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
225  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
226  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
227 
228  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
229  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
230  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
231 
232  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
233  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
234  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
235 
236  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
237  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
238  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
239 
240  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
241  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});#Delta#it{p}_{T}^{RC} = #it{p}_{T}^{RC} - #it{A}_{jet}#rho (GeV/#it{c});counts";
242  fHistManager.CreateTH2(histname.Data(), title.Data(), nPtBins, 0, fMaxPt, (nCorrPtBins - nPtBins)*2, minCorrPt, -minCorrPt);
243  }
244 
245  if (fCentBins.size() > 1) {
246  for (Int_t i = 0; i < fCentBins.size()-1; i++) {
247  histname = TString::Format("%s/fHistJetPt_Cent%d_%d", jets->GetArrayName().Data(), TMath::CeilNint(fCentBins[i]), TMath::CeilNint(fCentBins[i+1]));
248  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
249  fHistManager.CreateTH1(histname.Data(), title.Data(), nPtBins, 0, fMaxPt);
250 
251  histname = TString::Format("%s/fHistB2BJetPt_Cent%d_%d", jets->GetArrayName().Data(), TMath::CeilNint(fCentBins[i]), TMath::CeilNint(fCentBins[i+1]));
252  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
253  fHistManager.CreateTH1(histname.Data(), title.Data(), nPtBins, 0, fMaxPt);
254 
255  for (auto rho : fAlternativeRho) {
256  histname = TString::Format("%s/%s/fHistJetCorrPt_Cent%d_%d", jets->GetArrayName().Data(), rho.first.Data(), TMath::CeilNint(fCentBins[i]), TMath::CeilNint(fCentBins[i+1]));
257  title = histname + ";#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
258  fHistManager.CreateTH1(histname.Data(), title.Data(), nCorrPtBins, minCorrPt, fMaxPt);
259 
260  histname = TString::Format("%s/%s/fHistB2BJetCorrPt_Cent%d_%d", jets->GetArrayName().Data(), rho.first.Data(), TMath::CeilNint(fCentBins[i]), TMath::CeilNint(fCentBins[i+1]));
261  title = histname + ";#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
262  fHistManager.CreateTH1(histname.Data(), title.Data(), nCorrPtBins, minCorrPt, fMaxPt);
263  }
264  }
265  }
266  else {
267  histname = TString::Format("%s/fHistJetPt", jets->GetArrayName().Data());
268  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
269  fHistManager.CreateTH1(histname.Data(), title.Data(), nPtBins, 0, fMaxPt);
270 
271  histname = TString::Format("%s/fHistB2BJetPt", jets->GetArrayName().Data());
272  title = histname + ";#it{p}_{T,jet}^{lead} (GeV/#it{c});counts";
273  fHistManager.CreateTH1(histname.Data(), title.Data(), nPtBins, 0, fMaxPt);
274 
275  for (auto rho : fAlternativeRho) {
276  histname = TString::Format("%s/%s/fHistJetCorrPt", jets->GetArrayName().Data(), rho.first.Data());
277  title = histname + ";#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
278  fHistManager.CreateTH1(histname.Data(), title.Data(), nCorrPtBins, minCorrPt, fMaxPt);
279 
280  histname = TString::Format("%s/%s/fHistB2BJetCorrPt", jets->GetArrayName().Data(), rho.first.Data());
281  title = histname + ";#it{p}_{T,jet}^{lead} - #it{A}_{jet}#rho (GeV/#it{c});counts";
282  fHistManager.CreateTH1(histname.Data(), title.Data(), nCorrPtBins, minCorrPt, fMaxPt);
283  }
284  }
285  }
286 
287  TIter nextElement(fHistManager.GetListOfHistograms());
288  TObject* obj = 0;
289  while ((obj = nextElement())) fOutput->Add(obj);
290  PostData(1, fOutput);
291 }
292 
297 {
299 
300  for (auto rhoIt = fAlternativeRho.begin(); rhoIt != fAlternativeRho.end();) {
301  if (rhoIt->second) continue;
302  rhoIt->second = dynamic_cast<AliRhoParameter*>(fInputEvent->FindListObject(rhoIt->first));
303  if (rhoIt->second) {
304  rhoIt++;
305  }
306  else {
307  AliError(Form("%s: Could not retrieve rho %s! This rho name will be ignored", GetName(), rhoIt->first.Data()));
308  rhoIt = fAlternativeRho.erase(rhoIt);
309  }
310  }
311 
312  fRandom = new TRandom3(0);
313 }
314 
319 {
321 
322  return kTRUE;
323 }
324 
330 {
331  TString histname;
332 
333  if (fCentBin < 0) {
334  AliError(Form("fCentBin is %d! fCent = %.3f. Fix the centrality bins to include all possible values of centrality.", fCentBin, fCent));
335  return kFALSE;
336  }
337 
338  for (auto rho1 : fAlternativeRho) {
339  for (auto rho2 : fAlternativeRho) {
340  if (rho1 == rho2) continue;
341  histname = TString::Format("%s/fHistDelta%sOverRhoVsCent", rho1.first.Data(), rho2.first.Data());
342  fHistManager.FillTH2(histname, fCent, 2.0 * (rho1.second->GetVal() - rho2.second->GetVal()) / (rho1.second->GetVal() + rho2.second->GetVal()));
343 
344  histname = TString::Format("%s/fHistDelta%sVsRho", rho1.first.Data(), rho2.first.Data());
345  fHistManager.FillTH2(histname, (rho1.second->GetVal() + rho2.second->GetVal()) / 2, rho1.second->GetVal() - rho2.second->GetVal());
346 
347  histname = TString::Format("%s/fHist%sVs%s", rho1.first.Data(), rho2.first.Data(), rho1.first.Data());
348  fHistManager.FillTH2(histname, rho1.second->GetVal(), rho2.second->GetVal());
349  }
350  }
351 
352  for (auto cont_it : fJetCollArray) {
353  Bool_t isB2B = IsB2BEvent(cont_it.first);
354 
355  AliJetContainer* jets = cont_it.second;
356 
357  std::shared_ptr<AliEmcalJet> random_cone(GetRandomCone(jets));
358  std::shared_ptr<AliEmcalJet> random_cone_perp(nullptr);
359  std::shared_ptr<AliEmcalJet> random_cone_excl_lead(nullptr);
360  AliEmcalJet* leadingJet = fLeadingJet[cont_it.first];
361 
362  if (leadingJet) {
363  random_cone_perp.reset(GetRandomConePerp(jets, leadingJet));
364  random_cone_excl_lead.reset(GetRandomConeExclLead(jets, leadingJet));
365  }
366  else {
367  random_cone_perp = random_cone;
368  random_cone_excl_lead = random_cone;
369  }
370 
371  if (leadingJet) {
372  histname = TString::Format("%s/fHistLeadingJetPtVsCent", jets->GetArrayName().Data());
373  fHistManager.FillTH2(histname, fCent, leadingJet->Pt());
374 
375  histname = TString::Format("%s/fHistLeadingJetPhiVsEta", jets->GetArrayName().Data());
376  fHistManager.FillTH2(histname, leadingJet->Eta(), leadingJet->Phi());
377 
378  if (isB2B){
379  histname = TString::Format("%s/fHistB2BLeadingJetPtVsCent", jets->GetArrayName().Data());
380  fHistManager.FillTH2(histname, fCent, leadingJet->Pt());
381  }
382  }
383 
384  for (auto rho : fAlternativeRho) {
385  if (leadingJet) {
386  histname = TString::Format("%s/%s/fHistLeadingJetCorrPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
387  fHistManager.FillTH2(histname, fCent, leadingJet->Pt() - rho.second->GetVal() * leadingJet->Area());
388  }
389 
390  histname = TString::Format("%s/%s/fHistRCPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
391  fHistManager.FillTH2(histname, random_cone->Eta(), random_cone->Phi());
392 
393  histname = TString::Format("%s/%s/fHistRCDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
394  fHistManager.FillTH2(histname, fCent, random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
395 
396  histname = TString::Format("%s/%s/fHistRCDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
397  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
398 
399  histname = TString::Format("%s/%s/fHistRCPerpPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
400  fHistManager.FillTH2(histname, random_cone_perp->Eta(), random_cone_perp->Phi());
401 
402  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
403  fHistManager.FillTH2(histname, fCent, random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
404 
405  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
406  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
407 
408  if (random_cone_excl_lead) {
409  histname = TString::Format("%s/%s/fHistRCExclLeadJetPhiVsEta", jets->GetArrayName().Data(), rho.first.Data());
410  fHistManager.FillTH2(histname, random_cone_excl_lead->Eta(), random_cone_excl_lead->Phi());
411 
412  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
413  fHistManager.FillTH2(histname, fCent, random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
414 
415  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
416  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
417  }
418 
419  if (leadingJet) {
420  histname = TString::Format("%s/%s/fHistRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
421  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
422 
423  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
424  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
425 
426  if (random_cone_excl_lead) {
427  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
428  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
429  }
430  }
431  else {
432  histname = TString::Format("%s/%s/fHistRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
433  fHistManager.FillTH2(histname, -1, random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
434 
435  histname = TString::Format("%s/%s/fHistRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
436  fHistManager.FillTH2(histname, -1, random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
437 
438  histname = TString::Format("%s/%s/fHistRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
439  fHistManager.FillTH2(histname, -1, random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
440  }
441 
442  if (isB2B) {
443  if (leadingJet) {
444  histname = TString::Format("%s/%s/fHistB2BLeadingJetCorrPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
445  fHistManager.FillTH2(histname, fCent, leadingJet->Pt() - rho.second->GetVal() * leadingJet->Area());
446  }
447 
448  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
449  fHistManager.FillTH2(histname, fCent, random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
450 
451  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
452  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
453 
454  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
455  fHistManager.FillTH2(histname, fCent, random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
456 
457  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
458  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
459 
460  if (random_cone_excl_lead) {
461  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsCent", jets->GetArrayName().Data(), rho.first.Data());
462  fHistManager.FillTH2(histname, fCent, random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
463 
464  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsRho", jets->GetArrayName().Data(), rho.first.Data());
465  fHistManager.FillTH2(histname, rho.second->GetVal(), random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
466  }
467 
468  if (leadingJet) {
469  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
470  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
471 
472  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
473  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
474 
475  if (random_cone_excl_lead) {
476  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
477  fHistManager.FillTH2(histname, leadingJet->Pt(), random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
478  }
479  }
480  else {
481  histname = TString::Format("%s/%s/fHistB2BRCDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
482  fHistManager.FillTH2(histname, -1, random_cone->Pt() - rho.second->GetVal() * random_cone->Area());
483 
484  histname = TString::Format("%s/%s/fHistB2BRCPerpDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
485  fHistManager.FillTH2(histname, -1, random_cone_perp->Pt() - rho.second->GetVal() * random_cone_perp->Area());
486 
487  histname = TString::Format("%s/%s/fHistB2BRCExclLeadJetDeltaPtVsLeadJetPt", jets->GetArrayName().Data(), rho.first.Data());
488  fHistManager.FillTH2(histname, -1, random_cone_excl_lead->Pt() - rho.second->GetVal() * random_cone_excl_lead->Area());
489  }
490 
491  for (auto rho2 : fAlternativeRho) {
492  if (rho == rho2) continue;
493  histname = TString::Format("%s/%s/fHistB2BDelta%sOverRhoVsCent", jets->GetArrayName().Data(), rho.first.Data(), rho2.first.Data());
494  fHistManager.FillTH2(histname, fCent, 2.0 * (rho.second->GetVal() - rho2.second->GetVal()) / (rho.second->GetVal() + rho2.second->GetVal()));
495 
496  histname = TString::Format("%s/%s/fHistB2BDelta%sVsRho", jets->GetArrayName().Data(), rho.first.Data(), rho2.first.Data());
497  fHistManager.FillTH2(histname, (rho.second->GetVal() + rho2.second->GetVal()) / 2, rho.second->GetVal() - rho2.second->GetVal());
498 
499  histname = TString::Format("%s/fHistB2B%sVs%s", rho.first.Data(), rho2.first.Data(), rho.first.Data());
500  fHistManager.FillTH2(histname, rho.second->GetVal(), rho2.second->GetVal());
501  }
502  }
503  }
504 
505  for (auto jet : jets->accepted()) {
506  if (fCentBins.size() > 1) {
507  histname = TString::Format("%s/fHistJetPt_Cent%d_%d", jets->GetArrayName().Data(), TMath::CeilNint(fCentBins[fCentBin]), TMath::CeilNint(fCentBins[fCentBin+1]));
508  fHistManager.FillTH1(histname, jet->Pt());
509 
510  if (isB2B) {
511  histname = TString::Format("%s/fHistB2BJetPt_Cent%d_%d", jets->GetArrayName().Data(), TMath::CeilNint(fCentBins[fCentBin]), TMath::CeilNint(fCentBins[fCentBin+1]));
512  fHistManager.FillTH1(histname, jet->Pt());
513  }
514 
515  for (auto rho : fAlternativeRho) {
516  histname = TString::Format("%s/%s/fHistJetCorrPt_Cent%d_%d", jets->GetArrayName().Data(), rho.first.Data(), TMath::CeilNint(fCentBins[fCentBin]), TMath::CeilNint(fCentBins[fCentBin+1]));
517  fHistManager.FillTH1(histname, jet->Pt() - jet->Area() * rho.second->GetVal());
518 
519  if (isB2B) {
520  histname = TString::Format("%s/%s/fHistB2BJetCorrPt_Cent%d_%d", jets->GetArrayName().Data(), rho.first.Data(), TMath::CeilNint(fCentBins[fCentBin]), TMath::CeilNint(fCentBins[fCentBin+1]));
521  fHistManager.FillTH1(histname, jet->Pt() - jet->Area() * rho.second->GetVal());
522  }
523  }
524  }
525  else {
526  histname = TString::Format("%s/fHistJetPt", jets->GetArrayName().Data());
527  fHistManager.FillTH1(histname, jet->Pt());
528 
529  if (isB2B) {
530  histname = TString::Format("%s/fHistB2BJetPt", jets->GetArrayName().Data());
531  fHistManager.FillTH1(histname, jet->Pt());
532  }
533 
534  for (auto rho : fAlternativeRho) {
535  histname = TString::Format("%s/%s/fHistJetCorrPt", jets->GetArrayName().Data(), rho.first.Data());
536  fHistManager.FillTH1(histname, jet->Pt() - jet->Area() * rho.second->GetVal());
537 
538  if (isB2B) {
539  histname = TString::Format("%s/%s/fHistB2BJetCorrPt", jets->GetArrayName().Data(), rho.first.Data());
540  fHistManager.FillTH1(histname, jet->Pt() - jet->Area() * rho.second->GetVal());
541  }
542  }
543  }
544  }
545  }
546 
547  return kTRUE;
548 }
549 
562 template <class T, Int_t MAX_CONSTITUENTS>
563 Int_t AliAnalysisTaskJetUEStudies::SumParticles(Double_t& pt, Double_t eta, Double_t phi, Double_t maxD2, std::map<std::string, T*>& CollArray, std::array<Int_t, MAX_CONSTITUENTS>& ConstList)
564 {
565  auto IndexMap = T::GetEmcalContainerIndexMap();
566  Int_t N = 0;
567  for (auto coll : CollArray) {
568  auto itcont = coll.second->accepted_momentum();
569  for (auto itmom = itcont.begin(); itmom != itcont.end(); itmom++) {
570  Double_t etaDiff = eta - itmom->first.Eta();
571  Double_t phiDiff = AliEmcalContainer::RelativePhi(phi, itmom->first.Phi());
572  Double_t d2 = etaDiff*etaDiff + phiDiff*phiDiff;
573  if (d2 > maxD2) continue;
574  ConstList[N] = IndexMap.GlobalIndexFromLocalIndex(coll.second->GetArray(), itmom.current_index());
575  pt += itmom->first.Pt();
576  N++;
577  if (N >= MAX_CONSTITUENTS) {
578  AliError(Form("Reached the maximum number of constituents = %d", MAX_CONSTITUENTS));
579  return N;
580  }
581  }
582  }
583  return N;
584 }
585 
593 {
594  Double_t pt = 0;
595  Double_t maxD2 = radius * radius;
596 
597  const Int_t MAX_CONSTITUENTS = 100;
598 
599  static std::array<Int_t, MAX_CONSTITUENTS> tracks;
600  static std::array<Int_t, MAX_CONSTITUENTS> clusters;
601 
602  Int_t nParticles = SumParticles<AliParticleContainer, MAX_CONSTITUENTS>(pt, eta, phi, maxD2, fParticleCollArray, tracks);
603  Int_t nClusters = SumParticles<AliClusterContainer, MAX_CONSTITUENTS>(pt, eta, phi, maxD2, fClusterCollArray, clusters);
604 
605  AliEmcalJet* jet = new AliEmcalJet(pt, eta, phi, 0);
606  jet->SetArea(maxD2*TMath::Pi());
607 
608  jet->SetNumberOfTracks(nParticles);
609  jet->SetNumberOfClusters(nClusters);
610 
611  for (Int_t i = 0; i < nParticles; i++) jet->AddTrackAt(tracks[i], i);
612  for (Int_t i = 0; i < nClusters; i++) jet->AddClusterAt(clusters[i], i);
613 
614  return jet;
615 }
616 
622 {
623  Double_t eta = fRandom->Uniform(jetCont->GetMinEta() + jetCont->GetJetRadius(), jetCont->GetMaxEta() - jetCont->GetJetRadius());
624  Double_t phi = 0;
625  if (jetCont->GetMinPhi() == -10 && jetCont->GetMaxPhi() == 10) {
626  phi = fRandom->Uniform(0, TMath::TwoPi());
627  }
628  else {
629  phi = fRandom->Uniform(jetCont->GetMinPhi() + jetCont->GetJetRadius(), jetCont->GetMaxPhi() - jetCont->GetJetRadius());
630  }
631 
632  return GetJetCone(jetCont->GetJetRadius(), eta, phi);
633 }
634 
642 {
643  Double_t eta = fRandom->Uniform(jetCont->GetMinEta() + jetCont->GetJetRadius(), jetCont->GetMaxEta() - jetCont->GetJetRadius());
644 
645  Double_t double_radius = jetCont->GetJetRadius()*2;
646 
647  Double_t minPhi = leadJet->Phi() + double_radius;
648  Double_t maxPhi = leadJet->Phi() + TMath::Pi() - double_radius;
649 
650  Double_t sign = fRandom->Rndm();
651  if (sign > 0.5) {
652  minPhi += TMath::Pi();
653  maxPhi += TMath::Pi();
654  }
655 
656  Double_t phi = TVector2::Phi_0_2pi(fRandom->Uniform(minPhi, maxPhi));
657 
658  return GetJetCone(jetCont->GetJetRadius(), eta, phi);
659 }
660 
668 {
669  Double_t eta = fRandom->Uniform(jetCont->GetMinEta() + jetCont->GetJetRadius(), jetCont->GetMaxEta() - jetCont->GetJetRadius());
670  Double_t phi = 0;
671  if (jetCont->GetMinPhi() == -10 && jetCont->GetMaxPhi() == 10) {
672  phi = fRandom->Uniform(0, TMath::TwoPi());
673  }
674  else {
675  phi = fRandom->Uniform(jetCont->GetMinPhi() + jetCont->GetJetRadius(), jetCont->GetMaxPhi() - jetCont->GetJetRadius());
676  }
677 
678  const Int_t MAX_ITER = 20;
679  AliEmcalJet* jet = nullptr;
680  for (Int_t i = 0; i < MAX_ITER; i++) {
681  jet = GetJetCone(jetCont->GetJetRadius(), eta, phi);
682  if (!AreJetsOverlapping(leadJet, jet)) {
683  break;
684  }
685  else {
686  delete jet;
687  jet = nullptr;
688  }
689  }
690 
691  if (!jet) AliError(Form("Could not find a random cone that does not overlap with the leading jet after %d iterations!", MAX_ITER));
692 
693  return jet;
694 }
695 
705  Double_t trackPtCut, Double_t clusECut, TString suffix)
706 {
707  // Get the pointer to the existing analysis manager via the static access method.
708  AliAnalysisManager *mgr = AliAnalysisManager::GetAnalysisManager();
709  if (!mgr) {
710  ::Error("AliAnalysisTaskJetUEStudies", "No analysis manager to connect to.");
711  return nullptr;
712  }
713 
714  // Check the analysis type using the event handlers connected to the analysis manager.
715  AliVEventHandler* handler = mgr->GetInputEventHandler();
716  if (!handler) {
717  ::Error("AliAnalysisTaskJetUEStudies", "This task requires an input event handler");
718  return nullptr;
719  }
720 
721  EDataType_t dataType = kUnknownDataType;
722 
723  if (handler->InheritsFrom("AliESDInputHandler")) {
724  dataType = kESD;
725  }
726  else if (handler->InheritsFrom("AliAODInputHandler")) {
727  dataType = kAOD;
728  }
729 
730  // Init the task and do settings
731 
732  if (trackName == "usedefault") {
733  if (dataType == kESD) {
734  trackName = "Tracks";
735  }
736  else if (dataType == kAOD) {
737  trackName = "tracks";
738  }
739  else {
740  trackName = "";
741  }
742  }
743 
744  if (clusName == "usedefault") {
745  if (dataType == kESD) {
746  clusName = "CaloClusters";
747  }
748  else if (dataType == kAOD) {
749  clusName = "caloClusters";
750  }
751  else {
752  clusName = "";
753  }
754  }
755 
756  TString name("AliAnalysisTaskJetUEStudies");
757  if (strcmp(suffix,"")) {
758  name += "_";
759  name += suffix;
760  }
761 
763  jetTask->SetVzRange(-10,10);
764  jetTask->SetNeedEmcalGeom(kFALSE);
765  AliParticleContainer *partCont = jetTask->AddParticleContainer(trackName.Data());
766  if (partCont) partCont->SetParticlePtCut(trackPtCut);
767 
768  AliClusterContainer *clusterCont = jetTask->AddClusterContainer(clusName.Data());
769  if (clusterCont) {
770  clusterCont->SetClusECut(0.);
771  clusterCont->SetClusPtCut(0.);
772  clusterCont->SetClusHadCorrEnergyCut(clusECut);
773  clusterCont->SetDefaultClusterEnergy(AliVCluster::kHadCorr);
774  }
775 
776  // Final settings, pass to manager and set the containers
777  mgr->AddTask(jetTask);
778 
779  // Create containers for input/output
780  AliAnalysisDataContainer *cinput1 = mgr->GetCommonInputContainer() ;
781  TString contname(name);
782  contname += "_histos";
783  AliAnalysisDataContainer *coutput1 = mgr->CreateContainer(contname.Data(),
784  TList::Class(),AliAnalysisManager::kOutputContainer,
785  Form("%s", AliAnalysisManager::GetCommonFileName()));
786  mgr->ConnectInput (jetTask, 0, cinput1 );
787  mgr->ConnectOutput (jetTask, 1, coutput1 );
788 
789  return jetTask;
790 }
AliAnalysisTaskJetUEStudies()
Default constructor for ROOT I/O purposes.
AliClusterContainer * AddClusterContainer(std::string branchName, std::string contName="")
Double_t Area() const
Definition: AliEmcalJet.h:130
Bool_t AreJetsOverlapping(AliEmcalJet *jet1, AliEmcalJet *jet2)
void SetParticlePtCut(Double_t cut)
const TString & GetRhoName() const
double Double_t
Definition: External.C:58
EDataType_t
Switch for the data type.
const char * title
Definition: MakeQAPdf.C:27
Double_t Eta() const
Definition: AliEmcalJet.h:121
Double_t Phi() const
Definition: AliEmcalJet.h:117
void FillTH2(const char *hname, double x, double y, double weight=1., Option_t *opt="")
Fill a 2D histogram within the container.
Bool_t IsB2BEvent(std::string jetCollName="Signal")
std::vector< double > fCentBins
how many centrality bins
Container for particles within the EMCAL framework.
std::set< TString > fDefaultRhoNames
! Default rho names
AliEmcalJet * GetJetCone(Double_t radius, Double_t eta, Double_t phi)
EBeamType_t fForceBeamType
forced beam type
const Int_t nPtBins
TH2 * CreateTH2(const char *name, const char *title, int nbinsx, double xmin, double xmax, int nbinsy, double ymin, double ymax, Option_t *opt="")
Create a new TH2 within the container.
int Int_t
Definition: External.C:63
THashList * GetListOfHistograms() const
Get the list of histograms.
Definition: THistManager.h:671
Float_t fMaxPt
Histogram pt limit.
Int_t SumParticles(Double_t &pt, Double_t eta, Double_t phi, Double_t maxD2, std::map< std::string, T * > &CollArray, std::array< Int_t, MAX_CONSTITUENTS > &ConstList)
AliEmcalJet * GetRandomConeExclLead(AliJetContainer *jetCont, AliEmcalJet *leadJet)
TH1 * CreateTH1(const char *name, const char *title, int nbins, double xmin, double xmax, Option_t *opt="")
Create a new TH1 within the container.
Int_t fCentBin
!event centrality bin
Declaration of class AliAnalysisTaskJetUE.
void FillTH1(const char *hname, double x, double weight=1., Option_t *opt="")
Fill a 1D histogram within the container.
AliEmcalJet * GetRandomCone(AliJetContainer *jetCont)
Double_t Pt() const
Definition: AliEmcalJet.h:109
Base class for a task that studies the UE.
Float_t fPtBinWidth
Histogram pt bin width.
AliParticleContainer * AddParticleContainer(std::string branchName, std::string contName="")
Float_t GetJetRadius() const
std::map< std::string, AliParticleContainer * > fParticleCollArray
particle/track collection array
void SetVzRange(Double_t min, Double_t max)
virtual void CalculateEventProperties()
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:51
std::map< TString, AliRhoParameter * > fAlternativeRho
Alternative average background estimations.
void SetClusPtCut(Double_t cut)
std::map< std::string, AliEmcalJet * > fLeadingJet
!leading jet
std::map< std::string, AliJetContainer * > fJetCollArray
jet collection array
THistManager fHistManager
Histogram manager.
const AliJetIterableContainer accepted() const
bool Bool_t
Definition: External.C:53
void SetClusECut(Double_t cut)
void SetDefaultClusterEnergy(Int_t d)
std::map< std::string, AliClusterContainer * > fClusterCollArray
cluster collection array
static AliAnalysisTaskJetUEStudies * AddTaskJetUEStudies(TString ntracks="usedefault", TString nclusters="usedefault", Double_t trackPtCut=0.15, Double_t clusECut=0.30, TString suffix="")
Container structure for EMCAL clusters.
TRandom * fRandom
! Random number generator
AliEmcalJet * GetRandomConePerp(AliJetContainer *jetCont, AliEmcalJet *leadJet)
Double_t fCent
!event centrality
Container for jet within the EMCAL jet framework.
void UserCreateOutputObjects()
Overloads base class method. Creates output objects.
void SetClusHadCorrEnergyCut(Double_t cut)