AliPhysics  f05a842 (f05a842)
 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 {
63  fClosestJets[0] = 0;
64  fClosestJets[1] = 0;
65  fClosestJetsDist[0] = 999;
66  fClosestJetsDist[1] = 999;
67 }
68 
77  AliVParticle(),
78  fPt(TMath::Sqrt(px * px + py* py)),
79  fEta(TMath::ASinH(pz / fPt)),
80  fPhi(0),
81  fM(0),
82  fNEF(0),
83  fArea(0),
84  fAreaEta(0),
85  fAreaPhi(0),
86  fAreaE(0),
87  fAreaEmc(-1),
88  fAxisInEmcal(0),
89  fFlavourTagging(0),
90  fFlavourTracks(0),
91  fMaxCPt(0),
92  fMaxNPt(0),
93  fMCPt(0),
94  fNn(0),
95  fNch(0),
96  fPtEmc(0),
97  fNEmc(0),
98  fClusterIDs(),
99  fTrackIDs(),
100  fMatched(2),
101  fMatchingType(0),
102  fTaggedJet(0x0),
103  fTagStatus(-1),
104  fPtSub(0),
105  fPtSubVect(0),
106  fTriggers(0),
107  fLabel(-1),
108  fHasGhost(kFALSE),
109  fGhosts(),
110  fJetShapeProperties(0)
111 {
112  if (fPt != 0) {
113  fPhi = TVector2::Phi_0_2pi(TMath::ATan2(py, px));
114  }
115 
116  fClosestJets[0] = 0;
117  fClosestJets[1] = 0;
118  fClosestJetsDist[0] = 999;
119  fClosestJetsDist[1] = 999;
120 }
121 
131  AliVParticle(),
132  fPt(pt),
133  fEta(eta),
134  fPhi(phi),
135  fM(m),
136  fNEF(0),
137  fArea(0),
138  fAreaEta(0),
139  fAreaPhi(0),
140  fAreaE(0),
141  fAreaEmc(-1),
142  fAxisInEmcal(0),
143  fFlavourTagging(0),
144  fFlavourTracks(0),
145  fMaxCPt(0),
146  fMaxNPt(0),
147  fMCPt(0),
148  fNn(0),
149  fNch(0),
150  fPtEmc(0),
151  fNEmc(0),
152  fClusterIDs(),
153  fTrackIDs(),
154  fMatched(2),
155  fMatchingType(0),
156  fTaggedJet(0x0),
157  fTagStatus(-1),
158  fPtSub(0),
159  fPtSubVect(0),
160  fTriggers(0),
161  fLabel(-1),
162  fHasGhost(kFALSE),
163  fGhosts(),
164  fJetShapeProperties(0),
165  fJetAcceptanceType(0)
166 {
167  fPhi = TVector2::Phi_0_2pi(fPhi);
168 
169  fClosestJets[0] = 0;
170  fClosestJets[1] = 0;
171  fClosestJetsDist[0] = 999;
172  fClosestJetsDist[1] = 999;
173 }
174 
180  AliVParticle(jet),
181  fPt(jet.fPt),
182  fEta(jet.fEta),
183  fPhi(jet.fPhi),
184  fM(jet.fM),
185  fNEF(jet.fNEF),
186  fArea(jet.fArea),
187  fAreaEta(jet.fAreaEta),
188  fAreaPhi(jet.fAreaPhi),
189  fAreaE(jet.fAreaE),
190  fAreaEmc(jet.fAreaEmc),
191  fAxisInEmcal(jet.fAxisInEmcal),
192  fFlavourTagging(jet.fFlavourTagging),
193  fFlavourTracks((jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0),
194  fMaxCPt(jet.fMaxCPt),
195  fMaxNPt(jet.fMaxNPt),
196  fMCPt(jet.fMCPt),
197  fNn(jet.fNn),
198  fNch(jet.fNch),
199  fPtEmc(jet.fPtEmc),
200  fNEmc(jet.fNEmc),
201  fClusterIDs(jet.fClusterIDs),
202  fTrackIDs(jet.fTrackIDs),
203  fMatched(jet.fMatched),
204  fMatchingType(jet.fMatchingType),
205  fTaggedJet(jet.fTaggedJet),
206  fTagStatus(jet.fTagStatus),
207  fPtSub(jet.fPtSub),
208  fPtSubVect(jet.fPtSubVect),
209  fTriggers(jet.fTriggers),
210  fLabel(jet.fLabel),
211  fHasGhost(jet.fHasGhost),
212  fGhosts(jet.fGhosts),
213  fJetShapeProperties(0),
214  fJetAcceptanceType(0)
215 {
216  // Copy constructor.
217  fClosestJets[0] = jet.fClosestJets[0];
218  fClosestJets[1] = jet.fClosestJets[1];
221 
222  if (jet.fJetShapeProperties) {
224  }
225 }
226 
231 {
233 }
234 
241 {
242  if (this != &jet) {
243  AliVParticle::operator=(jet);
244  fPt = jet.fPt;
245  fEta = jet.fEta;
246  fPhi = jet.fPhi;
247  fM = jet.fM;
248  fNEF = jet.fNEF;
249  fArea = jet.fArea;
250  fAreaEta = jet.fAreaEta;
251  fAreaPhi = jet.fAreaPhi;
252  fAreaE = jet.fAreaE;
253  fAreaEmc = jet.fAreaEmc;
256  fFlavourTracks = (jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0;
257  fMaxCPt = jet.fMaxCPt;
258  fMaxNPt = jet.fMaxNPt;
259  fMCPt = jet.fMCPt;
260  fNn = jet.fNn;
261  fNch = jet.fNch;
262  fPtEmc = jet.fPtEmc;
263  fNEmc = jet.fNEmc;
264  fClusterIDs = jet.fClusterIDs;
265  fTrackIDs = jet.fTrackIDs;
266  fClosestJets[0] = jet.fClosestJets[0];
267  fClosestJets[1] = jet.fClosestJets[1];
270  fMatched = jet.fMatched;
271  fTaggedJet = jet.fTaggedJet;
272  fTagStatus = jet.fTagStatus;
273  fPtSub = jet.fPtSub;
274  fPtSubVect = jet.fPtSubVect;
275  fTriggers = jet.fTriggers;
276  fLabel = jet.fLabel;
277  fHasGhost = jet.fHasGhost;
278  fGhosts = jet.fGhosts;
279  if (jet.fJetShapeProperties) {
281  }
283  }
284 
285  return *this;
286 }
287 
294 {
295  //Return -1 if this is smaller than obj, 0 if objects are equal and 1 if this is larger than obj.
296 
297  if (obj == this) return 0;
298 
299  const AliEmcalJet* jet = dynamic_cast<const AliEmcalJet*>(obj);
300  if (!jet) return 0;
301 
302  if (Pt() > jet->Pt()) return -1;
303  else if (Pt() < jet->Pt()) return 1;
304  else return 0;
305 }
306 
311 void AliEmcalJet::GetMomentum(TLorentzVector& vec) const
312 {
313  vec.SetPtEtaPhiE(fPt, fEta, fPhi, E());
314 }
315 
324 {
325  Double_t ptcorr = fPt - rho * fArea;
326  if (save) fPtSub = ptcorr;
327  return ptcorr;
328 }
329 
338 {
339  Double_t dx = Px() - rho * fArea * TMath::Cos(fAreaPhi);
340  Double_t dy = Py() - rho * fArea * TMath::Sin(fAreaPhi);
341  //Double_t dz = Pz() - rho * fArea * TMath::SinH(fAreaEta);
342  Double_t ptcorr = TMath::Sqrt(dx * dx + dy * dy);
343  if (save) fPtSubVect = ptcorr;
344  return ptcorr;
345 }
346 
355 {
356  TLorentzVector vecCorr;
357  GetMomentum(vecCorr);
358  TLorentzVector vecBg;
359  vecBg.SetPtEtaPhiE(fArea, fAreaEta, fAreaPhi, fAreaE);
360  vecBg *= rho;
361  vecCorr -= vecBg;
362  if (save) {
363  Double_t dPhi = TMath::Abs(TVector2::Phi_mpi_pi(Phi() - vecCorr.Phi()));
364  Int_t signum = dPhi <= TMath::PiOver2() ? 1 : -1;
365  fPtSubVect = signum * vecCorr.Pt();
366  }
367  return vecCorr;
368 }
369 
375 {
376  std::sort(fClusterIDs.GetArray(), fClusterIDs.GetArray() + fClusterIDs.GetSize());
377  std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
378 }
379 
385 Double_t AliEmcalJet::DeltaR(const AliVParticle* part) const
386 {
387  Double_t dPhi = Phi() - part->Phi();
388  Double_t dEta = Eta() - part->Eta();
389  dPhi = TVector2::Phi_mpi_pi(dPhi);
390  return TMath::Sqrt(dPhi * dPhi + dEta * dEta);
391 }
392 
408 std::vector<int> AliEmcalJet::GetPtSortedTrackConstituentIndexes(TClonesArray* tracks) const
409 {
410  typedef std::pair<Double_t, Int_t> ptidx_pair;
411 
412  // Create vector for Pt sorting
413  std::vector<ptidx_pair> pair_list;
414 
415  for (Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++) {
416  AliVParticle* track = TrackAt(i_entry, tracks);
417  if (!track) {
418  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()));
419  continue;
420  }
421  pair_list.push_back(std::make_pair(track->Pt(), i_entry));
422  }
423 
424  std::stable_sort(pair_list.begin() , pair_list.end() , sort_descend());
425 
426  // return a vector of indexes of constituents (sorted descending by pt)
427  std::vector <int> index_sorted_list;
428 
429  // populating the return object with indexes of sorted tracks
430  for (auto it : pair_list) index_sorted_list.push_back(it.second);
431 
432  return index_sorted_list;
433 }
434 
442 Double_t AliEmcalJet::GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
443 {
444  Double_t pJetSq = P();
445  pJetSq *= pJetSq;
446 
447  if (pJetSq > 1e-6) {
448  return (trkPx * Px() + trkPy * Py() + trkPz * Pz()) / pJetSq;
449  }
450  else {
451  AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f", GetName(), pJetSq));
452  return -1;
453  }
454 }
455 
461 Double_t AliEmcalJet::GetZ(const AliVParticle* trk) const
462 {
463  return GetZ(trk->Px(), trk->Py(), trk->Pz());
464 }
465 
471 AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray* tracks) const
472 {
473  AliVParticle* maxTrack = 0;
474  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
475  AliVParticle* track = TrackAt(i, tracks);
476  if (!track) {
477  AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)",
478  i, tracks->GetName(), TrackAt(i), tracks->GetEntriesFast()));
479  continue;
480  }
481  if (!maxTrack || track->Pt() > maxTrack->Pt())
482  maxTrack = track;
483  }
484 
485  return maxTrack;
486 }
487 
493 AliVCluster* AliEmcalJet::GetLeadingCluster(TClonesArray* clusters) const
494 {
495  AliVCluster* maxCluster = 0;
496  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
497  AliVCluster* cluster = ClusterAt(i, clusters);
498  if (!cluster) {
499  AliError(Form("Unable to find jet cluster %d in collection %s (pos in collection %d, max %d)",
500  i, clusters->GetName(), ClusterAt(i), clusters->GetEntriesFast()));
501  continue;
502  }
503  if (!maxCluster || cluster->E() > maxCluster->E())
504  maxCluster = cluster;
505  }
506 
507  return maxCluster;
508 }
509 
514 {
515  fClosestJets[0] = 0;
516  fClosestJets[1] = 0;
517  fClosestJetsDist[0] = 999;
518  fClosestJetsDist[1] = 999;
519  fMatched = 2;
520 }
521 
528 {
529  for (Int_t i = 0; i < fTrackIDs.GetSize(); i++) {
530  if (it == fTrackIDs[i]) return i;
531  }
532  return -1;
533 }
534 
541 {
542  for (Int_t i = 0; i < fClusterIDs.GetSize(); i++) {
543  if (ic == fClusterIDs[i]) return i;
544  }
545  return -1;
546 }
547 
561  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",
563 }
564 
571 void AliEmcalJet::Print(Option_t* /*opt*/) const
572 {
573  Printf("%s\n", toString().Data());
574 }
575 
582 std::ostream &AliEmcalJet::Print(std::ostream &in) const {
583  in << toString().Data();
584  return in;
585 }
586 
592 void AliEmcalJet::PrintConstituents(TClonesArray* tracks, TClonesArray* clusters) const
593 {
594  if (tracks) {
595  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
596  AliVParticle* part = TrackAt(i, tracks);
597  if (part) {
598  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());
599  }
600  }
601  }
602 
603  if (clusters) {
604  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
605  AliVCluster* clus = ClusterAt(i, clusters);
606  if (clus) {
607  Printf("Cluster %d (index = %d) E = %.2f", i, ClusterAt(i), clus->E());
608  }
609  }
610  }
611 }
612 
619 {
620  if (P() < 1e-6) return 0.;
621  AliVParticle* hftrack = GetFlavourTrack(i);
622  return hftrack != 0 ? hftrack->P() / P() : 0.;
623 }
624 
632 std::ostream &operator<<(std::ostream &in, const AliEmcalJet &myjet) {
633  std::ostream &result = myjet.Print(in);
634  return result;
635 }
636 
645 void AliEmcalJet::AddGhost(const Double_t dPx, const Double_t dPy, const Double_t dPz, const Double_t dE)
646 {
647  TLorentzVector ghost(dPx, dPy, dPz, dE);
648  fGhosts.push_back(ghost);
649  if (!fHasGhost) fHasGhost = kTRUE;
650  return;
651 }
652 
656 void AliEmcalJet::Clear(Option_t */*option*/)
657 {
658  fClusterIDs.Set(0);
659  fTrackIDs.Set(0);
660  fClosestJets[0] = 0;
661  fClosestJets[1] = 0;
662  fClosestJetsDist[0] = 0;
663  fClosestJetsDist[1] = 0;
664  fMatched = 0;
665  fPtSub = 0;
666  fGhosts.clear();
667  fHasGhost = kFALSE;
668 }
669 
676 AliVParticle* AliEmcalJet::TrackAt(Int_t idx, TClonesArray *ta) const
677 {
678  if (!ta) return 0;
679  return dynamic_cast<AliVParticle*>(ta->At(TrackAt(idx)));
680 }
681 
688 Int_t AliEmcalJet::ContainsTrack(AliVParticle* track, TClonesArray* tracks) const
689 {
690  if (!tracks || !track) return 0;
691  return ContainsTrack(tracks->IndexOf(track));
692 }
693 
700 AliVCluster* AliEmcalJet::ClusterAt(Int_t idx, TClonesArray *ca) const
701 {
702  if (!ca) return 0;
703  return dynamic_cast<AliVCluster*>(ca->At(ClusterAt(idx)));
704 }
705 
712 Int_t AliEmcalJet::ContainsCluster(AliVCluster* cluster, TClonesArray* clusters) const
713 {
714  if (!clusters || !cluster) return 0;
715  return ContainsCluster(clusters->IndexOf(cluster));
716 }
717 
723 Double_t AliEmcalJet::GetXi(const AliVParticle* trk) const
724 {
725  return TMath::Log(1 / GetZ(trk));
726 }
727 
735 Double_t AliEmcalJet::GetXi( const Double_t trkPx, const Double_t trkPy, const Double_t trkPz ) const
736 {
737  return TMath::Log(1 / GetZ(trkPx, trkPy, trkPz));
738 }
739 
744 void AliEmcalJet::AddFlavourTrack(AliVParticle* hftrack)
745 {
747  fFlavourTracks->Add(hftrack);
748 }
749 
755 AliVParticle* AliEmcalJet::GetFlavourTrack(Int_t i) const
756 {
757  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
758 
759  return static_cast<AliVParticle*>(fFlavourTracks->At(i));
760 }
761 
768 {
769  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
770 
771  return static_cast<AliVParticle*>(fFlavourTracks->RemoveAt(i));
772 }
TArrayI fTrackIDs
Array containing ids of track constituents.
Definition: AliEmcalJet.h:287
Double_t fPtSubVect
! Background vector subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:295
Double_t Area() const
Definition: AliEmcalJet.h:114
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:293
Double_t GetXi(const AliVParticle *trk) const
Simple C structure to allow sorting in descending order.
Definition: AliEmcalJet.h:310
Double32_t fAreaE
Jet temporal area component.
Definition: AliEmcalJet.h:270
TArrayI fClusterIDs
Array containing ids of cluster constituents.
Definition: AliEmcalJet.h:286
Double_t Eta() const
Definition: AliEmcalJet.h:105
Int_t fLabel
! Label to inclusive jet for constituent subtracted jet
Definition: AliEmcalJet.h:297
Double_t fPtSub
! Background subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:294
Double_t Py() const
Definition: AliEmcalJet.h:91
void Clear(Option_t *="")
Double_t Phi() const
Definition: AliEmcalJet.h:101
Bool_t fHasGhost
! Whether ghost particle are included within the constituents
Definition: AliEmcalJet.h:299
AliEmcalJetShapeProperties * fJetShapeProperties
! Pointer to the jet shape properties
Definition: AliEmcalJet.h:302
Double_t MaxChargedPt() const
Definition: AliEmcalJet.h:131
AliEmcalJet & operator=(const AliEmcalJet &jet)
Double_t GetFlavourTrackZ(Int_t i=0) const
Double_t E() const
Definition: AliEmcalJet.h:103
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:123
Double_t Px() const
Definition: AliEmcalJet.h:90
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:280
Double32_t fMaxNPt
Pt of maximum neutral constituent.
Definition: AliEmcalJet.h:279
Double32_t fM
Jet mass.
Definition: AliEmcalJet.h:260
Short_t ClusterAt(Int_t idx) const
Definition: AliEmcalJet.h:121
int Int_t
Definition: External.C:63
UShort_t GetNumberOfClusters() const
Definition: AliEmcalJet.h:122
AliVParticle * GetLeadingTrack(TClonesArray *tracks) const
Double32_t fAreaPhi
Jet phi area.
Definition: AliEmcalJet.h:268
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:290
std::vector< TLorentzVector > fGhosts
! Vector containing the ghost particles
Definition: AliEmcalJet.h:300
TString toString() const
Double_t PtSubVect() const
Definition: AliEmcalJet.h:143
Double32_t fArea
Jet transverse area.
Definition: AliEmcalJet.h:264
AliVCluster * GetLeadingCluster(TClonesArray *clusters) const
AliEmcalJet * fTaggedJet
! Jet tagged to this jet
Definition: AliEmcalJet.h:292
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:142
Double32_t fAreaEta
Jet eta area.
Definition: AliEmcalJet.h:266
Double_t MaxNeutralPt() const
Definition: AliEmcalJet.h:130
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:274
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:303
Double_t Pt() const
Definition: AliEmcalJet.h:93
Double32_t fPtEmc
Pt in EMCAL acceptance.
Definition: AliEmcalJet.h:284
This class contains the derivative subtraction operators for jet shapes.
Double32_t fPt
Jet transverse momentum.
Definition: AliEmcalJet.h:254
Double_t P() const
Definition: AliEmcalJet.h:94
Double32_t fEta
Jet pseudo-rapidity.
Definition: AliEmcalJet.h:256
Double32_t fMaxCPt
Pt of maximum charged constituent.
Definition: AliEmcalJet.h:277
Short_t TrackAt(Int_t idx) const
Definition: AliEmcalJet.h:144
ClassImp(AliAnalysisTaskCRC) AliAnalysisTaskCRC
Double32_t fAreaEmc
Area on EMCAL surface (determined by ghosts in EMCal acceptance)
Definition: AliEmcalJet.h:272
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Int_t fNn
Number of neutral constituents.
Definition: AliEmcalJet.h:281
Double_t Pz() const
Definition: AliEmcalJet.h:92
const char Option_t
Definition: External.C:48
UInt_t fTriggers
! Triggers that the jet might have fired (AliVEvent::EOfflineTriggerTypes)
Definition: AliEmcalJet.h:296
Bool_t fAxisInEmcal
Whether the jet axis is inside the EMCAL acceptance.
Definition: AliEmcalJet.h:273
void SortConstituents()
Int_t fNEmc
Number of constituents in EMCAL acceptance.
Definition: AliEmcalJet.h:285
Double32_t fPhi
Jet axis azimuthal angle.
Definition: AliEmcalJet.h:258
AliEmcalJet * fClosestJets[2]
! If this is MC it contains the two closest detector level jets in order of distance and viceversa ...
Definition: AliEmcalJet.h:288
bool Bool_t
Definition: External.C:53
Double_t NEF() const
Definition: AliEmcalJet.h:132
Double32_t fNEF
Jet Neutral Energy Fraction.
Definition: AliEmcalJet.h:262
Double32_t fClosestJetsDist[2]
! Distance from the two closest jets
Definition: AliEmcalJet.h:289
Int_t Compare(const TObject *obj) const
std::vector< int > GetPtSortedTrackConstituentIndexes(TClonesArray *tracks) const
TObjArray * fFlavourTracks
Definition: AliEmcalJet.h:275
void PrintConstituents(TClonesArray *tracks, TClonesArray *clusters) const