AliPhysics  a9863a5 (a9863a5)
 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 
76 AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz) :
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 
130 AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) :
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 {
166  fPhi = TVector2::Phi_0_2pi(fPhi);
167 
168  fClosestJets[0] = 0;
169  fClosestJets[1] = 0;
170  fClosestJetsDist[0] = 999;
171  fClosestJetsDist[1] = 999;
172 }
173 
179  AliVParticle(jet),
180  fPt(jet.fPt),
181  fEta(jet.fEta),
182  fPhi(jet.fPhi),
183  fM(jet.fM),
184  fNEF(jet.fNEF),
185  fArea(jet.fArea),
186  fAreaEta(jet.fAreaEta),
187  fAreaPhi(jet.fAreaPhi),
188  fAreaE(jet.fAreaE),
189  fAreaEmc(jet.fAreaEmc),
190  fAxisInEmcal(jet.fAxisInEmcal),
191  fFlavourTagging(jet.fFlavourTagging),
192  fFlavourTracks((jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0),
193  fMaxCPt(jet.fMaxCPt),
194  fMaxNPt(jet.fMaxNPt),
195  fMCPt(jet.fMCPt),
196  fNn(jet.fNn),
197  fNch(jet.fNch),
198  fPtEmc(jet.fPtEmc),
199  fNEmc(jet.fNEmc),
200  fClusterIDs(jet.fClusterIDs),
201  fTrackIDs(jet.fTrackIDs),
202  fMatched(jet.fMatched),
203  fMatchingType(jet.fMatchingType),
204  fTaggedJet(jet.fTaggedJet),
205  fTagStatus(jet.fTagStatus),
206  fPtSub(jet.fPtSub),
207  fPtSubVect(jet.fPtSubVect),
208  fTriggers(jet.fTriggers),
209  fLabel(jet.fLabel),
210  fHasGhost(jet.fHasGhost),
211  fGhosts(jet.fGhosts),
212  fJetShapeProperties(0)
213 {
214  // Copy constructor.
215  fClosestJets[0] = jet.fClosestJets[0];
216  fClosestJets[1] = jet.fClosestJets[1];
219 
220  if (jet.fJetShapeProperties) {
222  }
223 }
224 
229 {
231 }
232 
239 {
240  if (this != &jet) {
241  AliVParticle::operator=(jet);
242  fPt = jet.fPt;
243  fEta = jet.fEta;
244  fPhi = jet.fPhi;
245  fM = jet.fM;
246  fNEF = jet.fNEF;
247  fArea = jet.fArea;
248  fAreaEta = jet.fAreaEta;
249  fAreaPhi = jet.fAreaPhi;
250  fAreaE = jet.fAreaE;
251  fAreaEmc = jet.fAreaEmc;
254  fFlavourTracks = (jet.fFlavourTracks) ? new TObjArray(*(jet.fFlavourTracks)) : 0;
255  fMaxCPt = jet.fMaxCPt;
256  fMaxNPt = jet.fMaxNPt;
257  fMCPt = jet.fMCPt;
258  fNn = jet.fNn;
259  fNch = jet.fNch;
260  fPtEmc = jet.fPtEmc;
261  fNEmc = jet.fNEmc;
262  fClusterIDs = jet.fClusterIDs;
263  fTrackIDs = jet.fTrackIDs;
264  fClosestJets[0] = jet.fClosestJets[0];
265  fClosestJets[1] = jet.fClosestJets[1];
268  fMatched = jet.fMatched;
269  fTaggedJet = jet.fTaggedJet;
270  fTagStatus = jet.fTagStatus;
271  fPtSub = jet.fPtSub;
272  fPtSubVect = jet.fPtSubVect;
273  fTriggers = jet.fTriggers;
274  fLabel = jet.fLabel;
275  fHasGhost = jet.fHasGhost;
276  fGhosts = jet.fGhosts;
277  if (jet.fJetShapeProperties) {
279  }
280  }
281 
282  return *this;
283 }
284 
290 Int_t AliEmcalJet::Compare(const TObject* obj) const
291 {
292  //Return -1 if this is smaller than obj, 0 if objects are equal and 1 if this is larger than obj.
293 
294  if (obj == this) return 0;
295 
296  const AliEmcalJet* jet = dynamic_cast<const AliEmcalJet*>(obj);
297  if (!jet) return 0;
298 
299  if (Pt() > jet->Pt()) return -1;
300  else if (Pt() < jet->Pt()) return 1;
301  else return 0;
302 }
303 
308 void AliEmcalJet::GetMomentum(TLorentzVector& vec) const
309 {
310  vec.SetPtEtaPhiE(fPt, fEta, fPhi, E());
311 }
312 
320 Double_t AliEmcalJet::PtSub(Double_t rho, Bool_t save)
321 {
322  Double_t ptcorr = fPt - rho * fArea;
323  if (save) fPtSub = ptcorr;
324  return ptcorr;
325 }
326 
334 Double_t AliEmcalJet::PtSubVect(Double_t rho, Bool_t save)
335 {
336  Double_t dx = Px() - rho * fArea * TMath::Cos(fAreaPhi);
337  Double_t dy = Py() - rho * fArea * TMath::Sin(fAreaPhi);
338  //Double_t dz = Pz() - rho * fArea * TMath::SinH(fAreaEta);
339  Double_t ptcorr = TMath::Sqrt(dx * dx + dy * dy);
340  if (save) fPtSubVect = ptcorr;
341  return ptcorr;
342 }
343 
351 TLorentzVector AliEmcalJet::SubtractRhoVect(Double_t rho, Bool_t save)
352 {
353  TLorentzVector vecCorr;
354  GetMomentum(vecCorr);
355  TLorentzVector vecBg;
356  vecBg.SetPtEtaPhiE(fArea, fAreaEta, fAreaPhi, fAreaE);
357  vecBg *= rho;
358  vecCorr -= vecBg;
359  if (save) {
360  Double_t dPhi = TMath::Abs(TVector2::Phi_mpi_pi(Phi() - vecCorr.Phi()));
361  Int_t signum = dPhi <= TMath::PiOver2() ? 1 : -1;
362  fPtSubVect = signum * vecCorr.Pt();
363  }
364  return vecCorr;
365 }
366 
372 {
373  std::sort(fClusterIDs.GetArray(), fClusterIDs.GetArray() + fClusterIDs.GetSize());
374  std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
375 }
376 
382 Double_t AliEmcalJet::DeltaR(const AliVParticle* part) const
383 {
384  Double_t dPhi = Phi() - part->Phi();
385  Double_t dEta = Eta() - part->Eta();
386  dPhi = TVector2::Phi_mpi_pi(dPhi);
387  return TMath::Sqrt(dPhi * dPhi + dEta * dEta);
388 }
389 
395 std::vector<int> AliEmcalJet::SortConstituentsPt(TClonesArray* tracks) const
396 {
397  typedef std::pair<Double_t, Int_t> ptidx_pair;
398 
399  // Create vector for Pt sorting
400  std::vector<ptidx_pair> pair_list;
401 
402  for (Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++) {
403  AliVParticle* track = TrackAt(i_entry, tracks);
404  if (!track) {
405  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()));
406  continue;
407  }
408  pair_list.push_back(std::make_pair(track->Pt(), i_entry));
409  }
410 
411  std::stable_sort(pair_list.begin() , pair_list.end() , sort_descend());
412 
413  // return a vector of indexes of constituents (sorted descending by pt)
414  std::vector <int> index_sorted_list;
415 
416  // populating the return object with indexes of sorted tracks
417  for (auto it : pair_list) index_sorted_list.push_back(it.second);
418 
419  return index_sorted_list;
420 }
421 
429 Double_t AliEmcalJet::GetZ(const Double_t trkPx, const Double_t trkPy, const Double_t trkPz) const
430 {
431  Double_t pJetSq = P();
432  pJetSq *= pJetSq;
433 
434  if (pJetSq > 1e-6) {
435  return (trkPx * Px() + trkPy * Py() + trkPz * Pz()) / pJetSq;
436  }
437  else {
438  AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f", GetName(), pJetSq));
439  return -1;
440  }
441 }
442 
448 Double_t AliEmcalJet::GetZ(const AliVParticle* trk) const
449 {
450  return GetZ(trk->Px(), trk->Py(), trk->Pz());
451 }
452 
458 AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray* tracks) const
459 {
460  AliVParticle* maxTrack = 0;
461  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
462  AliVParticle* track = TrackAt(i, tracks);
463  if (!track) {
464  AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)",
465  i, tracks->GetName(), TrackAt(i), tracks->GetEntriesFast()));
466  continue;
467  }
468  if (!maxTrack || track->Pt() > maxTrack->Pt())
469  maxTrack = track;
470  }
471 
472  return maxTrack;
473 }
474 
480 AliVCluster* AliEmcalJet::GetLeadingCluster(TClonesArray* clusters) const
481 {
482  AliVCluster* maxCluster = 0;
483  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
484  AliVCluster* cluster = ClusterAt(i, clusters);
485  if (!cluster) {
486  AliError(Form("Unable to find jet cluster %d in collection %s (pos in collection %d, max %d)",
487  i, clusters->GetName(), ClusterAt(i), clusters->GetEntriesFast()));
488  continue;
489  }
490  if (!maxCluster || cluster->E() > maxCluster->E())
491  maxCluster = cluster;
492  }
493 
494  return maxCluster;
495 }
496 
501 {
502  fClosestJets[0] = 0;
503  fClosestJets[1] = 0;
504  fClosestJetsDist[0] = 999;
505  fClosestJetsDist[1] = 999;
506  fMatched = 2;
507 }
508 
514 Int_t AliEmcalJet::ContainsTrack(Int_t it) const
515 {
516  for (Int_t i = 0; i < fTrackIDs.GetSize(); i++) {
517  if (it == fTrackIDs[i]) return i;
518  }
519  return -1;
520 }
521 
527 Int_t AliEmcalJet::ContainsCluster(Int_t ic) const
528 {
529  for (Int_t i = 0; i < fClusterIDs.GetSize(); i++) {
530  if (ic == fClusterIDs[i]) return i;
531  }
532  return -1;
533 }
534 
547 TString AliEmcalJet::toString() const {
548  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",
550 }
551 
558 void AliEmcalJet::Print(Option_t* /*opt*/) const
559 {
560  Printf("%s\n", toString().Data());
561 }
562 
569 std::ostream &AliEmcalJet::Print(std::ostream &in) const {
570  in << toString().Data();
571  return in;
572 }
573 
579 void AliEmcalJet::PrintConstituents(TClonesArray* tracks, TClonesArray* clusters) const
580 {
581  if (tracks) {
582  for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
583  AliVParticle* part = TrackAt(i, tracks);
584  if (part) {
585  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());
586  }
587  }
588  }
589 
590  if (clusters) {
591  for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
592  AliVCluster* clus = ClusterAt(i, clusters);
593  if (clus) {
594  Printf("Cluster %d (index = %d) E = %.2f", i, ClusterAt(i), clus->E());
595  }
596  }
597  }
598 }
599 
605 Double_t AliEmcalJet::GetFlavourTrackZ(Int_t i) const
606 {
607  if (P() < 1e-6) return 0.;
608  AliVParticle* hftrack = GetFlavourTrack(i);
609  return hftrack != 0 ? hftrack->P() / P() : 0.;
610 }
611 
619 std::ostream &operator<<(std::ostream &in, const AliEmcalJet &myjet) {
620  std::ostream &result = myjet.Print(in);
621  return result;
622 }
623 
632 void AliEmcalJet::AddGhost(const Double_t dPx, const Double_t dPy, const Double_t dPz, const Double_t dE)
633 {
634  TLorentzVector ghost(dPx, dPy, dPz, dE);
635  fGhosts.push_back(ghost);
636  if (!fHasGhost) fHasGhost = kTRUE;
637  return;
638 }
639 
643 void AliEmcalJet::Clear(Option_t */*option*/)
644 {
645  fClusterIDs.Set(0);
646  fTrackIDs.Set(0);
647  fClosestJets[0] = 0;
648  fClosestJets[1] = 0;
649  fClosestJetsDist[0] = 0;
650  fClosestJetsDist[1] = 0;
651  fMatched = 0;
652  fPtSub = 0;
653  fGhosts.clear();
654  fHasGhost = kFALSE;
655 }
656 
663 AliVParticle* AliEmcalJet::TrackAt(Int_t idx, TClonesArray *ta) const
664 {
665  if (!ta) return 0;
666  return dynamic_cast<AliVParticle*>(ta->At(TrackAt(idx)));
667 }
668 
675 Int_t AliEmcalJet::ContainsTrack(AliVParticle* track, TClonesArray* tracks) const
676 {
677  if (!tracks || !track) return 0;
678  return ContainsTrack(tracks->IndexOf(track));
679 }
680 
687 AliVCluster* AliEmcalJet::ClusterAt(Int_t idx, TClonesArray *ca) const
688 {
689  if (!ca) return 0;
690  return dynamic_cast<AliVCluster*>(ca->At(ClusterAt(idx)));
691 }
692 
699 Int_t AliEmcalJet::ContainsCluster(AliVCluster* cluster, TClonesArray* clusters) const
700 {
701  if (!clusters || !cluster) return 0;
702  return ContainsCluster(clusters->IndexOf(cluster));
703 }
704 
710 Double_t AliEmcalJet::GetXi(const AliVParticle* trk) const
711 {
712  return TMath::Log(1 / GetZ(trk));
713 }
714 
722 Double_t AliEmcalJet::GetXi( const Double_t trkPx, const Double_t trkPy, const Double_t trkPz ) const
723 {
724  return TMath::Log(1 / GetZ(trkPx, trkPy, trkPz));
725 }
726 
731 void AliEmcalJet::AddFlavourTrack(AliVParticle* hftrack)
732 {
733  if (!fFlavourTracks) fFlavourTracks = new TObjArray();
734  fFlavourTracks->Add(hftrack);
735 }
736 
742 AliVParticle* AliEmcalJet::GetFlavourTrack(Int_t i) const
743 {
744  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
745 
746  return static_cast<AliVParticle*>(fFlavourTracks->At(i));
747 }
748 
754 AliVParticle* AliEmcalJet::RemoveFlavourTrack(Int_t i)
755 {
756  if (!fFlavourTracks || i < 0 || i >= fFlavourTracks->GetEntriesFast()) return 0;
757 
758  return static_cast<AliVParticle*>(fFlavourTracks->RemoveAt(i));
759 }
TArrayI fTrackIDs
Array containing ids of track constituents.
Definition: AliEmcalJet.h:266
Double_t fPtSubVect
! Background vector subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:274
ClassImp(AliAnalysisTaskTriggerRates) AliAnalysisTaskTriggerRates
Double_t Area() const
Definition: AliEmcalJet.h:97
Int_t fTagStatus
! Status of tagging -1: NA 0: not tagged 1: tagged
Definition: AliEmcalJet.h:272
Double_t GetXi(const AliVParticle *trk) const
Simple C structure to allow sorting in descending order.
Definition: AliEmcalJet.h:288
Double32_t fAreaE
Jet temporal area component.
Definition: AliEmcalJet.h:249
TArrayI fClusterIDs
Array containing ids of cluster constituents.
Definition: AliEmcalJet.h:265
Double_t Eta() const
Definition: AliEmcalJet.h:88
Int_t fLabel
! Label to inclusive jet for constituent subtracted jet
Definition: AliEmcalJet.h:276
Double_t fPtSub
! Background subtracted pt (not stored set from outside)
Definition: AliEmcalJet.h:273
Double_t Py() const
Definition: AliEmcalJet.h:74
void Clear(Option_t *="")
Double_t Phi() const
Definition: AliEmcalJet.h:84
Bool_t fHasGhost
! Whether ghost particle are included within the constituents
Definition: AliEmcalJet.h:278
AliEmcalJetShapeProperties * fJetShapeProperties
! Pointer to the jet shape properties
Definition: AliEmcalJet.h:281
Double_t MaxChargedPt() const
Definition: AliEmcalJet.h:114
AliEmcalJet & operator=(const AliEmcalJet &jet)
Double_t GetFlavourTrackZ(Int_t i=0) const
Double_t E() const
Definition: AliEmcalJet.h:86
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:106
Double_t Px() const
Definition: AliEmcalJet.h:73
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:259
Double32_t fMaxNPt
Pt of maximum neutral constituent.
Definition: AliEmcalJet.h:258
Double32_t fM
Jet mass.
Definition: AliEmcalJet.h:239
Short_t ClusterAt(Int_t idx) const
Definition: AliEmcalJet.h:104
UShort_t GetNumberOfClusters() const
Definition: AliEmcalJet.h:105
AliVParticle * GetLeadingTrack(TClonesArray *tracks) const
Double32_t fAreaPhi
Jet phi area.
Definition: AliEmcalJet.h:247
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:269
std::vector< int > SortConstituentsPt(TClonesArray *tracks) const
std::vector< TLorentzVector > fGhosts
! Vector containing the ghost particles
Definition: AliEmcalJet.h:279
TString toString() const
Double_t PtSubVect() const
Definition: AliEmcalJet.h:126
Double32_t fArea
Jet transverse area.
Definition: AliEmcalJet.h:243
AliVCluster * GetLeadingCluster(TClonesArray *clusters) const
AliEmcalJet * fTaggedJet
! Jet tagged to this jet
Definition: AliEmcalJet.h:271
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:125
Double32_t fAreaEta
Jet eta area.
Definition: AliEmcalJet.h:245
Double_t MaxNeutralPt() const
Definition: AliEmcalJet.h:113
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:253
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)
Double_t Pt() const
Definition: AliEmcalJet.h:76
Double32_t fPtEmc
Pt in EMCAL acceptance.
Definition: AliEmcalJet.h:263
This class contains the derivative subtraction operators for jet shapes.
Double32_t fPt
Jet transverse momentum.
Definition: AliEmcalJet.h:233
Double_t P() const
Definition: AliEmcalJet.h:77
Double32_t fEta
Jet pseudo-rapidity.
Definition: AliEmcalJet.h:235
Double32_t fMaxCPt
Pt of maximum charged constituent.
Definition: AliEmcalJet.h:256
Short_t TrackAt(Int_t idx) const
Definition: AliEmcalJet.h:127
Double32_t fAreaEmc
Area on EMCAL surface (determined by ghosts in EMCal acceptance)
Definition: AliEmcalJet.h:251
Represent a jet reconstructed using the EMCal jet framework.
Definition: AliEmcalJet.h:44
Int_t fNn
Number of neutral constituents.
Definition: AliEmcalJet.h:260
Double_t Pz() const
Definition: AliEmcalJet.h:75
UInt_t fTriggers
! Triggers that the jet might have fired (AliVEvent::EOfflineTriggerTypes)
Definition: AliEmcalJet.h:275
Bool_t fAxisInEmcal
Whether the jet axis is inside the EMCAL acceptance.
Definition: AliEmcalJet.h:252
void SortConstituents()
Int_t fNEmc
Number of constituents in EMCAL acceptance.
Definition: AliEmcalJet.h:264
Double32_t fPhi
Jet axis azimuthal angle.
Definition: AliEmcalJet.h:237
AliEmcalJet * fClosestJets[2]
! If this is MC it contains the two closest detector level jets in order of distance and viceversa ...
Definition: AliEmcalJet.h:267
Double_t NEF() const
Definition: AliEmcalJet.h:115
Double32_t fNEF
Jet Neutral Energy Fraction.
Definition: AliEmcalJet.h:241
Double32_t fClosestJetsDist[2]
! Distance from the two closest jets
Definition: AliEmcalJet.h:268
Int_t Compare(const TObject *obj) const
TObjArray * fFlavourTracks
Definition: AliEmcalJet.h:254
void PrintConstituents(TClonesArray *tracks, TClonesArray *clusters) const