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