AliPhysics  ad6828d (ad6828d)
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends Macros Groups Pages
AliEmcalJet.cxx
Go to the documentation of this file.
1 /**************************************************************************
2  * Copyright(c) 1998-1999, 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 #include "AliEmcalJet.h"
16 
17 #include "AliLog.h"
18 #include "Riostream.h"
19 
23 
28  AliVParticle(),
29  fPt(0),
30  fEta(0),
31  fPhi(0),
32  fM(0),
33  fNEF(0),
34  fArea(0),
35  fAreaEta(0),
36  fAreaPhi(0),
37  fAreaE(0),
38  fAreaEmc(-1),
39  fAxisInEmcal(0),
40  fFlavourTagging(0),
41  fFlavourTracks(0),
42  fMaxCPt(0),
43  fMaxNPt(0),
44  fMCPt(0),
45  fNn(0),
46  fNch(0),
47  fPtEmc(0),
48  fNEmc(0),
49  fClusterIDs(),
50  fTrackIDs(),
51  fMatched(2),
52  fMatchingType(0),
53  fTaggedJet(0x0),
54  fTagStatus(-1),
55  fPtSub(0),
56  fPtSubVect(0),
57  fTriggers(0),
58  fLabel(-1),
59  fHasGhost(kFALSE),
60  fGhosts(),
61  fJetShapeProperties(0),
62  fJetAcceptanceType(0)
63 {
64  fClosestJets[0] = 0;
65  fClosestJets[1] = 0;
66  fClosestJetsDist[0] = 999;
67  fClosestJetsDist[1] = 999;
68 }
69 
78  AliVParticle(),
79  fPt(TMath::Sqrt(px * px + py* py)),
80  fEta(TMath::ASinH(pz / fPt)),
81  fPhi(0),
82  fM(0),
83  fNEF(0),
84  fArea(0),
85  fAreaEta(0),
86  fAreaPhi(0),
87  fAreaE(0),
88  fAreaEmc(-1),
89  fAxisInEmcal(0),
90  fFlavourTagging(0),
91  fFlavourTracks(0),
92  fMaxCPt(0),
93  fMaxNPt(0),
94  fMCPt(0),
95  fNn(0),
96  fNch(0),
97  fPtEmc(0),
98  fNEmc(0),
99  fClusterIDs(),
100  fTrackIDs(),
101  fMatched(2),
102  fMatchingType(0),
103  fTaggedJet(0x0),
104  fTagStatus(-1),
105  fPtSub(0),
106  fPtSubVect(0),
107  fTriggers(0),
108  fLabel(-1),
109  fHasGhost(kFALSE),
110  fGhosts(),
111  fJetShapeProperties(0),
112  fJetAcceptanceType(0)
113 {
114  if (fPt != 0) {
115  fPhi = TVector2::Phi_0_2pi(TMath::ATan2(py, px));
116  }
117 
118  fClosestJets[0] = 0;
119  fClosestJets[1] = 0;
120  fClosestJetsDist[0] = 999;
121  fClosestJetsDist[1] = 999;
122 }
123 
133  AliVParticle(),
134  fPt(pt),
135  fEta(eta),
136  fPhi(phi),
137  fM(m),
138  fNEF(0),
139  fArea(0),
140  fAreaEta(0),
141  fAreaPhi(0),
142  fAreaE(0),
143  fAreaEmc(-1),
144  fAxisInEmcal(0),
145  fFlavourTagging(0),
146  fFlavourTracks(0),
147  fMaxCPt(0),
148  fMaxNPt(0),
149  fMCPt(0),
150  fNn(0),
151  fNch(0),
152  fPtEmc(0),
153  fNEmc(0),
154  fClusterIDs(),
155  fTrackIDs(),
156  fMatched(2),
157  fMatchingType(0),
158  fTaggedJet(0x0),
159  fTagStatus(-1),
160  fPtSub(0),
161  fPtSubVect(0),
162  fTriggers(0),
163  fLabel(-1),
164  fHasGhost(kFALSE),
165  fGhosts(),
166  fJetShapeProperties(0),
167  fJetAcceptanceType(0)
168 {
169  fPhi = TVector2::Phi_0_2pi(fPhi);
170 
171  fClosestJets[0] = 0;
172  fClosestJets[1] = 0;
173  fClosestJetsDist[0] = 999;
174  fClosestJetsDist[1] = 999;
175 }
176 
182  AliVParticle(jet),
183  fPt(jet.fPt),
184  fEta(jet.fEta),
185  fPhi(jet.fPhi),
186  fM(jet.fM),
187  fNEF(jet.fNEF),
188  fArea(jet.fArea),
189  fAreaEta(jet.fAreaEta),
190  fAreaPhi(jet.fAreaPhi),
191  fAreaE(jet.fAreaE),
192  fAreaEmc(jet.fAreaEmc),
193  fAxisInEmcal(jet.fAxisInEmcal),
194  fFlavourTagging(jet.fFlavourTagging),
195  fFlavourTracks((jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0),
196  fMaxCPt(jet.fMaxCPt),
197  fMaxNPt(jet.fMaxNPt),
198  fMCPt(jet.fMCPt),
199  fNn(jet.fNn),
200  fNch(jet.fNch),
201  fPtEmc(jet.fPtEmc),
202  fNEmc(jet.fNEmc),
203  fClusterIDs(jet.fClusterIDs),
204  fTrackIDs(jet.fTrackIDs),
205  fMatched(jet.fMatched),
206  fMatchingType(jet.fMatchingType),
207  fTaggedJet(jet.fTaggedJet),
208  fTagStatus(jet.fTagStatus),
209  fPtSub(jet.fPtSub),
210  fPtSubVect(jet.fPtSubVect),
211  fTriggers(jet.fTriggers),
212  fLabel(jet.fLabel),
213  fHasGhost(jet.fHasGhost),
214  fGhosts(jet.fGhosts),
215  fJetShapeProperties(0),
216  fJetAcceptanceType(jet.fJetAcceptanceType)
217 {
218  // Copy constructor.
219  fClosestJets[0] = jet.fClosestJets[0];
220  fClosestJets[1] = jet.fClosestJets[1];
223 
224  if (jet.fJetShapeProperties) {
226  }
227 }
228 
233 {
235 }
236 
243 {
244  if (this != &jet) {
245  AliVParticle::operator=(jet);
246  fPt = jet.fPt;
247  fEta = jet.fEta;
248  fPhi = jet.fPhi;
249  fM = jet.fM;
250  fNEF = jet.fNEF;
251  fArea = jet.fArea;
252  fAreaEta = jet.fAreaEta;
253  fAreaPhi = jet.fAreaPhi;
254  fAreaE = jet.fAreaE;
255  fAreaEmc = jet.fAreaEmc;
258  fFlavourTracks = (jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0;
259  fMaxCPt = jet.fMaxCPt;
260  fMaxNPt = jet.fMaxNPt;
261  fMCPt = jet.fMCPt;
262  fNn = jet.fNn;
263  fNch = jet.fNch;
264  fPtEmc = jet.fPtEmc;
265  fNEmc = jet.fNEmc;
266  fClusterIDs = jet.fClusterIDs;
267  fTrackIDs = jet.fTrackIDs;
268  fClosestJets[0] = jet.fClosestJets[0];
269  fClosestJets[1] = jet.fClosestJets[1];
272  fMatched = jet.fMatched;
273  fTaggedJet = jet.fTaggedJet;
274  fTagStatus = jet.fTagStatus;
275  fPtSub = jet.fPtSub;
276  fPtSubVect = jet.fPtSubVect;
277  fTriggers = jet.fTriggers;
278  fLabel = jet.fLabel;
279  fHasGhost = jet.fHasGhost;
280  fGhosts = jet.fGhosts;
281  if (jet.fJetShapeProperties) {
283  }
285  }
286 
287  return *this;
288 }
289 
296 {
297  //Return -1 if this is smaller than obj, 0 if objects are equal and 1 if this is larger than obj.
298 
299  if (obj == this) return 0;
300 
301  const AliEmcalJet* jet = dynamic_cast<const AliEmcalJet*>(obj);
302  if (!jet) return 0;
303 
304  if (Pt() > jet->Pt()) return -1;
305  else if (Pt() < jet->Pt()) return 1;
306  else return 0;
307 }
308 
313 void AliEmcalJet::GetMomentum(TLorentzVector& vec) const
314 {
315  vec.SetPtEtaPhiE(fPt, fEta, fPhi, E());
316 }
317 
326 {
327  Double_t ptcorr = fPt - rho * fArea;
328  if (save) fPtSub = ptcorr;
329  return ptcorr;
330 }
331 
340 {
341  Double_t dx = Px() - rho * fArea * TMath::Cos(fAreaPhi);
342  Double_t dy = Py() - rho * fArea * TMath::Sin(fAreaPhi);
343  //Double_t dz = Pz() - rho * fArea * TMath::SinH(fAreaEta);
344  Double_t ptcorr = TMath::Sqrt(dx * dx + dy * dy);
345  if (save) fPtSubVect = ptcorr;
346  return ptcorr;
347 }
348 
357 {
358  TLorentzVector vecCorr;
359  GetMomentum(vecCorr);
360  TLorentzVector vecBg;
361  vecBg.SetPtEtaPhiE(fArea, fAreaEta, fAreaPhi, fAreaE);
362  vecBg *= rho;
363  vecCorr -= vecBg;
364  if (save) {
365  Double_t dPhi = TMath::Abs(TVector2::Phi_mpi_pi(Phi() - vecCorr.Phi()));
366  Int_t signum = dPhi <= TMath::PiOver2() ? 1 : -1;
367  fPtSubVect = signum * vecCorr.Pt();
368  }
369  return vecCorr;
370 }
371 
377 {
378  std::sort(fClusterIDs.GetArray(), fClusterIDs.GetArray() + fClusterIDs.GetSize());
379  std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
380 }
381 
387 Double_t AliEmcalJet::DeltaR(const AliVParticle* part) const
388 {
389  Double_t dPhi = Phi() - part->Phi();
390  Double_t dEta = Eta() - part->Eta();
391  dPhi = TVector2::Phi_mpi_pi(dPhi);
392  return TMath::Sqrt(dPhi * dPhi + dEta * dEta);
393 }
394 
410 std::vector<int> AliEmcalJet::GetPtSortedTrackConstituentIndexes(TClonesArray* tracks) const
411 {
412  typedef std::pair<Double_t, Int_t> ptidx_pair;
413 
414  // Create vector for Pt sorting
415  std::vector<ptidx_pair> pair_list;
416 
417  for (Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++) {
418  AliVParticle* track = TrackAt(i_entry, tracks);
419  if (!track) {
420  AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)", i_entry, tracks->GetName(), TrackAt(i_entry), tracks->GetEntriesFast()));
421  continue;
422  }
423  pair_list.push_back(std::make_pair(track->Pt(), i_entry));
424  }
425 
426  std::stable_sort(pair_list.begin() , pair_list.end() , sort_descend());
427 
428  // return a vector of indexes of constituents (sorted descending by pt)
429  std::vector <int> index_sorted_list;
430 
431  // populating the return object with indexes of sorted tracks
432  for (auto it : pair_list) index_sorted_list.push_back(it.second);
433 
434  return index_sorted_list;
435 }
436 
444 Double_t AliEmcalJet::GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
445 {
446  Double_t pJetSq = P();
447  pJetSq *= pJetSq;
448 
449  if (pJetSq > 1e-6) {
450  return (trkPx * Px() + trkPy * Py() + trkPz * Pz()) / pJetSq;
451  }
452  else {
453  AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f", GetName(), pJetSq));
454  return -1;
455  }
456 }
457 
463 Double_t AliEmcalJet::GetZ(const AliVParticle* trk) const
464 {
465  return GetZ(trk->Px(), trk->Py(), trk->Pz());
466 }
467 
473 AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray* tracks) const
474 {
475  AliVParticle* maxTrack = 0;
476  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
477  AliVParticle* track = TrackAt(i, tracks);
478  if (!track) {
479  AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)",
480  i, tracks->GetName(), TrackAt(i), tracks->GetEntriesFast()));
481  continue;
482  }
483  if (!maxTrack || track->Pt() > maxTrack->Pt())
484  maxTrack = track;
485  }
486 
487  return maxTrack;
488 }
489 
495 AliVCluster* AliEmcalJet::GetLeadingCluster(TClonesArray* clusters) const
496 {
497  AliVCluster* maxCluster = 0;
498  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
499  AliVCluster* cluster = ClusterAt(i, clusters);
500  if (!cluster) {
501  AliError(Form("Unable to find jet cluster %d in collection %s (pos in collection %d, max %d)",
502  i, clusters->GetName(), ClusterAt(i), clusters->GetEntriesFast()));
503  continue;
504  }
505  if (!maxCluster || cluster->E() > maxCluster->E())
506  maxCluster = cluster;
507  }
508 
509  return maxCluster;
510 }
511 
516 {
517  fClosestJets[0] = 0;
518  fClosestJets[1] = 0;
519  fClosestJetsDist[0] = 999;
520  fClosestJetsDist[1] = 999;
521  fMatched = 2;
522 }
523 
530 {
531  for (Int_t i = 0; i < fTrackIDs.GetSize(); i++) {
532  if (it == fTrackIDs[i]) return i;
533  }
534  return -1;
535 }
536 
543 {
544  for (Int_t i = 0; i < fClusterIDs.GetSize(); i++) {
545  if (ic == fClusterIDs[i]) return i;
546  }
547  return -1;
548 }
549 
563  return TString::Format("Jet pT = %.2f, eta = %.2f, phi = %.2f, max charged pT = %.2f, max neutral pT = %.2f, N tracks = %d, N clusters = %d, Area = %.2f, NEF = %.2f",
565 }
566 
573 void AliEmcalJet::Print(Option_t* /*opt*/) const
574 {
575  Printf("%s\n", toString().Data());
576 }
577 
584 std::ostream &AliEmcalJet::Print(std::ostream &in) const {
585  in << toString().Data();
586  return in;
587 }
588 
594 void AliEmcalJet::PrintConstituents(TClonesArray* tracks, TClonesArray* clusters) const
595 {
596  if (tracks) {
597  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
598  AliVParticle* part = TrackAt(i, tracks);
599  if (part) {
600  Printf("Track %d (index = %d) pT = %.2f, eta = %.2f, phi = %.2f, PDG code = %d", i, TrackAt(i), part->Pt(), part->Eta(), part->Phi(), part->PdgCode());
601  }
602  }
603  }
604 
605  if (clusters) {
606  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
607  AliVCluster* clus = ClusterAt(i, clusters);
608  if (clus) {
609  Printf("Cluster %d (index = %d) E = %.2f", i, ClusterAt(i), clus->E());
610  }
611  }
612  }
613 }
614 
621 {
622  if (P() < 1e-6) return 0.;
623  AliVParticle* hftrack = GetFlavourTrack(i);
624  return hftrack != 0 ? hftrack->P() / P() : 0.;
625 }
626 
634 std::ostream &operator<<(std::ostream &in, const AliEmcalJet &myjet) {
635  std::ostream &result = myjet.Print(in);
636  return result;
637 }
638 
647 void AliEmcalJet::AddGhost(const Double_t dPx, const Double_t dPy, const Double_t dPz, const Double_t dE)
648 {
649  TLorentzVector ghost(dPx, dPy, dPz, dE);
650  fGhosts.push_back(ghost);
651  if (!fHasGhost) fHasGhost = kTRUE;
652  return;
653 }
654 
658 void AliEmcalJet::Clear(Option_t */*option*/)
659 {
660  fClusterIDs.Set(0);
661  fTrackIDs.Set(0);
662  fClosestJets[0] = 0;
663  fClosestJets[1] = 0;
664  fClosestJetsDist[0] = 0;
665  fClosestJetsDist[1] = 0;
666  fMatched = 0;
667  fPtSub = 0;
668  fGhosts.clear();
669  fHasGhost = kFALSE;
670 }
671 
678 AliVParticle* AliEmcalJet::TrackAt(Int_t idx, TClonesArray *ta) const
679 {
680  if (!ta) return 0;
681  return dynamic_cast<AliVParticle*>(ta->At(TrackAt(idx)));
682 }
683 
690 Int_t AliEmcalJet::ContainsTrack(AliVParticle* track, TClonesArray* tracks) const
691 {
692  if (!tracks || !track) return 0;
693  return ContainsTrack(tracks->IndexOf(track));
694 }
695 
702 AliVCluster* AliEmcalJet::ClusterAt(Int_t idx, TClonesArray *ca) const
703 {
704  if (!ca) return 0;
705  return dynamic_cast<AliVCluster*>(ca->At(ClusterAt(idx)));
706 }
707 
714 Int_t AliEmcalJet::ContainsCluster(AliVCluster* cluster, TClonesArray* clusters) const
715 {
716  if (!clusters || !cluster) return 0;
717  return ContainsCluster(clusters->IndexOf(cluster));
718 }
719 
725 Double_t AliEmcalJet::GetXi(const AliVParticle* trk) const
726 {
727  return TMath::Log(1 / GetZ(trk));
728 }
729 
737 Double_t AliEmcalJet::GetXi( const Double_t trkPx, const Double_t trkPy, const Double_t trkPz ) const
738 {
739  return TMath::Log(1 / GetZ(trkPx, trkPy, trkPz));
740 }
741 
746 void AliEmcalJet::AddFlavourTrack(AliVParticle* hftrack)
747 {
749  fFlavourTracks->Add(hftrack);
750 }
751 
757 AliVParticle* AliEmcalJet::GetFlavourTrack(Int_t i) const
758 {
759  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
760 
761  return static_cast<AliVParticle*>(fFlavourTracks->At(i));
762 }
763 
770 {
771  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
772 
773  return static_cast<AliVParticle*>(fFlavourTracks->RemoveAt(i));
774 }
TArrayI fTrackIDs
Array containing ids of track constituents.
Definition: AliEmcalJet.h:296
Double_t fPtSubVect
! Background vector subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:304
Double_t Area() const
Definition: AliEmcalJet.h:123
std::pair< Double_t, Int_t > ptidx_pair
(pt,index) pair
double Double_t
Definition: External.C:58
Int_t fTagStatus
! Status of tagging -1: NA 0: not tagged 1: tagged
Definition: AliEmcalJet.h:302
Double_t GetXi(const AliVParticle *trk) const
Simple C structure to allow sorting in descending order.
Definition: AliEmcalJet.h:319
Double32_t fAreaE
Jet temporal area component.
Definition: AliEmcalJet.h:279
TArrayI fClusterIDs
Array containing ids of cluster constituents.
Definition: AliEmcalJet.h:295
Double_t Eta() const
Definition: AliEmcalJet.h:114
Int_t fLabel
! Label to inclusive jet for constituent subtracted jet
Definition: AliEmcalJet.h:306
Double_t fPtSub
! Background subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:303
Double_t Py() const
Definition: AliEmcalJet.h:100
void Clear(Option_t *="")
Double_t Phi() const
Definition: AliEmcalJet.h:110
Bool_t fHasGhost
! Whether ghost particle are included within the constituents
Definition: AliEmcalJet.h:308
AliEmcalJetShapeProperties * fJetShapeProperties
! Pointer to the jet shape properties
Definition: AliEmcalJet.h:311
Double_t MaxChargedPt() const
Definition: AliEmcalJet.h:140
AliEmcalJet & operator=(const AliEmcalJet &jet)
Double_t GetFlavourTrackZ(Int_t i=0) const
Double_t E() const
Definition: AliEmcalJet.h:112
AliVParticle * GetFlavourTrack(Int_t i=0) const
AliVParticle * RemoveFlavourTrack(Int_t i=0)
Int_t ContainsCluster(AliVCluster *cluster, TClonesArray *clusters) const
UShort_t GetNumberOfTracks() const
Definition: AliEmcalJet.h:132
Double_t Px() const
Definition: AliEmcalJet.h:99
std::ostream & Print(std::ostream &in) const
void ResetMatching()
void GetMomentum(TLorentzVector &vec) const
Double32_t fMCPt
Pt from MC particles contributing to the jet.
Definition: AliEmcalJet.h:289
Double32_t fMaxNPt
Pt of maximum neutral constituent.
Definition: AliEmcalJet.h:288
Double32_t fM
Jet mass.
Definition: AliEmcalJet.h:269
Short_t ClusterAt(Int_t idx) const
Definition: AliEmcalJet.h:130
int Int_t
Definition: External.C:63
UShort_t GetNumberOfClusters() const
Definition: AliEmcalJet.h:131
AliVParticle * GetLeadingTrack(TClonesArray *tracks) const
Double32_t fAreaPhi
Jet phi area.
Definition: AliEmcalJet.h:277
void AddFlavourTrack(AliVParticle *hftrack)
UShort_t fMatched
! 0 or 1 if it is matched with one of the closest jets; 2 if it is not matched
Definition: AliEmcalJet.h:299
std::vector< TLorentzVector > fGhosts
! Vector containing the ghost particles
Definition: AliEmcalJet.h:309
TString toString() const
Double_t PtSubVect() const
Definition: AliEmcalJet.h:152
Double32_t fArea
Jet transverse area.
Definition: AliEmcalJet.h:273
AliVCluster * GetLeadingCluster(TClonesArray *clusters) const
AliEmcalJet * fTaggedJet
! Jet tagged to this jet
Definition: AliEmcalJet.h:301
Int_t ContainsTrack(AliVParticle *track, TClonesArray *tracks) const
TLorentzVector SubtractRhoVect(Double_t rho, Bool_t save=kFALSE)
std::ostream & operator<<(std::ostream &in, const AliEmcalJet &myjet)
virtual ~AliEmcalJet()
Double_t PtSub() const
Definition: AliEmcalJet.h:151
Double32_t fAreaEta
Jet eta area.
Definition: AliEmcalJet.h:275
Double_t MaxNeutralPt() const
Definition: AliEmcalJet.h:139
void AddGhost(const Double_t dPx, const Double_t dPy, const Double_t dPz, const Double_t dE)
Double_t GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
Int_t fFlavourTagging
Tag jet with a flavor (use bits defined in enum EFlavourTag)
Definition: AliEmcalJet.h:283
Double_t DeltaR(const AliVParticle *part) const
Bool_t Data(TH1F *h, Double_t *rangefit, Bool_t writefit, Double_t &sgn, Double_t &errsgn, Double_t &bkg, Double_t &errbkg, Double_t &sgnf, Double_t &errsgnf, Double_t &sigmafit, Int_t &status)
UInt_t fJetAcceptanceType
! Jet acceptance type (stored bitwise)
Definition: AliEmcalJet.h:312
Double_t Pt() const
Definition: AliEmcalJet.h:102
Double32_t fPtEmc
Pt in EMCAL acceptance.
Definition: AliEmcalJet.h:293
This class contains the derivative subtraction operators for jet shapes.
Double32_t fPt
Jet transverse momentum.
Definition: AliEmcalJet.h:263
Double_t P() const
Definition: AliEmcalJet.h:103
Double32_t fEta
Jet pseudo-rapidity.
Definition: AliEmcalJet.h:265
Double32_t fMaxCPt
Pt of maximum charged constituent.
Definition: AliEmcalJet.h:286
Short_t TrackAt(Int_t idx) const
Definition: AliEmcalJet.h:153
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Double32_t fAreaEmc
Area on EMCAL surface (determined by ghosts in EMCal acceptance)
Definition: AliEmcalJet.h:281
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Int_t fNn
Number of neutral constituents.
Definition: AliEmcalJet.h:290
Double_t Pz() const
Definition: AliEmcalJet.h:101
const char Option_t
Definition: External.C:48
UInt_t fTriggers
! Triggers that the jet might have fired (AliVEvent::EOfflineTriggerTypes)
Definition: AliEmcalJet.h:305
Bool_t fAxisInEmcal
Whether the jet axis is inside the EMCAL acceptance.
Definition: AliEmcalJet.h:282
void SortConstituents()
Int_t fNEmc
Number of constituents in EMCAL acceptance.
Definition: AliEmcalJet.h:294
Double32_t fPhi
Jet axis azimuthal angle.
Definition: AliEmcalJet.h:267
AliEmcalJet * fClosestJets[2]
! If this is MC it contains the two closest detector level jets in order of distance and viceversa ...
Definition: AliEmcalJet.h:297
bool Bool_t
Definition: External.C:53
Double_t NEF() const
Definition: AliEmcalJet.h:141
Double32_t fNEF
Jet Neutral Energy Fraction.
Definition: AliEmcalJet.h:271
Double32_t fClosestJetsDist[2]
! Distance from the two closest jets
Definition: AliEmcalJet.h:298
Int_t Compare(const TObject *obj) const
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
TObjArray * fFlavourTracks
Definition: AliEmcalJet.h:284
void PrintConstituents(TClonesArray *tracks, TClonesArray *clusters) const