AliPhysics  cdeda5a (cdeda5a)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliAnalysisTaskEmcalJetTagger.cxx
Go to the documentation of this file.
1 //
2 // Jet tagger analysis task.
3 //
4 // Author: M.Verweij
5 
6 #include <TH1F.h>
7 #include <TH2F.h>
8 #include <TH3F.h>
9 #include <THnSparse.h>
10 
11 #include "AliEmcalJet.h"
12 #include "AliLog.h"
13 #include "AliJetContainer.h"
14 #include "AliParticleContainer.h"
15 
17 
19 
20 //________________________________________________________________________
23  fJetTaggingType(kTag),
24  fJetTaggingMethod(kGeo),
25  fContainerBase(0),
26  fContainerTag(1),
27  fSpecPartContTag(-1),
28  fMinFractionShared(0),
29  fUseSumw2(0),
30  fMatchingDone(0),
31  fTypeAcc(3),
32  fMaxDist(0.3),
33  fInit(kFALSE),
34  fh3PtJet1VsDeltaEtaDeltaPhi(0),
35  fh2PtJet1VsDeltaR(0),
36  fh2PtJet2VsFraction(0),
37  fh2PtJet1VsLeadPtAllSel(0),
38  fh2PtJet1VsLeadPtTagged(0),
39  fh2PtJet1VsPtJet2(0),
40  fh2PtJet2VsRelPt(0),
41  fh3PtJetDEtaDPhiConst(0),
42  fh3PtJetAreaDRConst(0)
43 {
44  // Default constructor.
45 
46  fh3PtJet1VsDeltaEtaDeltaPhi = new TH3F*[fNcentBins];
47  fh2PtJet1VsDeltaR = new TH2F*[fNcentBins];
48  fh2PtJet2VsFraction = new TH2F*[fNcentBins];
49  fh2PtJet1VsLeadPtAllSel = new TH2F*[fNcentBins];
50  fh2PtJet1VsLeadPtTagged = new TH2F*[fNcentBins];
51  fh2PtJet1VsPtJet2 = new TH2F*[fNcentBins];
52  fh2PtJet2VsRelPt = new TH2F*[fNcentBins];
53 
54  for (Int_t i = 0; i < fNcentBins; i++) {
55  fh3PtJet1VsDeltaEtaDeltaPhi[i] = 0;
56  fh2PtJet1VsDeltaR[i] = 0;
57  fh2PtJet2VsFraction[i] = 0;
58  fh2PtJet1VsLeadPtAllSel[i] = 0;
59  fh2PtJet1VsLeadPtTagged[i] = 0;
60  fh2PtJet1VsPtJet2[i] = 0;
61  fh2PtJet2VsRelPt[i] = 0;
62  }
63 
64  SetMakeGeneralHistograms(kTRUE);
65 }
66 
67 //________________________________________________________________________
69  AliAnalysisTaskEmcalJet(name, kTRUE),
70  fJetTaggingType(kTag),
71  fJetTaggingMethod(kGeo),
72  fContainerBase(0),
73  fContainerTag(1),
74  fSpecPartContTag(-1),
75  fMinFractionShared(0),
76  fUseSumw2(0),
77  fMatchingDone(0),
78  fTypeAcc(3),
79  fMaxDist(0.3),
80  fInit(kFALSE),
81  fh3PtJet1VsDeltaEtaDeltaPhi(0),
82  fh2PtJet1VsDeltaR(0),
83  fh2PtJet2VsFraction(0),
84  fh2PtJet1VsLeadPtAllSel(0),
85  fh2PtJet1VsLeadPtTagged(0),
86  fh2PtJet1VsPtJet2(0),
87  fh2PtJet2VsRelPt(0),
88  fh3PtJetDEtaDPhiConst(0),
89  fh3PtJetAreaDRConst(0)
90 {
91  // Standard constructor.
92 
100 
101  for (Int_t i = 0; i < fNcentBins; i++) {
103  fh2PtJet1VsDeltaR[i] = 0;
104  fh2PtJet2VsFraction[i] = 0;
107  fh2PtJet1VsPtJet2[i] = 0;
108  fh2PtJet2VsRelPt[i] = 0;
109  }
110 
112 
113 }
114 
115 //________________________________________________________________________
117 {
118  // Destructor.
119 }
120 
121 //________________________________________________________________________
123 {
124  // Create user output.
125 
127 
128  Bool_t oldStatus = TH1::AddDirectoryStatus();
129  TH1::AddDirectory(kFALSE);
130 
131  const Int_t nBinsPt = 40;
132  const Int_t nBinsDPhi = 72;
133  const Int_t nBinsDEta = 100;
134  const Int_t nBinsDR = 50;
135  const Int_t nBinsFraction = 101;
136 
137  const Double_t minPt = -50.;
138  const Double_t maxPt = 150.;
139  const Double_t minDPhi = -0.5;
140  const Double_t maxDPhi = 0.5;
141  const Double_t minDEta = -0.5;
142  const Double_t maxDEta = 0.5;
143  const Double_t minDR = 0.;
144  const Double_t maxDR = 0.5;
145  const Double_t minFraction = -0.005;
146  const Double_t maxFraction = 1.005;
147 
148  TString histName = "";
149  TString histTitle = "";
150  for (Int_t i = 0; i < fNcentBins; i++) {
151 
152  histName = TString::Format("fh3PtJet1VsDeltaEtaDeltaPhi_%d",i);
153  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{#Delta#eta};#it{#Delta#varphi}",histName.Data());
154  fh3PtJet1VsDeltaEtaDeltaPhi[i] = new TH3F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsDEta,minDEta,maxDEta,nBinsDPhi,minDPhi,maxDPhi);
155  fOutput->Add(fh3PtJet1VsDeltaEtaDeltaPhi[i]);
156 
157  histName = TString::Format("fh2PtJet1VsDeltaR_%d",i);
158  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{#Delta R}",histName.Data());
159  fh2PtJet1VsDeltaR[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsDR,minDR,maxDR);
160  fOutput->Add(fh2PtJet1VsDeltaR[i]);
161 
162  histName = TString::Format("fh2PtJet2VsFraction_%d",i);
163  histTitle = TString::Format("%s;#it{p}_{T,jet2};#it{f}_{shared}",histName.Data());
164  fh2PtJet2VsFraction[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsFraction,minFraction,maxFraction);
165  fOutput->Add(fh2PtJet2VsFraction[i]);
166 
167  histName = TString::Format("fh2PtJet1VsLeadPtAllSel_%d",i);
168  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{p}_{T,lead trk}",histName.Data());
169  fh2PtJet1VsLeadPtAllSel[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,20,0.,20.);
170  fOutput->Add(fh2PtJet1VsLeadPtAllSel[i]);
171 
172  histName = TString::Format("fh2PtJet1VsLeadPtTagged_%d",i);
173  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{p}_{T,lead trk}",histName.Data());
174  fh2PtJet1VsLeadPtTagged[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,20,0.,20.);
175  fOutput->Add(fh2PtJet1VsLeadPtTagged[i]);
176 
177  histName = TString::Format("fh2PtJet1VsPtJet2_%d",i);
178  histTitle = TString::Format("%s;#it{p}_{T,jet1};#it{p}_{T,jet2}",histName.Data());
179  fh2PtJet1VsPtJet2[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,nBinsPt,minPt,maxPt);
180  fOutput->Add(fh2PtJet1VsPtJet2[i]);
181 
182  histName = TString::Format("fh2PtJet2VsRelPt_%d",i);
183  histTitle = TString::Format("%s;#it{p}_{T,jet2};(#it{p}_{T,jet2}-#it{p}_{T,jet1})/#it{p}_{T,jet1}",histName.Data());
184  fh2PtJet2VsRelPt[i] = new TH2F(histName.Data(),histTitle.Data(),nBinsPt,minPt,maxPt,241,-2.41,2.41);
185  fOutput->Add(fh2PtJet2VsRelPt[i]);
186  }
187 
188  fh3PtJetDEtaDPhiConst = new TH3F("fh3PtJetDEtaDPhiConst","fh3PtJetDEtaDPhiConst;pT;#Delta #eta;#Delta #varphi",nBinsPt,minPt,maxPt,nBinsDEta,-1.,1.,nBinsDPhi,-1.,1.);
190 
191  fh3PtJetAreaDRConst = new TH3F("fh3PtJetAreaDRConst","fh3PtJetAreaDRConst;pT;A;#Delta R",nBinsPt,minPt,maxPt,50,0.,1.,50,0.,1.);
193 
194  fNAccJets = new TH1F("fNAccJets","fNAccJets;N/ev",11,-0.5, 9.5);
195  fOutput->Add(fNAccJets);
196 
197  if(fUseSumw2) {
198  // =========== Switch on Sumw2 for all histos ===========
199  for (Int_t i=0; i<fOutput->GetEntries(); ++i) {
200  TH1 *h1 = dynamic_cast<TH1*>(fOutput->At(i));
201  if (h1){
202  h1->Sumw2();
203  continue;
204  }
205  THnSparse *hn = dynamic_cast<THnSparse*>(fOutput->At(i));
206  if(hn)hn->Sumw2();
207  }
208  }
209 
210  TH1::AddDirectory(oldStatus);
211 
212  PostData(1, fOutput); // Post data for ALL output slots > 0 here.
213 }
214 //________________________________________________________________________
215 
217 
218  if(fInit) return;
219 
222  if(!cont1 || !cont2) AliError("Missing jet container");
223 
224  // when full azimuth, don't do anything
225  Double_t phiMin1 = cont1->GetJetPhiMin(), phiMax1 = cont1->GetJetPhiMax();
226  Double_t phiMin2 = cont2->GetJetPhiMin(), phiMax2 = cont2->GetJetPhiMax();
227  Bool_t isZeroTwoPi1 = kFALSE;
228  //check only one side of phi, since the upper bound is not well defined
229  if(phiMin1 > -1.e-6 && phiMin1 < 1.e-6) isZeroTwoPi1 = kTRUE;
230  Bool_t isZeroTwoPi2 = kFALSE;
231  if(phiMin2 > -1.e-6 && phiMin2 < 1.e-6) isZeroTwoPi2 = kTRUE;
232 
233  if(fTypeAcc==1)
234  cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
235  else if(fTypeAcc==2) {
236  cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
237  if(!isZeroTwoPi2) cont2->SetJetPhiLimits(cont2->GetJetPhiMin()-0.1,cont2->GetJetPhiMax()+0.1);
238  }
239  else if(fTypeAcc==3) {
240  cont1->SetJetEtaLimits(cont1->GetJetEtaMin()-0.1,cont1->GetJetEtaMax()+0.1);
241  if(!isZeroTwoPi1) cont1->SetJetPhiLimits(cont1->GetJetPhiMin()-0.1,cont1->GetJetPhiMax()+0.1);
242  cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
243  if(!isZeroTwoPi2) cont2->SetJetPhiLimits(cont2->GetJetPhiMin()-0.1,cont2->GetJetPhiMax()+0.1);
244  }
245  fInit = kTRUE;
246  return;
247 }
248 //________________________________________________________________________
250 {
251  // Run analysis code here, if needed. It will be executed before FillHistograms().
252 
254 
255  return kTRUE;
256 }
257 
258 //________________________________________________________________________
260 {
261  // Fill histograms.
262 
263  AliEmcalJet *jet1 = NULL;
265  if(!jetCont) return kFALSE;
266  jetCont->ResetCurrentID();
267  Int_t count = 0;
268  while((jet1 = jetCont->GetNextAcceptJet())) {
269  count++;
270  Double_t ptJet1 = jet1->Pt() - jetCont->GetRhoVal()*jet1->Area();
271  fh2PtJet1VsLeadPtAllSel[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
272 
273  //fill histo with angle between jet axis and constituents
274  for(Int_t icc=0; icc<jet1->GetNumberOfTracks(); icc++) {
275  AliVParticle *vp = static_cast<AliVParticle*>(jet1->TrackAt(icc, jetCont->GetParticleContainer()->GetArray()));//fTracks));
276  if(!vp) continue;
277  Double_t dEta = jet1->Eta()-vp->Eta();
278  Double_t dPhi = jet1->Phi()-vp->Phi();
279  if(dPhi<TMath::Pi()) dPhi+=TMath::TwoPi();
280  if(dPhi>TMath::Pi()) dPhi-=TMath::TwoPi();
281  fh3PtJetDEtaDPhiConst->Fill(ptJet1,dEta,dPhi);
282 
283  Double_t dR = TMath::Sqrt(dPhi*dPhi+dEta*dEta);
284  fh3PtJetAreaDRConst->Fill(ptJet1,jet1->Area(),dR);
285  }
286 
287  if(jet1->GetTagStatus()<1 && fJetTaggingType==kTag)
288  continue;
289 
290  AliEmcalJet *jet2 = NULL;
291  if(fJetTaggingType==kTag) jet2 = jet1->GetTaggedJet();
292  if(fJetTaggingType==kClosest) jet2 = jet1->ClosestJet();
293  if(!jet2) continue;
294 
295  Double_t ptJet2 = jet2->Pt() - GetRhoVal(fContainerTag)*jet2->Area();
296 
297  Double_t fraction = -2;
298  if(fSpecPartContTag > -1) fraction = jetCont->GetFractionSharedPt(jet1, GetParticleContainer(fSpecPartContTag));
299  else fraction = jetCont->GetFractionSharedPt(jet1);
300 
301  fh2PtJet2VsFraction[fCentBin]->Fill(ptJet2,fraction);
302  AliDebug(5, Form("Fraction = %f, minimum = %f", fraction, fMinFractionShared));
303  //if(fJetTaggingType==kClosest) Printf("Fraction = %f, minimum = %f", fraction, fMinFractionShared);
305  continue;
306  fh2PtJet1VsLeadPtTagged[fCentBin]->Fill(ptJet1,jet1->MaxTrackPt());
307  fh2PtJet1VsPtJet2[fCentBin]->Fill(ptJet1,ptJet2);
308  if(ptJet2>0.) fh2PtJet2VsRelPt[fCentBin]->Fill(ptJet2,(ptJet1-ptJet2)/ptJet2);
309 
310  Double_t dPhi = GetDeltaPhi(jet1->Phi(),jet2->Phi());
311  if(dPhi>TMath::Pi())
312  dPhi -= TMath::TwoPi();
313  if(dPhi<(-1.*TMath::Pi()))
314  dPhi += TMath::TwoPi();
315 
316  fh3PtJet1VsDeltaEtaDeltaPhi[fCentBin]->Fill(ptJet1,jet1->Eta()-jet2->Eta(),dPhi);
317  fh2PtJet1VsDeltaR[fCentBin]->Fill(ptJet1,jet1->DeltaR(jet2));
318  }
319  fNAccJets->Fill(count);
320  return kTRUE;
321 }
322 
323 //________________________________________________________________________
325 
326  //Reset tagging of container c
327 
328  for(int i = 0;i<GetNJets(c);i++){
329  AliEmcalJet *jet = static_cast<AliEmcalJet*>(GetJetFromArray(i, c));
330  if(!jet) continue;
332  jet->ResetMatching();
333  else if(fJetTaggingType==kTag) {
334  jet->SetTaggedJet(0x0);
335  jet->SetTagStatus(-1);
336  }
337  }
338 }
339 
340 //________________________________________________________________________
342  Int_t iDebug, Float_t maxDist, Int_t type, Bool_t bReset) {
343 
344  //
345  // Match the full jets to the corresponding charged jets
346  // Translation of AliAnalysisHelperJetTasks::GetClosestJets to AliEmcalJet objects
347  // type:
348  // 0 = use acceptance cuts of container
349  // 1 = allow 0.1 one more for c2 in eta
350  // 2 = allow 0.1 more in eta and phi for c2
351  // 3 = allow 0.1 in eta and phi for both containers
352 
353  if(c1<0) c1 = fContainerBase;
354  if(c2<0) c2 = fContainerTag;
355  Init();
356  const Int_t nJets1 = GetNJets(c1);
357  const Int_t nJets2 = GetNJets(c2);
358 
359  if(nJets1==0 || nJets2==0) return;
360 
361  if(bReset) {
362  ResetTagging(c1);
363  ResetTagging(c2);
364  }
365  fMatchingDone = kFALSE;
366 
367  TArrayI faMatchIndex1;
368  faMatchIndex1.Set(nJets2+1);
369  faMatchIndex1.Reset(-1);
370 
371  TArrayI faMatchIndex2;
372  faMatchIndex2.Set(nJets1+1);
373  faMatchIndex2.Reset(-1);
374 
375  static TArrayS iFlag(nJets1*nJets2);
376  if(iFlag.GetSize()<(nJets1*nJets2)){
377  iFlag.Set(nJets1*nJets2+1);
378  }
379  iFlag.Reset(0);
380 
381  //AliJetContainer *cont1 = GetJetContainer(c1);
382  //AliJetContainer *cont2 = GetJetContainer(c2);
383  //Printf("eta cont 1 %f - %f", cont1->GetJetEtaMin(), cont1->GetJetEtaMax());
384  //Printf("phi cont 1 %f - %f", cont1->GetJetPhiMin(), cont1->GetJetPhiMax());
385  //if(type==1)
386  // cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
387  //else if(type==2) {
388  // cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
389  // cont2->SetJetPhiLimits(cont2->GetJetPhiMin()-0.1,cont2->GetJetPhiMax()+0.1);
390  //}
391  //else if(type==3) {
392  // cont1->SetJetEtaLimits(cont1->GetJetEtaMin()-0.1,cont1->GetJetEtaMax()+0.1);
393  // cont1->SetJetPhiLimits(cont1->GetJetPhiMin()-0.1,cont1->GetJetPhiMax()+0.1);
394  // cont2->SetJetEtaLimits(cont2->GetJetEtaMin()-0.1,cont2->GetJetEtaMax()+0.1);
395  // cont2->SetJetPhiLimits(cont2->GetJetPhiMin()-0.1,cont2->GetJetPhiMax()+0.1);
396  //}
397 
398  // find the closest distance to the full jet
399  for(int i = 0;i<nJets1;i++){
400 
401  AliEmcalJet *jet1 = static_cast<AliEmcalJet*>(GetAcceptJetFromArray(i, c1));
402  if(!jet1) continue;
403 
404  Float_t dist = maxDist;
405 
406  for(int j = 0;j <nJets2; j++){
407  AliEmcalJet *jet2 = static_cast<AliEmcalJet*>(GetAcceptJetFromArray(j, c2));
408  if(!jet2) continue;
409 
410  Double_t dR = jet1->DeltaR(jet2);
411  if(dR<dist && dR<maxDist){
412  faMatchIndex2[i]=j;
413  dist = dR;
414  }
415  }//j jet loop
416  if(faMatchIndex2[i]>=0) {
417  iFlag[i*nJets2+faMatchIndex2[i]]+=1;//j closest to i
418  if(iDebug>10) Printf("Full Distance (%d)--(%d) %3.3f flag[%d] = %d",i,faMatchIndex2[i],dist,i*nJets2+faMatchIndex2[i],iFlag[i*nJets2+faMatchIndex2[i]]);
419  }
420  }//i jet loop
421 
422  // other way around
423  for(int j = 0;j<nJets2;j++){
424  AliEmcalJet *jet2 = static_cast<AliEmcalJet*>(GetAcceptJetFromArray(j, c2));
425  if(!jet2)
426  continue;
427 
428  Float_t dist = maxDist;
429  for(int i = 0;i<nJets1;i++){
430  AliEmcalJet *jet1 = static_cast<AliEmcalJet*>(GetAcceptJetFromArray(i, c1));
431  if(!jet1) continue;
432 
433  Double_t dR = jet1->DeltaR(jet2);
434  if(dR<dist && dR<maxDist){
435  faMatchIndex1[j]=i;
436  dist = dR;
437  }
438  }
439  if(faMatchIndex1[j]>=0) {
440  iFlag[faMatchIndex1[j]*nJets2+j]+=2;//i closest to j
441  if(iDebug>10) Printf("Other way Distance (%d)--(%d) %3.3f flag[%d] = %d",faMatchIndex1[j],j,dist,faMatchIndex1[j]*nJets2+j,iFlag[faMatchIndex1[j]*nJets2+j]);
442  }
443  }
444 
445  // check for "true" correlations
446  for(int i = 0;i<nJets1;i++){
447  AliEmcalJet *jet1 = static_cast<AliEmcalJet*>(GetJetFromArray(i, c1));
448  for(int j = 0;j<nJets2;j++){
449  AliEmcalJet *jet2 = static_cast<AliEmcalJet*>(GetJetFromArray(j, c2));
450  AliDebug(11,Form("%s: Flag[%d][%d] %d ",GetName(),i,j,iFlag[i*nJets2+j]));
451 
452  // we have a uniqe correlation
453  if(iFlag[i*nJets2+j]==3) {
454  Double_t dR = jet1->DeltaR(jet2);
455  if(iDebug>1) Printf("closest jets %d %d dR = %f",j,i,dR);
456 
457  if(fJetTaggingType==kTag) {
458  jet1->SetTaggedJet(jet2);
459  jet1->SetTagStatus(1);
460 
461  jet2->SetTaggedJet(jet1);
462  jet2->SetTagStatus(1);
463  }
464  else if(fJetTaggingType==kClosest) {
465  jet1->SetClosestJet(jet2,dR);
466  jet2->SetClosestJet(jet1,dR);
467  }
468  }
469  }
470  }
471  fMatchingDone = kTRUE;
472 }
473 
474 //________________________________________________________________________
476  //
477  // Calculate azimuthal angle between the axises of the jets
478  //
479  return GetDeltaPhi(jet1->Phi(),jet2->Phi());
480 }
481 
482 //________________________________________________________________________
484  //
485  // Calculate azimuthal angle between the axises of the jets
486  //
487  Double_t dPhi = phi1-phi2;
488  if(dPhi <-0.5*TMath::Pi()) dPhi += TMath::TwoPi();
489  if(dPhi > 1.5*TMath::Pi()) dPhi -= TMath::TwoPi();
490 
491  return dPhi;
492 }
493 
494 //________________________________________________________________________
496  //
497  // retrieve event objects
498  //
500  return kFALSE;
501 
502  return kTRUE;
503 }
504 
505 //_______________________________________________________________________
507 {
508  // Called once at the end of the analysis.
509 }
510 
void SetTagStatus(Int_t i)
Definition: AliEmcalJet.h:224
Double_t Area() const
Definition: AliEmcalJet.h:117
Double_t GetRhoVal() const
AliEmcalJet * GetJetFromArray(Int_t j, Int_t c=0) const
double Double_t
Definition: External.C:58
AliEmcalJet * GetTaggedJet() const
Definition: AliEmcalJet.h:225
Definition: External.C:260
Definition: External.C:236
Double_t GetJetEtaMin() const
void SetTaggedJet(AliEmcalJet *j)
Definition: AliEmcalJet.h:223
AliEmcalJet * ClosestJet() const
Definition: AliEmcalJet.h:215
AliJetContainer * GetJetContainer(Int_t i=0) const
Int_t GetTagStatus() const
Definition: AliEmcalJet.h:226
Double_t Eta() const
Definition: AliEmcalJet.h:108
Double_t GetJetPhiMax() const
Int_t GetNJets(Int_t i=0) const
Double_t Phi() const
Definition: AliEmcalJet.h:104
TH1 * fNAccJets
pt jet vs Area vs delta R of constituents
void MatchJetsGeo(Int_t c1=-1, Int_t c2=-1, Int_t iDebug=0, Float_t maxDist=0.3, Int_t type=2, Bool_t bReset=kTRUE)
Double_t GetJetEtaMax() const
ClassImp(AliAnalysisTaskEmcalJetTagger) AliAnalysisTaskEmcalJetTagger
TCanvas * c
Definition: TestFitELoss.C:172
Int_t fCentBin
!event centrality bin
TH2F ** fh2PtJet2VsRelPt
pT of base jet vs tagged jet
Int_t TrackAt(Int_t idx) const
Definition: AliEmcalJet.h:147
UShort_t GetNumberOfTracks() const
Definition: AliEmcalJet.h:126
TH2F ** fh2PtJet1VsLeadPtTagged
all jets after std selection
TH2F ** fh2PtJet1VsDeltaR
pt jet 1 vs deta vs dphi
AliParticleContainer * GetParticleContainer(Int_t i=0) const
void ResetMatching()
AliParticleContainer * GetParticleContainer() const
Double_t GetJetPhiMin() const
int Int_t
Definition: External.C:63
float Float_t
Definition: External.C:68
void SetJetPhiLimits(Float_t min, Float_t max)
Int_t fNcentBins
how many centrality bins
Double_t MaxTrackPt() const
Definition: AliEmcalJet.h:142
AliEmcalJet * GetAcceptJetFromArray(Int_t j, Int_t c=0) const
AliEmcalJet * GetNextAcceptJet()
Double_t DeltaR(const AliVParticle *part) const
Double_t Pt() const
Definition: AliEmcalJet.h:96
Double_t GetRhoVal(Int_t i=0) const
AliEmcalList * fOutput
!output list
void SetClosestJet(AliEmcalJet *j, Double_t d)
Definition: AliEmcalJet.h:211
void SetMakeGeneralHistograms(Bool_t g)
TH2F ** fh2PtJet1VsLeadPtAllSel
pt jet 1 vs shared fraction
Base task in the EMCAL jet framework.
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
TH3F * fh3PtJetDEtaDPhiConst
pT of tagged jet vs pt base jet / pt tagged jet
Double_t GetFractionSharedPt(const AliEmcalJet *jet, AliParticleContainer *cont2=0x0) const
const char Option_t
Definition: External.C:48
Double_t GetDeltaPhi(const AliEmcalJet *jet1, const AliEmcalJet *jet2)
bool Bool_t
Definition: External.C:53
TH3F * fh3PtJetAreaDRConst
pt jet vs delta eta vs delta phi of constituents
void SetJetEtaLimits(Float_t min, Float_t max)
Container for jet within the EMCAL jet framework.
Definition: External.C:196