]> git.uio.no Git - u/mrichter/AliRoot.git/blame - PWGJE/EMCALJetTasks/AliEmcalJet.cxx
Add sigma2 jet shape and fill constituent info. for subtracted jets
[u/mrichter/AliRoot.git] / PWGJE / EMCALJetTasks / AliEmcalJet.cxx
CommitLineData
04f6e9de 1//
2// Emcal jet class.
3//
cd231d42 4// Author: C.Loizides
7efbea04 5
914d486c 6#include "AliEmcalJet.h"
7df864a3 7
59ebe296 8#include "AliLog.h"
9#include "Riostream.h"
10
914d486c 11ClassImp(AliEmcalJet)
7efbea04 12
96919f91 13//__________________________________________________________________________________________________
14AliEmcalJet::AliEmcalJet() :
15 AliVParticle(),
16 fPt(0),
17 fEta(0),
18 fPhi(0),
19 fM(0),
20 fNEF(0),
21 fArea(0),
db8a0184 22 fAreaEta(0),
23 fAreaPhi(0),
96919f91 24 fAreaEmc(-1),
25 fAxisInEmcal(0),
3c9775d9 26 fFlavourTagging(0),
96919f91 27 fMaxCPt(0),
28 fMaxNPt(0),
29 fMCPt(0),
30 fNn(0),
31 fNch(0),
8895e61b 32 fPtEmc(0),
33 fNEmc(0),
96919f91 34 fClusterIDs(),
35 fTrackIDs(),
8895e61b 36 fMatched(2),
cfc2ac24 37 fMatchingType(0),
254370e1 38 fTaggedJet(0x0),
39 fTagStatus(-1),
db8a0184 40 fPtSub(0),
85d48773 41 fPtVectSub(0),
8082a80b 42 fTriggers(0),
43 fJetShapeMassFirstDer(0),
44 fJetShapeMassSecondDer(0),
45 fJetShapeMassFirstSub(0),
46 fJetShapeMassSecondSub(0),
726c9488 47 fLabel(-1),
48 fGRNumerator(0),
49 fGRDenominator(0),
50 fGRNumeratorSub(0),
0d13a63c 51 fGRDenominatorSub(0),
52 fJetShapeAngularityFirstDer(0),
53 fJetShapeAngularitySecondDer(0),
54 fJetShapeAngularityFirstSub(0),
55 fJetShapeAngularitySecondSub(0),
56 fJetShapepTDFirstDer(0),
57 fJetShapepTDSecondDer(0),
58 fJetShapepTDFirstSub(0),
59 fJetShapepTDSecondSub(0),
60 fJetShapeCircularityFirstDer(0),
61 fJetShapeCircularitySecondDer(0),
62 fJetShapeCircularityFirstSub(0),
63 fJetShapeCircularitySecondSub(0),
b9ccc456 64 fJetShapeSigma2FirstDer(0),
65 fJetShapeSigma2SecondDer(0),
66 fJetShapeSigma2FirstSub(0),
67 fJetShapeSigma2SecondSub(0),
0d13a63c 68 fJetShapeConstituentFirstDer(0),
69 fJetShapeConstituentSecondDer(0),
70 fJetShapeConstituentFirstSub(0),
71 fJetShapeConstituentSecondSub(0),
72 fJetShapeLeSubFirstDer(0),
73 fJetShapeLeSubSecondDer(0),
74 fJetShapeLeSubFirstSub(0),
75 fJetShapeLeSubSecondSub(0)
96919f91 76{
77 // Constructor.
96919f91 78 fClosestJets[0] = 0;
79 fClosestJets[1] = 0;
80 fClosestJetsDist[0] = 999;
81 fClosestJetsDist[1] = 999;
96919f91 82}
83
7efbea04 84//__________________________________________________________________________________________________
101cefde 85AliEmcalJet::AliEmcalJet(Double_t px, Double_t py, Double_t pz) :
86 AliVParticle(),
87 fPt(TMath::Sqrt(px*px+py*py)),
88 fEta(TMath::ASinH(pz/fPt)),
89 fPhi(0),
90 fM(0),
91 fNEF(0),
92 fArea(0),
db8a0184 93 fAreaEta(0),
94 fAreaPhi(0),
101cefde 95 fAreaEmc(-1),
96 fAxisInEmcal(0),
3c9775d9 97 fFlavourTagging(0),
101cefde 98 fMaxCPt(0),
99 fMaxNPt(0),
96919f91 100 fMCPt(0),
101 fNn(0),
102 fNch(0),
8895e61b 103 fPtEmc(0),
104 fNEmc(0),
101cefde 105 fClusterIDs(),
96919f91 106 fTrackIDs(),
8895e61b 107 fMatched(2),
cfc2ac24 108 fMatchingType(0),
254370e1 109 fTaggedJet(0x0),
110 fTagStatus(-1),
db8a0184 111 fPtSub(0),
85d48773 112 fPtVectSub(0),
8082a80b 113 fTriggers(0),
114 fJetShapeMassFirstDer(0),
115 fJetShapeMassSecondDer(0),
116 fJetShapeMassFirstSub(0),
117 fJetShapeMassSecondSub(0),
726c9488 118 fLabel(-1),
119 fGRNumerator(0),
120 fGRDenominator(0),
121 fGRNumeratorSub(0),
0d13a63c 122 fGRDenominatorSub(0),
3ec5da8e 123 fJetShapeAngularityFirstDer(0),
0d13a63c 124 fJetShapeAngularitySecondDer(0),
125 fJetShapeAngularityFirstSub(0),
126 fJetShapeAngularitySecondSub(0),
3ec5da8e 127 fJetShapepTDFirstDer(0),
0d13a63c 128 fJetShapepTDSecondDer(0),
129 fJetShapepTDFirstSub(0),
130 fJetShapepTDSecondSub(0),
131 fJetShapeCircularityFirstDer(0),
132 fJetShapeCircularitySecondDer(0),
133 fJetShapeCircularityFirstSub(0),
134 fJetShapeCircularitySecondSub(0),
b9ccc456 135 fJetShapeSigma2FirstDer(0),
136 fJetShapeSigma2SecondDer(0),
137 fJetShapeSigma2FirstSub(0),
138 fJetShapeSigma2SecondSub(0),
0d13a63c 139 fJetShapeConstituentFirstDer(0),
140 fJetShapeConstituentSecondDer(0),
141 fJetShapeConstituentFirstSub(0),
142 fJetShapeConstituentSecondSub(0),
b9ccc456 143 fJetShapeLeSubFirstDer(0),
0d13a63c 144 fJetShapeLeSubSecondDer(0),
145 fJetShapeLeSubFirstSub(0),
146 fJetShapeLeSubSecondSub(0)
7efbea04 147{
148 // Constructor.
149
150 if (fPt != 0) {
151 fPhi = TMath::ATan2(py, px);
152 if (fPhi<0.)
153 fPhi += 2. * TMath::Pi();
154 }
96919f91 155
156 fClosestJets[0] = 0;
157 fClosestJets[1] = 0;
158 fClosestJetsDist[0] = 999;
159 fClosestJetsDist[1] = 999;
7efbea04 160}
161
9cffd2d0 162//_________________________________________________________________________________________________
914d486c 163AliEmcalJet::AliEmcalJet(Double_t pt, Double_t eta, Double_t phi, Double_t m) :
9cffd2d0 164 AliVParticle(),
f8087a81 165 fPt(pt),
166 fEta(eta),
167 fPhi(phi),
168 fM(m),
169 fNEF(0),
170 fArea(0),
db8a0184 171 fAreaEta(0),
172 fAreaPhi(0),
101cefde 173 fAreaEmc(-1),
174 fAxisInEmcal(0),
3c9775d9 175 fFlavourTagging(0),
f8087a81 176 fMaxCPt(0),
96919f91 177 fMaxNPt(0),
178 fMCPt(0),
179 fNn(0),
180 fNch(0),
8895e61b 181 fPtEmc(0),
182 fNEmc(0),
f8087a81 183 fClusterIDs(),
96919f91 184 fTrackIDs(),
8895e61b 185 fMatched(2),
cfc2ac24 186 fMatchingType(0),
254370e1 187 fTaggedJet(0x0),
188 fTagStatus(-1),
db8a0184 189 fPtSub(0),
85d48773 190 fPtVectSub(0),
8082a80b 191 fTriggers(0),
192 fJetShapeMassFirstDer(0),
193 fJetShapeMassSecondDer(0),
194 fJetShapeMassFirstSub(0),
195 fJetShapeMassSecondSub(0),
726c9488 196 fLabel(-1),
197 fGRNumerator(0),
198 fGRDenominator(0),
199 fGRNumeratorSub(0),
0d13a63c 200 fGRDenominatorSub(0),
201 fJetShapeAngularityFirstDer(0),
202 fJetShapeAngularitySecondDer(0),
203 fJetShapeAngularityFirstSub(0),
204 fJetShapeAngularitySecondSub(0),
205 fJetShapepTDFirstDer(0),
206 fJetShapepTDSecondDer(0),
207 fJetShapepTDFirstSub(0),
208 fJetShapepTDSecondSub(0),
209 fJetShapeCircularityFirstDer(0),
210 fJetShapeCircularitySecondDer(0),
211 fJetShapeCircularityFirstSub(0),
212 fJetShapeCircularitySecondSub(0),
b9ccc456 213 fJetShapeSigma2FirstDer(0),
214 fJetShapeSigma2SecondDer(0),
215 fJetShapeSigma2FirstSub(0),
216 fJetShapeSigma2SecondSub(0),
0d13a63c 217 fJetShapeConstituentFirstDer(0),
218 fJetShapeConstituentSecondDer(0),
219 fJetShapeConstituentFirstSub(0),
220 fJetShapeConstituentSecondSub(0),
221 fJetShapeLeSubFirstDer(0),
222 fJetShapeLeSubSecondDer(0),
223 fJetShapeLeSubFirstSub(0),
224 fJetShapeLeSubSecondSub(0)
225
9cffd2d0 226{
227 // Constructor.
228
4f149872 229 if (fPhi<0.)
230 fPhi += TMath::TwoPi();
96919f91 231
232 fClosestJets[0] = 0;
233 fClosestJets[1] = 0;
234 fClosestJetsDist[0] = 999;
235 fClosestJetsDist[1] = 999;
9cffd2d0 236}
237
7efbea04 238//_________________________________________________________________________________________________
914d486c 239AliEmcalJet::AliEmcalJet(const AliEmcalJet &jet) :
7efbea04 240 AliVParticle(jet),
f8087a81 241 fPt(jet.fPt),
242 fEta(jet.fEta),
243 fPhi(jet.fPhi),
244 fM(jet.fM),
245 fNEF(jet.fNEF),
246 fArea(jet.fArea),
db8a0184 247 fAreaEta(jet.fAreaEta),
248 fAreaPhi(jet.fAreaPhi),
101cefde 249 fAreaEmc(jet.fAreaEmc),
250 fAxisInEmcal(jet.fAxisInEmcal),
3c9775d9 251 fFlavourTagging(jet.fFlavourTagging),
f8087a81 252 fMaxCPt(jet.fMaxCPt),
253 fMaxNPt(jet.fMaxNPt),
96919f91 254 fMCPt(jet.fMCPt),
255 fNn(jet.fNn),
256 fNch(jet.fNch),
8895e61b 257 fPtEmc(jet.fPtEmc),
258 fNEmc(jet.fNEmc),
f8087a81 259 fClusterIDs(jet.fClusterIDs),
4f149872 260 fTrackIDs(jet.fTrackIDs),
8895e61b 261 fMatched(jet.fMatched),
cfc2ac24 262 fMatchingType(jet.fMatchingType),
254370e1 263 fTaggedJet(jet.fTaggedJet),
264 fTagStatus(jet.fTagStatus),
db8a0184 265 fPtSub(jet.fPtSub),
85d48773 266 fPtVectSub(jet.fPtVectSub),
8082a80b 267 fTriggers(jet.fTriggers),
268 fJetShapeMassFirstDer(jet.fJetShapeMassFirstDer),
269 fJetShapeMassSecondDer(jet.fJetShapeMassSecondDer),
270 fJetShapeMassFirstSub(jet.fJetShapeMassFirstSub),
271 fJetShapeMassSecondSub(jet.fJetShapeMassSecondSub),
726c9488 272 fLabel(jet.fLabel),
273 fGRNumerator(jet.fGRNumerator),
274 fGRDenominator(jet.fGRDenominator),
275 fGRNumeratorSub(jet.fGRNumeratorSub),
0d13a63c 276 fGRDenominatorSub(jet.fGRDenominatorSub),
3ec5da8e 277 fJetShapeAngularityFirstDer(jet.fJetShapeAngularityFirstDer),
0d13a63c 278 fJetShapeAngularitySecondDer(jet.fJetShapeAngularitySecondDer),
279 fJetShapeAngularityFirstSub(jet.fJetShapeAngularityFirstSub),
280 fJetShapeAngularitySecondSub(jet.fJetShapeAngularitySecondSub),
0d13a63c 281 fJetShapepTDFirstDer(jet.fJetShapepTDFirstDer),
282 fJetShapepTDSecondDer(jet.fJetShapepTDSecondDer),
283 fJetShapepTDFirstSub(jet.fJetShapepTDFirstSub),
284 fJetShapepTDSecondSub(jet.fJetShapepTDSecondSub),
0d13a63c 285 fJetShapeCircularityFirstDer(jet.fJetShapeCircularityFirstDer),
286 fJetShapeCircularitySecondDer(jet.fJetShapeCircularitySecondDer),
287 fJetShapeCircularityFirstSub(jet.fJetShapeCircularityFirstSub),
288 fJetShapeCircularitySecondSub(jet.fJetShapeCircularitySecondSub),
b9ccc456 289 fJetShapeSigma2FirstDer(jet.fJetShapeSigma2FirstDer),
290 fJetShapeSigma2SecondDer(jet.fJetShapeSigma2SecondDer),
291 fJetShapeSigma2FirstSub(jet.fJetShapeSigma2FirstSub),
292 fJetShapeSigma2SecondSub(jet.fJetShapeSigma2SecondSub),
0d13a63c 293 fJetShapeConstituentFirstDer(jet.fJetShapeConstituentFirstDer),
294 fJetShapeConstituentSecondDer(jet.fJetShapeConstituentSecondDer),
295 fJetShapeConstituentFirstSub(jet.fJetShapeConstituentFirstSub),
296 fJetShapeConstituentSecondSub(jet.fJetShapeConstituentSecondSub),
0d13a63c 297 fJetShapeLeSubFirstDer(jet.fJetShapeLeSubFirstDer),
298 fJetShapeLeSubSecondDer(jet.fJetShapeLeSubSecondDer),
299 fJetShapeLeSubFirstSub(jet.fJetShapeLeSubFirstSub),
300 fJetShapeLeSubSecondSub(jet.fJetShapeLeSubSecondSub)
7df864a3 301{
101cefde 302 // Copy constructor.
4f149872 303 fClosestJets[0] = jet.fClosestJets[0];
304 fClosestJets[1] = jet.fClosestJets[1];
305 fClosestJetsDist[0] = jet.fClosestJetsDist[0];
306 fClosestJetsDist[1] = jet.fClosestJetsDist[1];
7efbea04 307}
308
309//_________________________________________________________________________________________________
914d486c 310AliEmcalJet &AliEmcalJet::operator=(const AliEmcalJet &jet)
7efbea04 311{
312 // Assignment operator.
313
314 if (this!=&jet) {
315 AliVParticle::operator=(jet);
4f149872 316 fPt = jet.fPt;
317 fEta = jet.fEta;
318 fPhi = jet.fPhi;
319 fM = jet.fM;
320 fNEF = jet.fNEF;
321 fArea = jet.fArea;
db8a0184 322 fAreaEta = jet.fAreaEta;
323 fAreaPhi = jet.fAreaPhi;
4f149872 324 fAreaEmc = jet.fAreaEmc;
325 fAxisInEmcal = jet.fAxisInEmcal;
3c9775d9 326 fFlavourTagging = jet.fFlavourTagging;
4f149872 327 fMaxCPt = jet.fMaxCPt;
328 fMaxNPt = jet.fMaxNPt;
329 fMCPt = jet.fMCPt;
330 fNn = jet.fNn;
331 fNch = jet.fNch;
8895e61b 332 fPtEmc = jet.fPtEmc;
333 fNEmc = jet.fNEmc;
4f149872 334 fClusterIDs = jet.fClusterIDs;
335 fTrackIDs = jet.fTrackIDs;
336 fClosestJets[0] = jet.fClosestJets[0];
337 fClosestJets[1] = jet.fClosestJets[1];
338 fClosestJetsDist[0] = jet.fClosestJetsDist[0];
339 fClosestJetsDist[1] = jet.fClosestJetsDist[1];
340 fMatched = jet.fMatched;
254370e1 341 fTaggedJet = jet.fTaggedJet;
342 fTagStatus = jet.fTagStatus;
8895e61b 343 fPtSub = jet.fPtSub;
f660c2d6 344 fPtVectSub = jet.fPtVectSub;
85d48773 345 fTriggers = jet.fTriggers;
8082a80b 346 fJetShapeMassFirstDer = jet.fJetShapeMassFirstDer;
347 fJetShapeMassSecondDer = jet.fJetShapeMassSecondDer;
348 fJetShapeMassFirstSub = jet.fJetShapeMassFirstSub;
349 fJetShapeMassSecondSub = jet.fJetShapeMassSecondSub;
350 fLabel = jet.fLabel;
726c9488 351 fGRNumerator = jet.fGRNumerator;
352 fGRDenominator = jet.fGRDenominator;
353 fGRNumeratorSub = jet.fGRNumeratorSub;
354 fGRDenominatorSub = jet.fGRDenominatorSub;
3ec5da8e 355 fJetShapeAngularityFirstDer = jet.fJetShapeAngularityFirstDer;
0d13a63c 356 fJetShapeAngularitySecondDer = jet.fJetShapeAngularitySecondDer;
357 fJetShapeAngularityFirstSub = jet.fJetShapeAngularityFirstSub;
358 fJetShapeAngularitySecondSub = jet.fJetShapeAngularitySecondSub;
0d13a63c 359 fJetShapepTDFirstDer = jet.fJetShapepTDFirstDer;
360 fJetShapepTDSecondDer = jet.fJetShapepTDSecondDer;
361 fJetShapepTDFirstSub = jet.fJetShapepTDFirstSub;
362 fJetShapepTDSecondSub = jet.fJetShapepTDSecondSub;
0d13a63c 363 fJetShapeCircularityFirstDer = jet.fJetShapeCircularityFirstDer;
364 fJetShapeCircularitySecondDer = jet.fJetShapeCircularitySecondDer;
365 fJetShapeCircularityFirstSub = jet.fJetShapeCircularityFirstSub;
366 fJetShapeCircularitySecondSub = jet.fJetShapeCircularitySecondSub;
b9ccc456 367 fJetShapeSigma2FirstDer = jet.fJetShapeSigma2FirstDer;
368 fJetShapeSigma2SecondDer = jet.fJetShapeSigma2SecondDer;
369 fJetShapeSigma2FirstSub = jet.fJetShapeSigma2FirstSub;
370 fJetShapeSigma2SecondSub = jet.fJetShapeSigma2SecondSub;
0d13a63c 371 fJetShapeConstituentFirstDer = jet.fJetShapeConstituentFirstDer;
372 fJetShapeConstituentSecondDer = jet.fJetShapeConstituentSecondDer;
373 fJetShapeConstituentFirstSub = jet.fJetShapeConstituentFirstSub;
374 fJetShapeConstituentSecondSub = jet.fJetShapeConstituentSecondSub;
375 fJetShapeLeSubFirstDer = jet.fJetShapeLeSubFirstDer;
376 fJetShapeLeSubSecondDer = jet.fJetShapeLeSubSecondDer;
377 fJetShapeLeSubFirstSub = jet.fJetShapeLeSubFirstSub;
378 fJetShapeLeSubSecondSub = jet.fJetShapeLeSubSecondSub;
7efbea04 379 }
380
381 return *this;
7df864a3 382}
7efbea04 383
2103dc6a 384//_________________________________________________________________________________________________
db8a0184 385Int_t AliEmcalJet::Compare(const TObject* obj) const
386{
387 //Return -1 if this is smaller than obj, 0 if objects are equal and 1 if this is larger than obj.
388
389 const AliEmcalJet *jet = static_cast<const AliEmcalJet *>(obj);
390 if (!obj)
391 return 0;
392 if (Pt()>jet->Pt())
393 return -1;
394 return 1;
395}
396
7efbea04 397//__________________________________________________________________________________________________
914d486c 398void AliEmcalJet::GetMom(TLorentzVector &vec) const
7efbea04 399{
400 // Return momentum as four vector.
401
402 Double_t p = fPt *TMath::CosH(fEta);
403 vec.SetPtEtaPhiE(fPt,fEta,fPhi,TMath::Sqrt(p*p+fM*fM));
404}
405
406//__________________________________________________________________________________________________
914d486c 407void AliEmcalJet::Print(Option_t* /*option*/) const
7efbea04 408{
409 // Print jet information.
410
59ebe296 411 Printf("Jet pt=%.2f, eta=%.2f, phi=%.2f, area=%.2f, NEF=%.2f", fPt, fEta, fPhi, fArea, fNEF);
7efbea04 412}
629e03fc 413
db8a0184 414//__________________________________________________________________________________________________
415Double_t AliEmcalJet::PtSubVect(Double_t rho) const
416{
417 // Return vectorial subtracted transverse momentum.
418
419 Double_t dx = Px() - rho * fArea * TMath::Cos(fAreaPhi);
420 Double_t dy = Py() - rho * fArea * TMath::Sin(fAreaPhi);
421 //Double_t dz = Pz() - rho * fArea * TMath::SinH(fAreaEta);
422 return TMath::Sqrt(dx*dx+dy*dy);
423}
424
629e03fc 425//__________________________________________________________________________________________________
426void AliEmcalJet::SortConstituents()
427{
f8087a81 428 // Sort constituent by index (increasing).
429
430 std::sort(fClusterIDs.GetArray(), fClusterIDs.GetArray() + fClusterIDs.GetSize());
431 std::sort(fTrackIDs.GetArray(), fTrackIDs.GetArray() + fTrackIDs.GetSize());
629e03fc 432}
f660c2d6 433
d1f0108e 434//__________________________________________________________________________________________________
435Double_t AliEmcalJet::DeltaR (const AliVParticle* part) const
436{ // Helper function to calculate the distance between two jets or a jet and a particle
437 Double_t dPhi = this->Phi() - part->Phi();
438 Double_t dEta = this->Eta() - part->Eta();
439 dPhi = TVector2::Phi_mpi_pi ( dPhi );
440
441 return TMath::Sqrt ( dPhi * dPhi + dEta * dEta );
442}
443
444
445//__________________________________________________________________________________________________
446std::vector<int> AliEmcalJet::SortConstituentsPt( TClonesArray *tracks ) const
447{ //___________________________________________
448 // Sorting by p_T (decreasing) jet constituents
449 //^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
450 typedef std::pair<Double_t, Int_t> ptidx_pair;
451
452 // Create vector for Pt sorting
453 std::vector<ptidx_pair> pair_list ;
454
455 for ( Int_t i_entry = 0; i_entry < GetNumberOfTracks(); i_entry++ )
456 {
457 AliVParticle *track = TrackAt(i_entry, tracks);
458 if (!track)
459 {
460 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()));
461 continue;
462 }
463
464 pair_list.push_back( std::make_pair ( track->Pt(), i_entry ) );
465 }
466
467 std::stable_sort( pair_list.begin() , pair_list.end() , sort_descend() );
468
469 // return an vector of indexes of constituents (sorted descending by pt)
470 std::vector <int> index_sorted_list;
471
472 for ( std::vector< std::pair<Double_t,Int_t> >::iterator it = pair_list.begin(); it != pair_list.end(); ++it)
473 { index_sorted_list.push_back( (*it).second ); } // populating the return object with indexes of sorted tracks
474
475 return index_sorted_list;
476}
477
2c932584 478//________________________________________________________________________
479Double_t AliEmcalJet::GetZ ( const Double_t trkPx, const Double_t trkPy, const Double_t trkPz ) const
480 {
481 // Get the z of a constituent inside of a jet
482 Double_t pJetSq = this->Px() * this->Px() + this->Py() * this->Py() + this->Pz() * this->Pz();
483
484 if(pJetSq>1e-6)
485 { return ( trkPx * this->Px() + trkPy * this->Py() + trkPz * this->Pz() ) / pJetSq ; }
486 else
487 { AliWarning(Form("%s: strange, pjet*pjet seems to be zero pJetSq: %f",GetName(), pJetSq)); return -1; }
488
489 }
490
491//________________________________________________________________________
492Double_t AliEmcalJet::GetZ ( const AliVParticle* trk ) const
493 {
494 // Get Z of constituent trk
495 return GetZ ( trk->Px(), trk->Py(), trk->Pz() );
496 }
497
f660c2d6 498//__________________________________________________________________________________________________
499AliVParticle* AliEmcalJet::GetLeadingTrack(TClonesArray *tracks) const
500{
501 AliVParticle* maxTrack = 0;
502 for (Int_t i = 0; i < GetNumberOfTracks(); i++) {
503 AliVParticle *track = TrackAt(i, tracks);
59ebe296 504 if (!track) {
3c9775d9 505 AliError(Form("Unable to find jet track %d in collection %s (pos in collection %d, max %d)",
506 i,tracks->GetName(),TrackAt(i),tracks->GetEntriesFast()));
59ebe296 507 continue;
508 }
f660c2d6 509 if (!maxTrack || track->Pt() > maxTrack->Pt())
510 maxTrack = track;
511 }
512
513 return maxTrack;
514}
515
516//__________________________________________________________________________________________________
517AliVCluster* AliEmcalJet::GetLeadingCluster(TClonesArray *clusters) const
518{
519 AliVCluster* maxCluster = 0;
520 for (Int_t i = 0; i < GetNumberOfClusters(); i++) {
521 AliVCluster *cluster = ClusterAt(i, clusters);
59ebe296 522 if (!cluster) {
3c9775d9 523 AliError(Form("Unable to find jet cluster %d in collection %s (pos in collection %d, max %d)",
524 i,clusters->GetName(),ClusterAt(i),clusters->GetEntriesFast()));
59ebe296 525 continue;
526 }
f660c2d6 527 if (!maxCluster || cluster->E() > maxCluster->E())
528 maxCluster = cluster;
529 }
530
531 return maxCluster;
532}
2103dc6a 533
534//__________________________________________________________________________________________________
535void AliEmcalJet::ResetMatching()
536{
537 fClosestJets[0] = 0;
538 fClosestJets[1] = 0;
539 fClosestJetsDist[0] = 999;
540 fClosestJetsDist[1] = 999;
541 fMatched = 2;
542}
726c9488 543
544//__________________________________________________________________________________________________
545void AliEmcalJet::PrintGR() {
546 for(Int_t i = 0; i<fGRNumerator.GetSize(); i++) {
547 Printf("num[%d] = %f",i,fGRNumerator.At(i));
548 }
549}